Spring4Shell - PoC
CVE - 2022 - 22965
受影响版本:
- Spring Framework 版本 5.3.0 至 5.3.17、5.2.0 至 5.2.19 及更旧版本
- Java JDK 9
- Apache Tomcat 版本低于 10.0.20、9.0.62 和 8.5.78
- 作为传统 WAR 包部署、包含 spring-webmvc 或 spring-webflux 依赖并单独运行于独立 Servlet 容器中的应用程序受影响
描述
- 该问题可通过 classLoader 操作被放大
- 用于从请求参数填充对象(Request Mapping 注解)的错误数据绑定导致了此漏洞
- 攻击者可加载任意类,并可注入由应用程序执行的任意代码
- 之前已披露过一个类似的漏洞(CVE-2010-1622),并已应用补丁限制
class.classLoader 和 class.protectionDomain
- 但 JDK9 引入了一个新方法
class.getMethod(),该方法通过使用 class.module.classLoader 访问 class 对象的任何子属性,从而绕过此限制
影响
测试应用程序
docker build . -t spring4shell-poc-app
或从 [gokul2/spring4shell-poc] 获取 Docker 镜像
docker pull gokul2/spring4shell-poc-app
docker run -p 8080:8080 spring4shell-poc-app