文章总结: 本文解析Tomcat任意文件上传漏洞CVE-2017-12615的原理与复现。当web.xml配置readonly为false时,攻击者可通过PUT方法上传文件。受影响版本为7.0.0至7.0.81。实验演示使用BurpSuite抓包,通过在文件名后添加空格编码或斜杠绕过限制,成功上传并解析JSP脚本,帮助掌握漏洞利用与防护。 综合评分: 86 文章分类: WEB安全,漏洞POC,渗透测试
网安实验干货每日分享Tomcat任意文件上传(CVE-2017-12615)-0108
原创
建哥聊安全
建哥聊安全
2026年1月8日 14:24 湖南
Tomcat任意文件上传(CVE-2017-12615)
实验目的
通过本实验,掌握文件上传中的Tomcat任意文件上传的漏洞,以及该漏洞影响的Tomcat版本以及配置。
实验环境
·操作机:Win10 用户名:Administrator 密码:Sangfor!7890
·实验地址:http://ip:8080
实验原理
Tomcat配置文件web.xml中,servlet配置了readonly=fasle时,会引发任意文件上传漏洞。 readonly参数默认是true,即不允许delete和put操作,所以通过XMLHttpRequest对象的put或者delete方法访问就会报告http 403错误。但很多时候为了支持REST服务,会设置该属性为false。将readonly参数设置为false时,即可通过PUT方式创建一个JSP文件,并可以执行任意代码。 在Tomcat文件夹下的/conf/web.xml文件中,添加readonly参数,属性值为false,即在114行插入以下内容:
修改配置文件完成后需要重启Tomcat,重启的方式是双击Tomcat目录下的bin目录下的shutdown.bat,再点击startup.bat。 Tomcat任意文件上传(CVE-2017-12615)漏洞影响的Tomcat版本为:
tomcat7.0.0-7.0.81
实验步骤
1、登录操作机,打开浏览器,输入实验地址:http://ip:8080
2、打开桌面的的“Burp”文件夹,双击“BURP.cmd”启动Burp Suite抓包工具
3、切换到“Proxy”代理模块的“Options”,查看Bp的代理,选中该代理,点击左侧的”Edit”,将其端口修改为8088(避免与Tomcat端口冲突)
4、切换到浏览器,选择火狐插件中的代理(配置浏览器的的代理),选中该代理,将其端口也修改为8088,与Bp的代理一致(注:代理名称可以修改也可以不修改)
5、刷新网页,Bp成功抓取数据包
6、鼠标右击,点击”Send to Repeater”(或者快捷键”Ctrl” + “R”),发送数据包到Repeater模块,然后切换到Repeater模块
7、修改数据包,尝试上传jsp脚本文件
8、点击上面的”Send”,发送修改后的数据包,结果返回404,请求被拦截,不能直接上传jsp文件
9、由于文件名的限制,在数据包中添加”%20″(空格的URL编码),绕过限制,再次点击上面的”Send”,返回201,上传成功
10、关闭浏览器代理
11、访问http://ip:8080/hack.jsp,新的脚本文件成功解析
实验总结
掌握文件上传中的Tomcat任意文件上传(CVE-2017-12615)漏洞影响的Tomcat版本以及配置文件,利用Burp Suite工具抓取数据包,将数据包内容修改,请求方式修改为PUT方式,上传新建的jsp脚本文件,文件内容可以任意编写,也可以是木马。上传时结果返回404,请求被拦截,不能直接上传jsp文件,是因为有限制:
-
NTFS文件流
-
文件名相关限制
可以采取一些方法来绕过限制,比如Windows中文件名不能以空格结尾,在文件名后面加空格”%20″,也可以加斜杠”/”。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:建哥聊安全 建哥聊安全《网安实验干货每日分享Tomcat任意文件上传(CVE-2017-12615)-0108》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论