0x01 漏洞简介
Tomcat服务器是一个开源的、轻量级别的web应用服务器,在中小型系统和并发访问用户不是很高的场合下被普遍使用,是开发和调式JSP程序的首选。
0x02 apache 和tomcat的区别
对于apache和tomcat两个服务器,他们大多伴随出现,然而对于他们的具体区别总感到疑惑,所以就深入查看了一下:
-
apache支持静态页,tomcat支持动态页,比如servlet等。
一般使用apache+tomcat时,apache只是作为一个转发,对jsp的处理时tomcat来处理的。apache支持php、cgi、perl、但是要使用Java的话,需要tomcat在apache后台支撑,将Java请求由apache转发给tomcat处理。 -
apache 侧重于http server;tomcat侧重于servlet引擎,可以看成是apache的扩展,但是独立于apache运行。换句话说,apache是一辆卡车,上面可以装一些东西如html等,但是不能直接装水,要装水必须需要桶(servelet)
0x03 漏洞概述
由于tomcat默认开启AJP服务(8009端口)存在一处文件包含缺陷,攻击者可以构造恶意的请求包进行文件包含的操作,进而读取受影响的tomcat服务器上的web目录文件
0x04 影响版本
- Apache Tomcat 6
- Apache Tomcat 7 < 7.0.100
- Apache Tomcat 8 < 8.5.51
- Apache Tomcat 9 < 9.0.31
0x05 环境搭建
将tomcat文件解压到要安装的目录下,进入文件夹的bin目录,找到startup.bat文件,点击进行加载,待加载完成后可以在浏览器访问http://localhost:8080界面访问成功说明tomcat安装成功。
0x06 漏洞利用
- 启动apache服务,对其端口进行扫描发现8009,8080端口开启,证明有该漏洞。
- 使用poc进行验证(该POC目前只能读取webapps/ROOT目录下的文件),成功读取到配置文件
0x07 漏洞修复
- 临时禁用AJP协议端口,在conf/server.xml配置文件中注释掉
<Connector port="8009" protocol="AJP/1.3"redirectPort="8443" />
- 配置ajp配置中的secretRequired跟secret属性来限制认证
- 下载最新版的tomcat
0x08 附件
- POC的下载地址
https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi