Tomcat代码执行漏洞(CVE-2017-12615)

漏洞描述

2017年9月19日,Apache Tomcat官方确认并修复了两个高危漏洞,漏洞CVE编号:CVE-2017-12615和CVE-2017-12616,其中 远程代码执行漏洞(CVE-2017-12615) 当 Tomcat 运行在 Windows 主机上,且启用了 HTTP PUT 请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求向服务器上传包含任意代码的 JSP 文件。之后,JSP 文件中的代码将能被服务器执行。

影响版本

Apache Tomcat 7.0.0 - 7.0.79(7.0.81修复不完全)

环境搭建

操作系统:Windows10
操作环境: apache-tomcat-7.0.79、jdk-8u301-windows-x64
漏洞版本: 7.0.79
搭建过程:
(1)安装JDK
1)双击jdk-8u301-windows-x64进行JDK安装
Tomcat代码执行漏洞(CVE-2017-12615)_第1张图片
2)默认下一步
Tomcat代码执行漏洞(CVE-2017-12615)_第2张图片
3)默认下一步
Tomcat代码执行漏洞(CVE-2017-12615)_第3张图片
4)安装完成
Tomcat代码执行漏洞(CVE-2017-12615)_第4张图片
5)右击“此电脑”选择“属性”
Tomcat代码执行漏洞(CVE-2017-12615)_第5张图片
6)选择“高级系统设置”
Tomcat代码执行漏洞(CVE-2017-12615)_第6张图片
7)选择“环境变量”
Tomcat代码执行漏洞(CVE-2017-12615)_第7张图片
8)设置jdk环境变量,新建系统变量,取名为“JAVA_HOME”,变量值为JDK安装路径,这里是“C:\Program Files\Java\jdk1.8.0_301”,点击“确定”
Tomcat代码执行漏洞(CVE-2017-12615)_第8张图片
9)选择“PATH”,添加“%JAVA_HOME%\bin”,点击“确定”,至此JDK安装完成
Tomcat代码执行漏洞(CVE-2017-12615)_第9张图片
(2)下载apache-tomcat-7.0.79(http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.79/bin/apache-tomcat-7.0.79-windows-x64.zip),解压放在任意目录下,这里是放在E盘中
Tomcat代码执行漏洞(CVE-2017-12615)_第10张图片
(3)打开Tomcat安装目录下的conf文件夹,编辑并保存web.xml文件。配置文件中添加readonly设置为false时,目的是启用PUT和DETELE方法
Tomcat代码执行漏洞(CVE-2017-12615)_第11张图片
(4)打开Tomcat安装目录下的bin文件夹,双击“startup.bat”,开启服务
Tomcat代码执行漏洞(CVE-2017-12615)_第12张图片
(5)访问环境:http://192.168.17.140:8080,若出现下图界面,则说明环境搭建成功
Tomcat代码执行漏洞(CVE-2017-12615)_第13张图片

漏洞复现

(1)访问http://192.168.17.140:8080/,使用burpsuit工具进行抓包,并将请求包发送至Repeater
Tomcat代码执行漏洞(CVE-2017-12615)_第14张图片
(2)将请求包GET方式改为PUT方式,上传ceshi.jsp,内容为“Hello Word”,点击发送,发现服务器返回“201”
Tomcat代码执行漏洞(CVE-2017-12615)_第15张图片
(3)访问刚上传的ceshi.jsp文件,发现可访问,从而确定存在CVE-2017-12615漏洞
Tomcat代码执行漏洞(CVE-2017-12615)_第16张图片
(4)接下来上传木马backdoor.jsp,如图所示上传成功
Tomcat代码执行漏洞(CVE-2017-12615)_第17张图片
(5)使用冰蝎连接shell,密码为“rebeyond”
Tomcat代码执行漏洞(CVE-2017-12615)_第18张图片
(6)成功连接shell,并在文件管理中发现刚才上传的两个文件
Tomcat代码执行漏洞(CVE-2017-12615)_第19张图片
(7)在冰蝎-命令执行模块中,执行“whoami”,发现得到的是管理员administrator用户
Tomcat代码执行漏洞(CVE-2017-12615)_第20张图片
(8)在文件管理模块上传“1.bat”(目的开启3389),在命令执行模块执行该文件

1.bat内容:

echo DO ALL IN CMD!
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp" /v PortNumber /t REG_DWORD /d 3389 /f
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v PortNumber /t REG_DWORD /d 3389 /f

Tomcat代码执行漏洞(CVE-2017-12615)_第21张图片
Tomcat代码执行漏洞(CVE-2017-12615)_第22张图片
(9)通过执行“netstat -ano”发现3389端口已开启
Tomcat代码执行漏洞(CVE-2017-12615)_第23张图片
(10)通过“net user administrator hacker”命令,修改管理员密码
Tomcat代码执行漏洞(CVE-2017-12615)_第24张图片
(11)在攻击者环境中开启远程桌面连接192.168.17.140,最终攻击攻击成功
Tomcat代码执行漏洞(CVE-2017-12615)_第25张图片
Tomcat代码执行漏洞(CVE-2017-12615)_第26张图片

修复建议

临时修复建议:

用户可以禁用PUT方法来防护此漏洞,操作方式如下:
在Tomcat的web.xml 文件中配置org.apache.catalina.servlets.DefaultServlet的初始化参数


readonly
true

确保readonly参数为true(默认值),即不允许DELETE和PUT操作。

你可能感兴趣的:(vulhub漏洞复现,tomcat,windows,java)