一、漏洞描述
Tomcat有一个管理后台,其用户名和密码在Tomcat安装目录下的conf\tomcat-users.xml文件中配置,不少管理员为了方便,经常采用弱口令。Tomcat 支持在后台部署 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接口权限
二、漏洞影响
Tomcat <= 6.0.0 默认用户名为admin
,密码为空
,无暴力破解限制。
Tomcat >= 6.0.0 无默认用户,五次失败后,账户即被锁定。
三、漏洞复现
1、环境搭建
使用 Vulhub 在服务器上搭建:
cd /vulhub/tomcat/tomcat8
docker-compose up -d
访问127.0.0.1:8080
,进入到 Tomcat 默认界面:
2、漏洞复现
使用弱密码用户名:tomcat
,密码:tomcat
进入到 Manager 页面:
若要爆破用户名密码,使用 BurpSuite 抓取数据包:
使用 Intruder 模块添加变量:
Payload 选择 Custom iterator
:
设置 Payload 1 的值为 tomcat
,即用户名:
设置 Payload 2 的值为 :
,即分隔符:
设置 Payload 3 的值为需要爆破的密码:
添加 Payload Processing,选择为 Base64 编码:
设置结果如下:
取消勾选 URL 编码:
开始爆破:
将返回状态200
的 Payload 解码,得到密码:
成功登录后,在 Manager 页面上传 war 包即可直接 getshell :
四、漏洞POC
正常安装的情况下,tomcat8 中默认没有任何用户,且 Manager 页面只允许本地 IP 访问。只有管理员手工修改了这些属性的情况下,才可以进行攻击。
五、参考链接
https://github.com/vulhub/vulhub/blob/master/tomcat/tomcat8/README.zh-cn.md
http://tomcat.apache.org/tomcat-8.5-doc/manager-howto.html
http://tomcat.apache.org/tomcat-8.0-doc/config/realm.html#LockOut_Realm_-_org.apache.catalina.realm.LockOutRealm