Spring4Shell 的漏洞原理分析
Spring 框架最新的 PoC
这两天出来的一个 RCE 漏洞,但是有以下的条件限制才行:
必须是 jdk9 及以上
必须是部署在 tomcat 的应用
是 springmvc 的或者 webflux 的应用
具体的可以查看 spring 官方:
https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement
我看到这个漏洞的时候,就去查了以下怎么利用的,一搜很多 py 脚本。
但是我没找到漏洞利用的原理,所以我就自己做了个 demo,然后 debugger 了一下,原来
是这样~
漏洞利用的原理
我们都知道,我们在 springmvc 的时候经常会这么写代码来接收前端传来的参数
@RequestMapping(value=“/register”,method=RequestMethod.GET)
publicStringregister(@RequestParamMaprequestparams,Modelmodel)throwsException{
Stringemail=requestparams.get(“email”);
Stringusername=requestparams.get(“username”);
model.addAttribute(“data”,”email:”+email+”username:”+username);
return”index”;
}
如果我们这么访问:
http://localhost:8080/vulnerable_war/register?email=11&username=b
那么返回的结果就是这样: