In this article, we are going to setup the Tomcat server on the ubuntu machine and exploit the file upload vulnerability. Following are the machines:
Target Machine: Ubuntu (192.168.1.5)
Attacker Machine: Kali Linux (192.168.1.7)
Installation
Apache Tomcat relies on Java, meaning you’ll need to have the Java JDK installed on your server. You can install it by running the command below:
Add a new user by the name tomcat using the following command:
Download the Tomcat tar.gz file from the official website.
Download the latest version from the website into the ubuntu machine and extract the downloaded files.
Move the extracted folder in the /opt/tomcat directory, give the ownership permissions to tomcat user and set the execution permission on binary files.
Create a tomcat.service file in the /etc/systemd/system/ directory and add the following content in the file:
Reload the systemd daemon to apply the changes using the following command:
Also, enable the tomcat service to start at system reboot.
Checking the status of the tomcat server:
Configuration
After the installation is complete, its time to configure the Tomcat server.
To create admin user password, make changes in the following file:
nano /opt/tomcat/conf/tomcat-users.xml
Add the following code above the </tomcat-users>:
To enable remote access for Tomcat Manager, make the following changes in the context.xml file present in the manager and host-manager directory.
nano /opt/tomcat/webapps/manager/META-INF/context.xml
nano /opt/tomcat/webapps/host-manager/META-INF/context.xml
Remove the following line from both the above files as shown below:
Once done with the changes, restart the tomcat service in ubuntu.
Observe that the Tomcat server is up and running on port 8080 in the ubuntu machine.
Enumeration
After the installation and configuration is complete, now starting the enumeration phase.
Using Kali linux as an attacker machine, initial enumeration can be performed using nmap.
Exploitation using Metasploit Framework
First trying to exploit the functionality using Metasploit as an exploit is already available for the tomcat file upload vulnerability. The exploit used here is exploit/multi/http/tomcat_mgr_upload.
Inside Metasploit, type the below given commands to run the exploit:
From above it can be seen that a reverse shell is obtained and the commands can be executed using the meterpreter shell.
Exploiting Manually (Reverse Shell)
The above exploitation process can also be performed manually. In order to do that we first need to create a .war file using msfvenom.
After the shell.war file has been created, we need to upload that file inside tomcat manager app.
To access the Manager App, it will require a basic authentication. The username can be given as admin and password as password to access the manager app.
After login into the Manager App, upload the above created shell.war file in the War file to deploy functionality.
Once the file is uploaded it can be seen in the uploaded files section.
Before accessing the uploaded file, start a netcat listener on port 1234.
Click on the /shell to access the file to obtain a reverse shell.
The reverse shell is obtained at port 1234.
Exploiting Manually (Web Shell)
To get a web shell, a .war file can be used which will contain .jsp files such that after the .war file is uploaded to the server the webshell is obtained.
To create a .war containing the .jsp files java is required in the kali linux machine.
Now, create a webshell directory, within it we will place the index.jsp file.
Copy the following code in the index.jsp file for the web shell.
After the index.jsp file is created, the package can now be created after converting the directory into a .war file.
After the webshell.war file is created, uploading it in the deploy functionality.
The index.jsp page can be accessed within the uploaded webshell directory and a webshell is obtained.
An alternative way to do the above manual exploitation can by downloading the cmd.jsp file and creating a webshell.war file using zip.
The webshell jsp file can be downloaded from here:
https://github.com/tennc/webshell/tree/master/fuzzdb-webshell/jsp
After the cmd.jsp file is downloaded, a revshell.war file can be created using the following command:
Again, repeating the same procedure as discussed earlier, after uploading the revshell.war file in the deploy functionality. The web shell is obtained after accessing the file at the path: http://192.168.1.5:8080/revshell/cmd.jsp
Conclusion
In essence, Apache Tomcat remains a preferred choice for deploying Java web applications, offering a blend of versatility and security that caters to the diverse needs of developers and administrators alike. However, due to misconfigurations it can be abused to perform certain unintended actions like Remote Code Execution.
Comments
Post a Comment