CVE-2020-1938-Tomcat-LFI
描述
由于 Tomcat AJP 协议设计上存在缺陷,攻击者通过 Tomcat AJP Connector 可以读取或包含 Tomcat 上所有 webapp 目录下的任意文件,例如可以读取 webapp 配置文件或源代码。此外在目标应用有文件上传功能的情况下,配合文件包含的利用还可以达到远程代码执行的危害。
影响版本
- Apache Tomcat 6
- Apache Tomcat 7 < 7.0.100
- Apache Tomcat 8 < 8.5.51
- Apache Tomcat 9 < 9.0.31
环境搭建
jdk1.8.0_131
Tomcat: 9.0.13
下载地址:
https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.13/bin/
jre环境变量设置
在tomcat的bin下面,找到setpath.bat,在其中添加以下内容后运行。
1 | set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_131\ |


复现过程
利用脚本下载地址:
1 | https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi |
使用python2执行获取web.xml文件
1 | python2 CNVD-2020-10487-Tomcat-Ajp-lfi.py 192.168.3.47 -p 8009 -f WEB-INF/web.xml |

修复建议
1、若不需要使用Tomcat AJP协议,可直接关闭AJP Connector,或将其监听地址改为仅监听本机localhost。
2、若需使用Tomcat AJP协议,可根据使用版本配置协议属性设置认证凭证。
3、升级tomcat版本。