Certain WSO2 products allow unrestricted file upload with resultant remote code execution. The attacker must use a /fileupload endpoint with a Content-Disposition directory traversal sequence to reach a directory under the web root, such as a ../../../../repository/deployment/server/webapps directory.
python3 main.py https://example.com shell.jsp
Replace https://example.com
with the vulnerable server and shell.jsp
with a filename you want to use for upload.
Edit shell.jsp
file as you want, but current shell works just fine too (better than other JSP shells, at least).
This shell can harvest output from stdout and stderr. CMDs are ran using /bin/sh
.
Mostly, sysadmins run WSO2 products as superuser. Using this exploit, you'll have superuser permissions over the whole system.
Database files are located at ~/repository/database directory.
- username: wso2carbon
- password: wso2carbon
- DBMS: H2 1.4.196
You can use the IntelliJ IDEA to open H2 type databases, like this.
Using this exploit, you can copy any file from any directory to ~/repository/deployment/server/webapps/authenticationendpoint
. authenticationendpoint
directory serves JSP, but can be used to serve other files too.
Example:
cp ~/repository/database/WSO2CARBON_DB.h2.db ~/repository/deployment/server/webapps/authenticationendpoint/WSO2CARBON_DB.h2.db
This command will copy the main DB file to a directory we can use to download it from.
- API Manager - 2.2.0 and above
- Identity Server - 5.2.0 and above (tested)
- Identity Server Analytics - 5.4.0, 5.4.1, 5.5.0, 5.6.0
- Identity Server as Key Manager - 5.3.0 and above
- Enterprise Integrator - 6.2.0 and above
I'm not responsible for any kind of thermonuclear war or you getting arrested. Use this exploit in a testing environment only.