Tomcat PUT方法任意写文件漏洞复现(CVE
版本信息
Tomcat测试版本:7.0.79
漏洞影响全部的 Tomcat 版本:Apache Tomcat 7.0.0 - 7.0.79 (windows环境)
漏洞分析
在tomcat官网下载一个Tomcat7的源码压缩包,打开来慢慢看看里面的与。
关键配置
配置文件路径
类处理除了JSP文件以外的静态资源
默认为,在(CVE-2017-12615)的情况下为。
对应的是
类负责JSP文件的汇编与运行
servlet-mapping主要是截获请求的:
这里说明了类型的资源都由处理,与类型的资源都由处理
代码分析
文件路径
受影响的函数
动态调试
进入函数,上传的文件名为,可以看到
因为12w3.jsp/不存在服务器中,所以调用bind函数进行写入。进入resources.bind函数
进入dirContext.bind函数
进入bind函数
传入的name参数为/12w3.jsp/,在File函数中会将name中的/去除,进入File函数进行查看
child==/12w3.jsp/,由fs.normalize函数处理,进入fs.normalize函数
normalize(path)函数中调用normalize(path, len, off)函数对/进行处理,进入normalize(path, len, off)函数
normalize(path, len, off)函数对path处理完后,返回\12w3.jsp
从函数中出来,把传进rebind函数,进入函数
在函数中调用函数获得完整路径
将文件内容写入文件
上传完成。
漏洞利用
访问Tomcat主页,抓包
右击,选择
修改红框中的内容:
点击发送。查看,文件创建成功。
查看Tomcat根目录,多了一个,上传成功。
参考文章
配置Tomcat7:https://www.freebuf.com/articles/others-articles/258885.html
IDEA远程调试Tomcat:https://www.freebuf.com/sectool/258891.html
利用PUT方法的多种方法:https://wh0ale.github.io/2018/12/23/2018-12-23-利用PUT方法的多种方法/
servlet-mapping干什么用的:https://zhidao.baidu.com/question/538577773.html
seebug:https://paper.seebug.org/399/