Completely based on https://github.com/piesecurity/apache-struts2-CVE-2017-5638
Pre-requisites:
- have a JDK installed,
- ideally have Docker installed,
- eventually have Python installed (can be replaced by Jython)
To prepare:
- clone this repo
- run
./mvnw clean package
in project root - run
docker build -t hack \.
- run
docker run -d -p 9080:8080 hack
- once container comes online - verify by running in browser http://localhost:9080
Notice: if you don't have Docker installed, you can run ./mvnw jetty:run
To begin testing RCE - run the exploit.py
file:
- run
python exploit.py http://localhost:9080/orders/3 "CMD"
- If you don't have Python, download Jython Standalone and
runjava -jar jython*.jar exploit.py http://localhost:9080/orders/3 "CMD"
Try with different CMDs like
pwd
- where are we?whomai
- what user are we running this?ls -la
- what's in my directory?ls /
- what's my machinels /etc
- what else we can find?
Use the Nexus Lifecycle Component Information Panel to identify a non-vulnerable version of struts2-core. Update the POM to that version and rebuild. You can also rebuild the Docker image and run it to retry the attack.
Also, look in the Issues here to see DepShield findings
https://github.com/apache/struts/tree/master/apps/rest-showcase
README.txt - Rest Showcase Webapp
Rest Showcase is a simple example of REST app build with the REST plugin.
For more on getting started with Struts, see
* http://cwiki.apache.org/WW/home.html
I18N:
=====
Please note that this project was created with the assumption that it will be run
in an environment where the default locale is set to English. This means that
the default messages defined in package.properties are in English. If the default
locale for your server is different, then rename package.properties to package_en.properties
and create a new package.properties with proper values for your default locale.