注意:下列漏洞复现是使用Ubuntu+docker实现的环境完成的,其中提到的IP通过Ubuntu虚拟机中的ifconfig命令查看,端口不变,需要环境的可通过docker相关环境下载
tomcat存在管理后台进行应用部署管理,且管理后台使用HTTP基础认证进行登录。若用户口令为弱口令,攻击者容易进行暴力破解登录后台并进行应用管理
影响版本:全版本
常见后台地址:http://1.1.1.1:2233/manager/html http://1.1.1.1:2233/host-manager/html
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
Apache Tomcat默认安装包含"/examples"目录,该目录包含许多示例servlet和JSP,其中一些事例存在安全风险,不应当部署在生产服务器上。可导致敏感信息泄露、核心数据可能被窃取、攻击者利用样例漏洞直接攻击等危害
影响版本:全版本
2.1 访问192.168.137.128:8081/examples页面
2.2 继续访问/examples/servlets/servlet/SessionExample
该页面可以对session直接进行查询与修改,绕过认证,可能会被黑客利用直接操作服务器
当tomcat启用了HTTP PUT请求方法,如将readonly初始化参数设置为false时, 攻击者构造的请求数据包通过PUT方式向服务器上传包含恶意JSP代码的文件,使得恶意的JSP代码在服务器执行,导致服务器上的数据泄露或服务器被攻击者控制。可能导致:执行恶意代码、getshell等。
影响版本:全版本
2.1 访问192.168.137.128:8081,并刷新页面使用burpsuite抓包
2.2 修改请求,将get方式改为PUT方式并添加任意的JSP代码,发出请求
可以看到状态码为201,表明文件上传成功
2.3 访问已经上传的文件
JSP代码在服务器上顺利执行
tomcat AJP协议(默认8009端口)由于存在实现缺陷导致相关参数可控,攻击者可以构造特定的参数,读取webapp下的任意文件。可能导致:读取任意文件、敏感信息泄露,若服务器还存在文件上传功能,还可能造成远程代码执行等危害。
影响版本:tomcat 6、7.0.0~7.0100、8.0.0~8.5.51、9.0.0~9.0.31
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文件
若使用了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.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请求