JNDI 注入攻击手册
将以下提示词粘贴到你的 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注入与反序列化的区别