Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

CVE-2022-22965 PoC — Spring Framework 代码注入漏洞

Source
Associated Vulnerability
Title:Spring Framework 代码注入漏洞 (CVE-2022-22965)
Description:A Spring MVC or Spring WebFlux application running on JDK 9+ may be vulnerable to remote code execution (RCE) via data binding. The specific exploit requires the application to run on Tomcat as a WAR deployment. If the application is deployed as a Spring Boot executable jar, i.e. the default, it is not vulnerable to the exploit. However, the nature of the vulnerability is more general, and there may be other ways to exploit it.
Description
Demonstrable Proof of Concept Exploit for Spring4Shell Vulnerability (CVE-2022-22965)
Readme
# Spring4Shell - PoC
# CVE - 2022 - 22965
## Versions affected : 
- Spring Framework versions 5.3.0 to 5.3.17, 5.2.0 to 5.2.19 and older versions
- Java JDK 9
- Apache Tomcat versions below 10..0.20, 9.0.62, and 8.5.78
- Applications that are packaged as a traditional WAR with spring-webmvc or spring-webflux dependency and deployed on a standalone Servlet container alone are affected
## Description
- The issue can be elevated by classLoader manipulation
- Improper data binding that is used to populate an object from request parameters (Request Mapping annotation) causes this vulnerability
- Attackers can load arbitrary classes and can inject arbitrary code that can be executed by the application
- A similar vulnerability ([CVE-2010-1622](https://nvd.nist.gov/vuln/detail/CVE-2010-1622)) had been disclosed earlier and patches have been applied to restrict ```class.classLoader``` and ```class.protectionDomain```
- But JDK9 introduced a new method ```class.getMethod()```, which bypasses that restriction by using ```class.module.classLoader``` to access any child property of class object
## Impact
- Successful exploitation of this vulnerability can lead to arbitrary code execution on the vulnerable machine.
## Test Application
- [gokul-ramesh/Spring4Shell-POC](https://github.com/gokul-ramesh/Spring4Shell-POC) (forked from [lunasec-io/Spring4Shell-POC](https://github.com/lunasec-io/Spring4Shell-POC) )
- Clone the repository and build the application
```
docker build . -t spring4shell-poc-app
```
Else get the docker image from [gokul2/spring4shell-poc]
```
docker pull gokul2/spring4shell-poc-app
```
- Bring up the application
```
docker run -p 8080:8080 spring4shell-poc-app
```
- The application will be available at [localhost:8080](http://localhost:8080) now.
- Run the exploit.py file
File Snapshot

[4.0K] /data/pocs/c0020d8cd1065cd00d69a2f8ab405206fcbf934b ├── [ 711] exploit.py └── [1.8K] README.md 0 directories, 2 files
Shenlong Bot has cached this for you
Remarks
    1. It is advised to access via the original source first.
    2. Local POC snapshots are reserved for subscribers — if the original source is unavailable, the local mirror is part of the paid plan.
    3. Mirroring, verifying, and maintaining this POC archive takes ongoing effort, so local snapshots are a paid feature. Your subscription keeps the archive online — thank you for the support. View subscription plans →