SPEL(Spring Expression Language):SPEL是Spring表达式语言,允许在运行时动态查询和操作对象属性、调用方法等,类似于Struts2中的OGNL表达式。当参数未经过滤时,攻击者可以注入恶意的SPEL表达式,从而执行任意代码 表达式语言/模板:表达式语言用于动态处理固定格式的内容,其中变量部分可以在运行时填入。模板可以将固定部分提取出来,方便模块化管理,动态填充变量内容
SPEL(Spring Expression Language):SPEL是Spring表达式语言,允许在运行时动态查询和操作对象属性、调用方法等,类似于Struts2中的OGNL表达式。当参数未经过滤时,攻击者可以注入恶意的SPEL表达式,从而执行任意代码
表达式语言/模板:表达式语言用于动态处理固定格式的内容,其中变量部分可以在运行时填入。模板可以将固定部分提取出来,方便模块化管理,动态填充变量内容
示例Payload 探测SPEL注入 弹计算器-mac 弹计算器-win Run
代码审计SINK点: 1、SpelExpressionParser.parseExpression() 2、Expression.getValue()
SimpleEvaluationContext不支持以下危险功能: Java 类型引用: 无法通过表达式引用Java类,从而防止调用静态方法 构造函数调用: 不能通过表达式实例化新对象 Bean 引用: 无法通过表达式访问Spring应用上下文中的bean