中间件漏洞测试——Tomcat

注意:下列漏洞复现是使用Ubuntu+docker实现的环境完成的,其中提到的IP通过Ubuntu虚拟机中的ifconfig命令查看,端口不变,需要环境的可通过docker相关环境下载

一、管理界面弱口令getshell

1、漏洞简述&影响版本

       tomcat存在管理后台进行应用部署管理,且管理后台使用HTTP基础认证进行登录。若用户口令为弱口令,攻击者容易进行暴力破解登录后台并进行应用管理

       影响版本:全版本

       常见后台地址:http://1.1.1.1:2233/manager/html  http://1.1.1.1:2233/host-manager/html

2、攻击步骤

2.1  访问http://192.168.137.128:8082,点击Manager App,可以使用Metasploit进  行账号密码的爆破(设置目标IP:set RHOSTS 192.168.137.128;设置端口:set RPORT 8082;实施攻击:exploit)

2.2  登录到tomcat后台,找到war上传的入口,上传包含webshell的war项目进行部署(这里上传了一个包含webshell的pass.war项目)

2.3  使用冰蝎连接,成功getshell

3、加固建议

  • 在tomcat-users.xml目录下加强密码的复杂性,包含字母、数字和特殊字符 (如可将下图中的username和password改为tomcat123!@#)  

  • 创建运行tomcat的普通用户tomcat,不允许远程登录后台:useradd -s /sbin/nologin tomcat  
  • 禁用后台,在server.xml中修改配置如下: <Host name="localhost"  appBase="webapps" unpackWARs="true"          xmlValidation="false" xmlNamespaceAware="false">    修改完成后重启tomcat

二、生产环境存在示例页面

1、漏洞简述&影响版本

        Apache Tomcat默认安装包含"/examples"目录,该目录包含许多示例servlet和JSP,其中一些事例存在安全风险,不应当部署在生产服务器上。可导致敏感信息泄露、核心数据可能被窃取、攻击者利用样例漏洞直接攻击等危害

        影响版本:全版本

2、攻击步骤

2.1  访问192.168.137.128:8081/examples页面

2.2  继续访问/examples/servlets/servlet/SessionExample

该页面可以对session直接进行查询与修改,绕过认证,可能会被黑客利用直接操作服务器

3、加固建议

  • 在完成生产环境的搭建后,删除webapps目录下的自带项目:docs、examples、host-manager、manager、root
  • 可删除 tomcat/conf/logging.properties配置文件下的:    3个manager.org.apache.juli.AsyncFileHandler    4个host-manager.org.apache.juli.AsyncFileHandler 

三、远程代码执行漏洞(CVE-2017-12615)

1、漏洞简述&影响版本

       当tomcat启用了HTTP PUT请求方法,如将readonly初始化参数设置为false时,    攻击者构造的请求数据包通过PUT方式向服务器上传包含恶意JSP代码的文件,使得恶意的JSP代码在服务器执行,导致服务器上的数据泄露或服务器被攻击者控制。可能导致:执行恶意代码、getshell等。

       影响版本:全版本

2、攻击步骤

2.1  访问192.168.137.128:8081,并刷新页面使用burpsuite抓包

2.2  修改请求,将get方式改为PUT方式并添加任意的JSP代码,发出请求

可以看到状态码为201,表明文件上传成功

2.3  访问已经上传的文件

JSP代码在服务器上顺利执行

3、加固建议

  • 将服务器下 conf/web.xml 文件的 readonly 值改为 Ture 或注释参数,重启tomcat

  • 注释掉web.xml下<!--<http-method>PUT</http-method>-->

四、文件包含漏洞(CVE-2020-1938)

1、漏洞简述&影响版本

        tomcat AJP协议(默认8009端口)由于存在实现缺陷导致相关参数可控,攻击者可以构造特定的参数,读取webapp下的任意文件。可能导致:读取任意文件、敏感信息泄露,若服务器还存在文件上传功能,还可能造成远程代码执行等危害。

        影响版本:tomcat 6、7.0.0~7.0100、8.0.0~8.5.51、9.0.0~9.0.31

2、攻击步骤

2.1  使用Nmap扫描器对192.168.137.128进行端口扫描

发现8009端口开放且版本在受影响范围内可初步怀疑存在该漏洞

2.2  使用脚本(脚本链接)  输入命令python . \CNVD-2020-10487-Tomcat-Ajp-lfi.py 192.168.137.128 -p 8009 -f WEB-INF/web.xml

成功读取了web.xml文件

3、加固建议

  • 临时禁用AJP协议端口,在conf/server.xml配置文件中注释掉<!--<Connector port="8009" protocol="AJP/1.3"redirectPort="8443" />-->,配置完成后重启tomcat并检查8009端口是否关闭

  • 如未使用 Tomcat AJP 协议,可以直接将 Tomcat 升级到 9.0.31、8.5.51 、 7.0.100 或更高的版本
  • 如无法立即进行版本更新、或者是更老版本的用户,建议为 AJPConnector 配置 requiredSecret:<Connector port="8009"protocol="AJP/1.3" redirectPort="8443"address="YOUR_TOMCAT_IP_ADDRESS"requiredSecret="YOUR_TOMCAT_AJP_SECRET" />,配置完成后重启tomcat

五、反序列化漏洞

1、漏洞简述&影响版本

       若使用了Tomcat的session持久化功能,不安全的配置将导致攻击者可以发送恶意请求执行任意代码,但攻击者能利用此漏洞的条件较为苛刻,需满足4个条件:1、攻击者能够控制服务器上文件的内容和文件名称;2、服务器PersistenceManager配置中使用了FileStore;3、PersistenceManager中的sessionAttributeValueClassNameFilter被配置为“null”,或者过滤器不够严格,导致允许攻击者提供反序列化数据的对象;4、攻击者知道使用的FileStore存储位置到攻击者可控文件的相对路径。可能导致:远程恶意代码执行等危害。

       影响版本:tomcat 10.0.0-M1~10.0.0-M4、9.0.0.M1~9.0.34、8.5.0~8.5.54、7.0.0~7.0.103

2、攻击步骤

2.1  在burpsuite中将collaborator server设置成use the default collaborator server

2.2  打开collaborator客户端面板,点击copy to clipboard

这里复制的内容为hj4qo3c5zo3knmuoamcyrxc9g0mqaf.burpcollaborator.net

2.3  下载ysoserial,使用ysoserial在本地生成bbb.session文件,生成命令:java -jar ysoserial-0.0.6-SNAPSHOT-all.jar CommonsCollections2 "touch /tmp/tomcat-bug" > /home/eirc/a.session (注意,/home/eirc是主文件夹,在主文件夹下生成bbb.session文件)

2.4  访问存在文件上传漏洞的页面http://192.168.137.128:8083/index1.jsp,构造请求如下,发起请  求显示成功,放包

2.5  再次访问http://192.168.137.128:8083/刷新页面,使用burpsuite刷新抓包

2.6  修改请求 JSESSIONID=../../../../../../tmp/bbb并发送 

2.7  查看burpsuite的collaborator中成功获取DNS请求 

3、加固建议

  • 关闭session持久化功能,在tomcat目录>conf>context.xml下取消注释:      <!--<Manager pathname="" />-->,修改完成后重启tomcat
  • 建议将tomcat更新到最新版本:https://tomcat.apache.org/download-10.cgi
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值