Spel Attack
0x01 What Is SpEL
package com.example.demo1.bean; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component; @Component @PropertySource({"classpath:/configure.properties"}) public class User { @Value("${spring.user.name}") public String userName; // 值来自application.properties @Value("${home.dorm}") public String address; // 值来自configure.properties(放在resources文件夹下) @Value("#{T(java.lang.Math).random()}") public double age; @Value("#{systemProperties['os.name']}") public String sys; // 注入操作系统属性 }// configure.properties home.dorm=Room402,Unit4,Building3,No.34.LousyLoad // application.properti spring.user.name=Taco<bean id="Book" class="com.example.bean"> <property name="author" value="#{表达式}"> </bean>@Test public void spelTest() { ExpressionParser parser = new SpelExpressionParser(); Expression expression = parser.parseExpression("('Hello '+'SpEL').concat(#end)"); EvaluationContext context = new StandardEvaluationContext(); context.setVariable("end", "!"); System.out.println(expression.getValue(context)); }
0x02 Way To Attack
0x03 Injection Tricks

0x04 CVE To Study
0x05 Patch
Last updated