Tomcat
Tomcat Version Enumeration
Credential Locations
Creds will be in one of these locations, wont be in both locations
Username Enum
In some versions prior to Tomcat6 you could enumerate users:
Default credentials
The most interesting path of Tomcat is /manager/html, inside that path you can upload and deploy war files (execute code). But this path is protected by basic HTTP auth, the most common credentials are:
admin:admin
tomcat:tomcat
admin:<NOTHING>
admin:s3cr3t
tomcat:s3cr3t
admin:tomcat
You could test these and more using:
Password backtrace disclosure
Try to access /auth.jsp
and if you are very lucky it might disclose the password in a backtrace.
Path Traversal (..;/)
So, for example, you might be able to access the Tomcat manager page by accessing: www.vulnerable.com/lalala/..;/manager/html
Another way to bypass protected paths using this trick is to access http://www.vulnerable.com/;param=value/manager/html
Understanding your role once you have credentials
NOTE: For security reasons, using the manager webapp is restricted to users with role “manager-gui”. The host-manager webapp is restricted to users with role “admin-gui”. Users are defined in
/etc/tomcat9/tomcat-users.xml
.
The user tomcat has admin-gui
, but not manager-gui
, which means I can’t access the manager webapp:
But I can access the host-manager webapp:
Text-based manager
I can test it out with
list
and it works:
Now that I have access to the manager (even if not through the GUI)
Deploy Malicious War
Generate Payload
Upload Payload
Now I’ll use curl
to send the payload. I’ll need to give it the application path (url), and send the payload using an HTTP PUT request. In curl
, I’ll use -T
or --upload-file
to signify a PUT request:
I’ll deploy the payload with:
That’s:
-u 'tomcat:$3cureP4s5w0rd123!'
- the creds/manager/text/deploy
- text-based path fordeploy
command?path=/0xdf
- the path I want the application to live at--upload-file rev.10.10.14.18-443.war
- war file to upload with HTTP PUT
The results suggest it worked. I’ll start nc
, and then trigger it with curl http://10.10.10.194:8080/0xdf
. I get a connection back with a shell:
Easy Pwns
Apache Tomcat Metasploit
Version: Apache Tomcat/8.0.47
OS: Microsoft Windows 2008| Vista | 7
exploit: multi/http/struts2_rest_xstream
Targeturi: /struts2-rest-showcase/orders/
Last updated
Was this helpful?