一、详细说明:其中包括场景、截图、漏洞重现的方法,涉及账号相关漏洞,请提供测试账号。
1、场景:在进入到内网后,且远程tomcat8009后能通的情况下,Apache Tomcat 8 < 8.5.51 时候可以通过ajp读取代码文件;当前部分tomcat版本在8.5.13会有此漏洞。
2、截图:
3、漏洞重现方法:
3.1ROOT下写一个jsp文件
#cat tomcat/webapps/ROOT/1.jsp
root/1.jsp
aa
3.2命令执行获取1.jsp内容
# python tomcat.py 192.168.0.3 -p 8009 -f 1.jsp
Getting resource at ajp13://192.168.0.3:8009/asdf
----------------------------
root/1.jsp
aa
二、修复方案:
2.1 Apache Tomcat版本官方升级
目前官方在最新版本中修改该漏洞,用户可自行前往官方地址下载并升级。
Apache Tomcat 7.0.100官方下载地址:
http://tomcat.apache.org/download-70.cgi
Apache Tomcat 8.5.51官方下载地址:
http://tomcat.apache.org/download-80.cgi
Apache Tomcat 9.0.31官方下载地址:
http://tomcat.apache.org/download-90.cgi
2.2 临时修复
若用户由于业务等原因无法进行版本升级,可采用临时防护措施。
2.2.1若不需要使用Tomcat AJP协议,可直接关闭AJP Connector,或将其监听地址改为仅监听本机localhost。
具体操作:
(1)编辑Tomcat 的工作目录下的/conf/server.xml,找到如下行:
(2)将此行注释掉(也可删掉该行):
(3)保存后需重新启动Tomcat,规则方可生效。
2.2.2若需使用Tomcat AJP协议,可根据使用版本配置协议属性设置认证凭证。
使用Tomcat 7和Tomcat 9的用户可为AJP Connector配置secret来设置AJP协议的认证凭证。例如:
使用Tomcat 8的用户可为AJP Connector配置requiredSecret来设置AJP协议的认证凭证:
其他:可以隐藏tomcat版本,减少针对性。
https://blog.51cto.com/sry2004/5995424