XMLDecoder反序列化

XMLDecoder反序列化

基础知识

就简单讲讲吧,就是为了解析xml内容的

一般我们的xml都是标签属性这样的写法

比如person对象以xml的形式存储在文件中

在decode反序列化方法后,控制台成功打印出反序列化的对象。

就是可以根据我们的标签识别是什么成分的

漏洞原因

我们有些xml标签有特殊的作用

object标签的使用相当于new一个新对象,其中的string标签为构造方法需要的参数。

<object class="javax.swing.JButton">
  <string>Press me</string>
</object>

new JButton("Press me");

void标签的method属性可以在反序列化的过程中自动执行,其中的string标签为方法调用的参数。

python 复制代码
<object class="javax.swing.JButton">
  <string>Press me</string>
  <void method="setName">
    <string>Greeting</string>
  </void>
</object>

JButton button1 = new JButton("Press me");
button1.setName("Greeting");

其实有了上面的这些标签,我们就能够执行命令了

漏洞演示

使用网上找到POC,其中object反序列化类为java.lang.ProcessBuilder,构造方法参数为calc(windows操作系统上的计算器程序),void标签声明了反序列化过程中调用的方法为start方法。

就可以实例化我们的ProcessBuilder,调用它的start方法,然后传入calc参数

总结

因为比较简单,自己也没有去复现一下怎么的,也没有去调试,其实调试就是调试对标签的解析过程

参考https://www.freebuf.com/articles/web/321222.html

的解析过程

参考https://www.freebuf.com/articles/web/321222.html

图片都是用的这个链接的

相关推荐
摸鱼也很难3 天前
安全开发 JavaEE && 反射机制 && 对象 成员变量 构造方法 成员方法 && 攻击链
java·java-ee·java安全
摸鱼也很难5 天前
javaEE安全开发 && SQL预编译 && Filter过滤器 && Listener 监听器 && 访问控制
java-ee·java安全·内存马
知攻善防实验室1 个月前
JAVA安全之类加载器
java·开发语言·java安全
脸红ฅฅ*的思春期1 个月前
Java安全—SpringBoot&Actuator&监控泄露&Swagger自动化
spring boot·自动化·swagger·actuator·java安全
A尘埃4 个月前
Java安全(加密+HTTPS+WEB安全)
java安全
CVE-柠檬i5 个月前
Java安全-动态加载字节码
安全·java安全
^ tr1ple ^8 个月前
JDK高版本下JNDI注入绕过
java·安全·java安全
Z3r4y1 年前
【Web】关于FastJson反序列化开始前的那些前置知识
java·web·ctf·fastjson·反序列化·java安全·fastjson反序列化
9eek1 年前
简单看下最近的Spring Secrurity、Spring漏洞(CVE-2024-22234、CVE-2024-22243)
网络安全·java安全