用途:针对 Java 框架中表达式求值器被注入攻击者可控输入的场景,提供检测与利用思路。区别于针对模板引擎的 SSTI,本技能聚焦 SpEL(Spring)、OGNL(Struts2)与 Java EL(JSP/JSF)。
检测:使用多语言探针,如 ${77} 返回 49 可能为 SpEL、OGNL 或 Java EL;#{77} 为 SpEL 或 JSF EL;%{7*7} 返回 49 为 OGNL(Struts2)。可通过对比不同语法响应区分引擎,并依据错误信息(ognl.OgnlException、SpelEvaluationException、javax.el.ELException)判断框架。
主要能力:涵盖 SpEL 通过 Runtime.exec 或 ProcessBuilder 实现 RCE 及输出捕获、Spring Cloud Gateway CVE-2022-22947 通过 actuator 添加恶意路由、SpEL 沙箱(SimpleEvaluationContext)反射绕过;OGNL 沙箱绕过包括 _memberAccess 操作与 OgnlUtil 黑名单清空,并列出 S2-045、S2-046、S2-016、S2-048、S2-057 及 Confluence CVE-2021-26084 等 CVE 链;Java EL 在 JSP/JSF 中的 RCE 载荷。
使用方式:先探测确认引擎,再按框架选择对应载荷;涉及 actuator 时通过 POST /actuator/gateway/routes/... 添加路由、POST /actuator/gateway/refresh 刷新并触发,事后可 DELETE 清理。
适用场景:授权渗透测试中的 Java Web 应用漏洞验证。
限制:仅限合法授权测试;实际可用性取决于目标版本、沙箱配置与黑名单策略,资料未提供各载荷的兼容版本范围与成功率,也未说明具体环境要求。