Agent Skills
返回列表
🤖

表达式语言注入

AI Agent 更新于 2026.08.29

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

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/expression-language-injection-lr-13wp

技能介绍

解决什么问题

Java 生态里,SpEL、OGNL、Java EL 这些表达式引擎常被框架直接嵌入到请求处理链路中。它们和 SSTI 看起来相似——都能用 ${7*7} 之类的探针触发计算——但底层是表达式求值器,不是模板渲染引擎。安全团队在排查时,往往会把两者的探测信号混为一谈,导致错误分类,甚至漏掉真正的高危点。本技能要解决的问题就是:在 Java 技术栈中,快速识别并利用 EL 注入,而不是套用 SSTI 的经验。

核心能力与工作流程

技能将重点放在三种主流 EL 方言上:

  • SpEL:Spring 体系内,常见于 AOP、安全规则、自定义校验逻辑。
  • OGNL:Struts2 等框架的参数求值引擎,历史上多次爆发高危 RCE。
  • Java EL:JSP/JSF 页面内的表达式求值,通常在后端逻辑暴露时被利用。

攻击手册没有停留在基础语法,而是覆盖了几条关键路径:

  1. 沙箱绕过:分析 StandardEvaluationContext 的限制,以及如何通过 setVariable、ReflectivePropertyAccessor 等接口绕开黑白名单。
  2. _memberAccess 操纵:针对 OGNL 场景,绕过 MemberAccess 策略,直接访问 Runtime、ProcessBuilder 等敏感类。
  3. Actuator 滥用:当应用暴露了 Spring Boot Actuator 端点时,通过 /heapdump 或 /jolokia 配合 SpEL 执行任意代码。
  4. 真实 CVE 链复现:整理历史上 EL 注入相关漏洞的利用链,便于理解实际影响。

在关联路由方面,技能明确区分了 SSTI 和 EL 注入:前者针对 Jinja2、FreeMarker、Twig 等模板引擎,后者针对 Java 框架内的表达式求值器。如果 EL 求值最终导致 JNDI 查询,则进一步引导到 JNDI 注入场景,避免混用攻击面。

适用边界与注意点

  • 本技能仅限 Java 技术栈,不涉及 Python、Node.js 等其他语言的表达式注入。
  • 每个框架的 EL 方言语法不同,手册中给出的载荷必须针对目标环境二次验证。
  • Actuator 滥用路径依赖应用是否暴露了相应端点,实际测试时需先确认端点可达性。
  • 沙箱绕过方法与框架版本强相关,遇到较新的安全补丁时,原始载荷可能失效。
  • 不包含模板引擎的 SSTI 技巧,也不提供自动化利用脚本,仅作为技术分析和防御研究的参考。

使用场景

  • 安全测试工程师排查Java应用时,需识别SpEL注入漏洞并验证沙箱绕过路径
  • 渗透测试人员分析Struts2应用,要定位OGNL注入点并绕过memberAccess限制
  • 开发人员审查Spring Boot应用时,需检测Actuator端点的SpEL利用风险

适合人员

  • 安全工程师:需要在Java应用中定位EL注入漏洞,评估沙箱绕过风险
  • 渗透测试人员:负责测试Struts2/Spring应用时,需掌握OGNL/SpEL注入的利用链
  • Java开发人员:审查代码时需识别EL求值逻辑中的安全缺陷,防止注入风险