本文主要是介绍(Java)XMLDecoder反序列化漏洞,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
基本概念
XMLDecoder用于将XMLEncoder创建的xml文档内容反序列化为一个Java对象,其位于java.beans包下。
影响版本
XMLDecoder在JDK 1.4~JDK 11中都存在反序列化漏洞安全风险。
Demo
import com.sun.beans.decoder.DocumentHandler;
import org.xml.sax.helpers.DefaultHandler;import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.beans.XMLDecoder;public class test {public static void XMLDecode_Deserialize(String path) throws Exception {File file = new File(path);FileInputStream fis = new FileInputStream(file);BufferedInputStream bis = new BufferedInputStream(fis);XMLDecoder xd = new XMLDecoder(bis);xd.readObject();xd.close();}public static void main(String[] args){//XMLDecode Deserialize TestString path = "poc.xml";try {XMLDecode_Deserialize(path);// File f = new File(path);
// SAXParserFactory sf = SAXParserFactory.newInstance();
// SAXParser sp = sf.newSAXParser();
//
// DefaultHandler dh = new DefaultHandler();
// DocumentHandler dh = new DocumentHandler();
// sp.parse(f, dh);} catch (Exception e) {e.printStackTrace();}}
}
Payload:
poc.xml,可以看到java标签的class属性指定XMLDecoder类,对象标签指定ProcessBuilder类、void标签指定方法为start,即可调用ProcessBuilder.start()来执行其中的命令。
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.8
这篇关于(Java)XMLDecoder反序列化漏洞的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!