Tomcat漏洞全解析(一):Tomcat7+ 密码爆破&&后台war部署后门getshell漏洞


序:

  今天天气不错,我很冷!Tomcat是个好东西!

 

 1、简介

 

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

Tomcat是Apache 服务器的扩展,但实际上是作为一个与Apache 独立的进程单独运行的。Apache 为HTML页面服务,而Tomcat 实际上一个Servlet和JSP容器,运行JSP 页面和Servlet。

Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,但处理静态HTML的能力不如Apache服务器。

                                                ------来自百度百科。

 

 2、Tomcat 后台 war部署后门getshell漏洞解析

 

Tomcat7+支持在后台部署war文件,可以直接将webshell部署到web目录下。当然,有个前提条件,那就是需要能登录后台,且对应用户有相应权限。

 

Tomcat7 +权限分为:

manager(后台管理)

  manager-gui 拥有html页面权限

  manager-status 拥有查看status的权限

  manager-script 拥有text接口的权限,和status权限

  manager-jmx 拥有jmx权限,和status权限

host-manager(虚拟主机管理)

  admin-gui 拥有html页面权限

  admin-script 拥有text接口权限

详情阅读 http://tomcat.apache.org/tomcat-8.5-doc/manager-howto.html

在conf/tomcat-users.xml文件中配置用户的权限(用户tomcat拥有上述所有权限,密码是tomcat):

<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
              version="1.0">

    <role rolename="manager-gui"/>
    <role rolename="manager-script"/>
    <role rolename="manager-jmx"/>
    <role rolename="manager-status"/>
    <role rolename="admin-gui"/>
    <role rolename="admin-script"/>
    <user username="tomcat" password="tomcat" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script" />

</tomcat-users>

正常安装的情况下,tomcat8中默认没有任何用户且manager页面只允许本地IP访问。只有管理员手工修改了这些属性的情况下,才可以进行攻击。

测试环境搭建可通过Vulhub,利用Docker搭建,真真方便快捷。

当然,为直观了解内在原理,亦可自行搭建。

                                      -------来自https://vulhub.org/#/environments/tomcat/tomcat8/

 

3、Tomcat管理后台口令爆破

 

如果你运气好,恰巧碰到网管比较机智,tomcat管理页面支持访问,那你就抱他,用力的抱他!

 

(1)首先,通过tomcat主页面,点击Manager App登录管理页面,在登录框中输入用户名密码;

或直接访问http://your-ip:8080/manager/html,在登录框中输入用户名密码。

(2)然后点击确定,通过burpsuite抓取登录请求报文(用户名密码采用base64编码,用户名:密码   格式传输)

(3)右键点击请求报文,选择“send to intruder”将请求报文发送到intruder模块

 

  (4)在“Positions”选项卡页面添加攻击参数:选中参数后,点击Add添加为攻击参数

  (5)配置payload:在“payloads”选项卡,设置payload类型为自定义迭代器(Custom iterator):

自定义迭代器(Custom iterator):很厉害的东东。它共有8个占位,每一个占位可以指定简单列表的Payload类型,然后根据占位的多少,与每一个简单列表的Payload进行笛卡尔积(不懂就找你度麻麻去),生成最终的Payload列表。

  (6)为第一个占位添加你的username字典

(7)为第二个占位添加字符“:”

 (8)为第三个占位添加你的password字典

  (9)在“payload processing”设置编码为“encode”-->“base64-encode”,并在“payload Encoding”中取消“URL-encode these characters"勾选

 

(10)可以开始攻击了

 

 

4、war部署后门getshell

 

如果你有幸踩到了little dog bian bian,嗯,记得离我远点,别忘了把鞋擦干净

 

(1)制作WAR包(将后门文件打包到war包,需本地配置java环境)

jar -cvf war.war “houmen.jsp”

(2)利用后台war部署功能上传后门文件

 (3)getshell

上传war包后,会自动解压到网站根目录下/war(你的war包名字)/houmen.jsp(你的后门名字),通过c刀等工具连接,getshell。

http(s)://xxx.xxx.xx.xx:xxxx/war/houmen.jsp

 

5、本集结束

 

预知后事如何,请听下回分解!

 

特别提醒:不用弱口令!不用弱口令!不用弱口令!重要的事情要说三遍,那谁谁谁说的!机智如你,可千万记好了!

 

此致

  敬礼!


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM