您的位置:首页 > 运维架构 > Tomcat

CVE-2017-12617-Tomcat远程代码执行漏洞复现分析

2020-07-13 05:04 501 查看

CVE-2017-12617-Tomcat远程代码执行漏洞复现分析

一、CVE-2017-12617介绍
如果配置了默认servlet,则在9.0.1(Beta),8.5.23,8.0.47和7.0.82之前的所有Tomcat版本都包含所有操作系统上的潜在危险的远程执行代码(RCE)漏洞,CVE-2017-12617:远程代码执行漏洞。只需参数readonly设置为false或者使用参数readonly设置启用WebDAV servlet false。此配置将允许任何未经身份验证的用户上传文件(如WebDAV中所使用的)。只要JSP可以上传,然后就可以在服务器上执行。在一定条件下,攻击者可以利用这两个漏洞,获取用户服务器上 JSP 文件的源代码,或是通过精心构造的攻击请求,向用户服务器上传恶意JSP文件,通过上传的 JSP 文件 ,可在用户服务器上执行任意代码,从而导致数据泄露或获取服务器权限,存在高安全风险。
在tomcatxxx/conf/web.xml中修改参数值截图:

二、漏洞复现
这次我使用docker+vulhub搭建漏洞环境,在centos7上搭建vulhub的步骤如下:
1、安装docker依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
2、安装docker
yum install docker
3、启动docker
systemctl start docker
4、下载vulhub
https://github.com/vulhub/vulhub/archive/master.zip
5、找到CVE-2017-12615,并进入

6、启动漏洞环境,vulhub的漏洞环境已经搭建好,不需要我们手动修改配置文件。
docker-compose up -d
7、查看服务启动状态

8、测试环境就关闭防火墙啦
systemctl stop firewalld.service/iptables.service
9、使用浏览器访问本机ip:8080,出现以下界面说明环境搭建成功

10、如果不确定漏洞环境搭建是否成功,可以使用扫描器扫描

11、使用burpsuite抓包

12、修改请求,上传木马(修改get为PUT,修改名字,上传大佬的木马),PUT路径要用/结束,写入成功后,会返回201或者200,如果返回404说明没有写/。

13、验证木马是否成功,访问上传路径并拼接命令,结果如下,说明上传成功
环境ip:8080/shell.jsp?&pwd=023&cmd=whoami

三、漏洞修复
1、将Tomcat更新到该漏洞被修复的版本(例如,Tomcat 8.5.23)只能防止攻击者上传JSP。
2、但是readonlyinit-param不应该将false首先设置。如果此参数保留到默认(true),则攻击者无法上传文件。
3、当然也可以在前端(例如WAF)上阻止PUT和DELETE请求。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: