戟星安全实验室
本文约2860字,阅读约需8分钟。
0x00 前言
0x01 弱口令&war远程部署
漏洞原理
在tomcat8环境下默认进入后台的密码为tomcat/tomcat,未修改造成未授权即可进入后台
漏洞复现
进入tomcat8的docker环境
访问后台管理地址,使用tomcat/tomcat口令进入后台
看到这里有一个上传war包的地方,这里很多java的中间件都可以用war远程部署来拿shell,tomcat也不例外
首先将shell.jsp打包成test.war
jar -cvf test.war shell.jsp
将其上传,并查看manager页面是否存在test模块
访问http://192.168.121.174:8080/test/shell.jsp
也可以使用msf的模块exploit/multi/http/tomcat_mgr_upload
0x02 manager暴力破解
漏洞原理
后台密码用 base64 编码传输,抓包解密即可得到后台密码,也可以进行爆破
漏洞复现
访问控制台http://192.168.88.134:8080/manager/html
输入用户名密码进行抓包,就可以得到 Authorization 这个字段,这个字段有一个 Basic,就是base64加密的意思
base64解密得到账号密码 tomcat:tomcat
那么根据上面的情况,猜想能不能对 manager 进行暴力破解呢?答案是可以的!
发送到Intruder 模块,添加 Authorization 字段
设置 payload 类型,选择自定义迭代器,英文是Custom interator
这里需要添加3个参数,对应:用户名:密码
因为是 base64 编码,需要对 paylodad 进行编码处理,同时需要去掉自带的编码,不去会失败!
OK,开始爆破
0x03 CVE-2019-0232
CVE-2019-0232为ApacheTomcat RCE
漏洞原理
漏洞影响范围
Apache Tomcat 9.0.0.M1 to 9.0.17
Apache Tomcat 8.5.0 to 8.5.39
Apache Tomcat 7.0.0 to 7.0.93
漏洞复现
启动tomcat
Tomcat的 CGI_Servlet组件默认是关闭的,在conf/web.xml中找到注释的 CGIServlet部分,去掉注释,并配置enableCmdLineArguments和executable。
enableCmdLineArguments启用后才会将Url中的参数传递到命令行executable指定了执行的二进制文件,默认是perl,需要置为空才会执行文件本身。
<init-param>
<param-name>enableCmdLineArguments</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>executable</param-name>
<param-value></param-value>
</init-param>
然后在conf/web.xml中启用cgi的 servlet-mapping
将下图位置注释消除后保存。
修改conf/context.xml的添加 privileged="true"属性,否则会没有权限
在webappsROOTWEB-INF下创建cgi-bin目录,并创建一个hello.bat后重启tomcat
访问http://localhost:8080/cgi-bin/hello.bat?&C%3A%5CWindows%5CSystem32%5Ccalc.exe即可弹出计算器,这里构造系统命令即可
这里无法复现可能是因为版本问题。
建议使用Tomcat8.5.39来进行测试学习
0x04 安全措施
1、删除 webapps 目录中的 docs、examples、host-manager、manager 等正式环境用不着的目录,这一步就可以解决大部分漏洞。
2、解决“slow http denial of service attack”漏洞
slow http denial of service attack漏洞是利用http post的时候,指定一个非常大的content-length,然后以很低的速度发包,比如10-100s发一个字节,让这种连接不断开,这样当客户端连接多了后,占用了webserver的所有可用连接,从而导制DOS,属于一种打拒绝服务攻击。
解决方法:打开server.xml找到
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
将其中的connectionTimeout="20000"改为1000,其单位为ms。
Tomcat官方关于漏洞修复的说明:http://tomcat.apache.org/security-7.html
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,戟星安全实验室及文章作者不为此承担任何责任。
戟星安全实验室拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经戟星安全实验室允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。
戟星安全实验室
# 长按二维码 关注我们 #
原文始发于微信公众号(戟星安全实验室):tomcat常见漏洞复现(下)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论