Agent Skills
返回列表
🔒

JNDI 注入攻击手册

IT 运维与安全 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/jndi-injection-lr-azqq。

技能介绍

要解决的具体问题

当攻击者能控制 JNDI 查找路径时,目标应用可能通过 javax.naming.Context 触发远程类加载或反序列化。这类问题在 Log4Shell(CVE-2021-44228)中被大规模利用,且随着 JDK 安全策略更新,攻击面已扩展到 RMI/LDAP 协议层面的绕过技巧。工程师需要明确区分 JNDI 注入与通用反序列化漏洞,才能精准定位修复点。

技能如何工作

  • 覆盖核心攻击链:从 InitialContext.lookup() 调用分析入手,演示如何通过 ldap:// 协议加载恶意类,并解释 JDK 8u191 后 com.sun.jndi.ldap.object.trustURLCodebase 限制的绕过方法
  • 工具化验证:集成 marshalsec 工具生成恶意 LDAP 服务器,模拟 javaSerializedData 字段传递反序列化载荷,展示 JDK 版本差异对攻击成功率的影响
  • Log4Shell 专项解析:拆解 ${jndi:ldap://...} 表达式在日志记录场景中的触发路径,结合 CVE-2021-44228 补丁绕过案例说明补丁后版本仍需关注的调用场景

适用边界与注意事项

  • 不涉及通用表达式注入(如 SpEL/OGNL)的完整利用链,当 JNDI sink 通过表达式求值触发时需配合 expression-language-injection 技能分析
  • 依赖目标环境存在可利用的类加载策略,Java 9+ 模块系统可能限制部分 gadget 链执行
  • 需自行搭建 LDAP/RMI 测试环境验证,实际攻击效果受目标网络策略和安全组件拦截影响

使用场景

  • 分析Log4Shell漏洞触发路径,需解析JNDI表达式如何触发远程类加载
  • 验证JDK 8u191后的绕过方法,需搭建LDAP测试环境模拟攻击
  • 区分JNDI注入与反序列化漏洞,撰写漏洞分析报告时需明确攻击差异
  • 排查应用中的JNDI调用风险,需检查InitialContext.lookup参数是否可控

适合人员

  • 安全工程师,分析Log4Shell漏洞时需要了解JNDI注入的完整攻击链
  • Java后端开发者,排查应用中JNDI调用时需要定位潜在漏洞点
  • 渗透测试人员,模拟JNDI注入攻击时需要搭建LDAP/RMI测试环境
  • 安全审计人员,撰写漏洞报告时需要明确JNDI注入与反序列化的区别