一、Tomcat
Apache Tomcat 是一个免费的开源 Web 应用服务器,在中小型企业和个人开发用户中有着广泛的应用。
二、漏洞的影响范围
受影响版本
- Apache Tomcat 6
- Apache Tomcat 7 < 7.0.100
- Apache Tomcat 8 < 8.5.51
- Apache Tomcat 9 < 9.0.31
不受影响版本
- Apache Tomcat = 7.0.100
- Apache Tomcat = 8.5.51
- Apache Tomcat = 9.0.31
三、漏洞编号
CVE-2020-1938
CNVD-2020-10487
四、漏洞危害
由于Tomcat默认开启的AJP服务(8009端口)存在一处文件包含缺陷,攻击者可构造恶意的请求包进行文件包含操作,进而读取受影响Tomcat服务器上的Web目录文件。
五、漏洞检测
Github上已经有许多检测的POC了,有大佬写的java脚本,也有python脚本,当然使用长亭的xray也是可以的,我个人更加偏向使用python脚本。附上链接:https://pan.baidu.com/s/1nVM8JBRJ6uznWp_bbuSNOA 提取码:a48t 。
有此证明漏洞存在,读取成功。
此脚本是利用python2写的,用法python -h
看就好了。
其他POC的地址:https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi
https://github.com/0nise/CVE-2020-1938
批量刷SRC:https://github.com/Kit4y/CNVD-2020-10487-Tomcat-Ajp-lfi-Scanner
Xray地址:https://xray.cool/
六、修复建议
- 如未使用Tomcat AJP协议:
如未使用 Tomcat AJP 协议,可以直接将 Tomcat 升级到 9.0.31、8.5.51或 7.0.100 版本进行漏洞修复。
如无法立即进行版本更新、或者是更老版本的用户,建议直接关闭AJPConnector,或将其监听地址改为仅监听本机localhost。
具体操作:
(1)编辑 <CATALINA_BASE>/conf/server.xml,找到如下行(<CATALINA_BASE> 为 Tomcat 的工作目录):
<Connector port=”8009″protocol=”AJP/1.3″ redirectPort=”8443″ />
(2)将此行注释掉(也可删掉该行):
(3)保存后需重新启动,规则方可生效。
- 如果使用了Tomcat AJP协议:
建议将Tomcat立即升级到9.0.31、8.5.51或7.0.100版本进行修复,同时为AJP Connector配置secret来设置AJP协议的认证凭证。例如(注意必须将YOUR_TOMCAT_AJP_SECRET更改为一个安全性高、无法被轻易猜解的值):<Connector port="8009"protocol="AJP/1.3" redirectPort="8443"address="YOUR_TOMCAT_IP_ADDRESS" secret="YOUR_TOMCAT_AJP_SECRET"/>
如无法立即进行版本更新、或者是更老版本的用户,建议为AJPConnector配置requiredSecret来设置AJP协议认证凭证。例如(注意必须将YOUR_TOMCAT_AJP_SECRET更改为一个安全性高、无法被轻易猜解的值):
<Connector port="8009"protocol="AJP/1.3" redirectPort="8443"address="YOUR_TOMCAT_IP_ADDRESS"requiredSecret="YOUR_TOMCAT_AJP_SECRET" />
参考文章:https://guanjia.qq.com/news/n5/2564.html
http://blog.nsfocus.net/cve-2020-1938/