本章节所需工具burp和curl

curl下载地址:https://curl.haxx.se/download.html

漏洞简介


什么是http方法?

根据HTTP标准,HTTP请求可以使用多种方法,其功能描述如下所示。

HTTP1.0定义了三种请求方法: GET、POST、HEAD

HTTP1.1新增了五种请求方法:OPTIONS、PUT、DELETE、TRACE 、CONNECT

什么是不安全的http方法?

在所有的HTTP方法中,安全界认为PUT、DELETE、TRACE是不安全的,另外WebDAV中的几个方法,RFC 5789中的PATCH方法也被认为是不安全的。(TRACE容易引发XST攻击,PATCH修改资源的部分内容,PUT/DELETE没有认证机制等原因,不仅仅因为它们会产生结果)

不安全的http方法有什么危害?

1、OPTIONS方法,将会造成服务器信息暴露,如中间件版本、支持的HTTP方法等。

2、PUT方法,由于PUT方法自身不带验证机制,利用PUT方法即可快捷简单地入侵服务器,上传Webshell或其他恶意文件,从而获取敏感数据或服务器权限。

3、DELETE方法,利用DELETE方法可以删除服务器上特定的资源文件,造成恶意攻击。

漏洞利用


环境搭建

1、测试环境为:WIN10 64位、Tomcat 8.5.15、curl 7.65、burp 1.7.30

2、在Tomcat 8默认配置中,web.xml文件的org.apache.catalina.servlets.DefaultServlet的

readonly参数默认是true,即不允许DELETE和PUT操作,所以通过PUT或DELETE方法访问,就会报403错误。为配合测试,把readonly参数设为false。

漏洞验证

打开burp抓包,ctrl+R发送到重放模块,修改http方法为OPTIONS,再返回包中发现支持的方法,如下图

漏洞利用

安装curl:https://blog.csdn.net/dear_alice_moon/article/details/79509466

使用方法:https://www.cnblogs.com/hbzyin/p/7224338.html

打开如下图

对目标url进行测试,如下图

PUT上传文件

payload:curl -X PUT http://127.0.0.1:8800/test/1.html -d "1111"

DELETE删除文件

payload:curl -X DELETE http://127.0.0.1:8800/test/1.html

如果不是jsp的站点,我们可以直接上传webshell,如果是JSP站点,

在默认配置下,涉及jsp、jspx后缀名的请求由org.apache.jasper.servlet.JspServlet处理**,除此之外的请求才由org.apache.catalina.servlets.DefaultServlet处理。

刚才将DefaultServlet的readonly设置为false,并不能对jsp和jspx生效。因此,当PUT上传jsp和jspx文件时,Tomcat用JspServlet来处理请求,而JspServlet中没有PUT上传的逻辑,所以会403报错。

绕过限制

tomcat任意文件上传漏洞:影响版本是tomcat7.0.0-7.0.81版本。我这里没装先不试了

利用Tomcat 7的任意文件上传漏洞(CVE-2017-12615)来实现目的,该漏洞**通过构造特殊后缀名,绕过tomcat检测,让它用DefaultServlet的逻辑处理请求,从而上传jsp文件**。具体来说,主要有三种方法,比如shell.jsp%20 、shell.jsp::$DATA 、shell.jsp/

如何修复


如何修复此漏洞?

在配置文件中添加如下代码

        <security-constraint><web-resource-collection><web-resource-name>fortune</web-resource-name><url-pattern>/*</url-pattern><http-method>PUT</http-method><http-method>DELETE</http-method><http-method>HEAD</http-method><http-method>OPTIONS</http-method><http-method>TRACE</http-method></web-resource-collection><auth-constraint></auth-constraint></security-constraint>
  • <security-constraint>用于限制对资源的访问;

  • <auth-constraint>用于限制那些角色可以访问资源,这里设置为空就是禁止所有角色用户访问;

  • <url-pattern>指定需要验证的资源

  • <http-method>指定那些方法需要验证

不安全的http方法相关推荐

  1. 在 Oracle Enterprise Linux 和 iSCSI 上构建您自己的 Oracle RAC 11g 集群

    作者:Jeffrey Hunter 了解如何以低于 2,700 美元的费用在 Oracle Enterprise Linux 上安装并配置 Oracle RAC 11g 第 2 版开发集群. 本指南中 ...

  2. Java面试题大全2021版

    一.Java 基础 JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境. JRE:Java Run ...

  3. Kotlin协程使用,协程使用注意事项,协程中的await方法使用|不使用suspend使用协程

    参见 码云 协程使用方法一 (Dispatchers调度器模式) 指定不同线程.同线程会挂起并阻塞(挂起是不影响主线程执行,阻塞是同样的IO线程会阻塞) withContext(Dispatchers ...

  4. IDEA中将代码块封装为方法,IDEA代码重构快捷键

    IDEA中将代码块封装为方法 选中要转换的代码块,快捷键: Windows快捷键:Alt + Shift + M Mac快捷键:Alt + Command + M 如图:

  5. IDEA自动生成对象所有set方法

    idea中有一款插件能够生成对象所有的set方法,GenerateAllSetter :下载地址 步骤1:将下载好的压缩包放在自己记得的文件夹中,在idea中进行导入 步骤2:在本地选中刚才的压缩包, ...

  6. List元素互换,List元素转换下标,Java Collections.swap()方法实例解析

    Java Collections.swap()方法解析 jdk源码: public static void swap(List<?> list, int i, int j) {// ins ...

  7. java1.8新增超实用Map方法——Map.getOrDefault()和Map.value()方法详解

    1. Map.getOrDefault() 翻译一下官方解释: java.util.Map<K, V> V getOrDefault(Object key, V defaultValue) ...

  8. spring boot项目 中止运行 最常用的几种方法

    spring boot项目 中止运行 最常用的几种方法: 1. 调用接口,停止应用上下文 @RestController public class ShutdownController impleme ...

  9. Java Calendar.add()方法的使用,参数含义。指定时间差。

    cal.add()方法中的参数含义: 第一个参数如果是1则代表的是对年份操作,2是对月份操作,3是对星期操作,5是对日期操作,11是对小时操作,12是对分钟操作,13是对秒操作,14是对毫秒操作. 第 ...

  10. 设置select下拉框不可修改的→“四”←种方法

    设置select下拉框为不可修改的几种方法: 因为select的特殊性,导致它不能像input表单一样简单地设置一个readonly来限制修改,所以,我们需要进行别的操作! 1.为下拉框添加样式,可以 ...

最新文章

  1. Python机器学习:训练Tesseract
  2. 算法:螺旋矩阵 ||
  3. byte转换int时为何与0xff进行与运算
  4. Express请求处理-构建模块化路由
  5. Redis持久化的几种方式——RDB深入解析
  6. P3808,P3796-[模板]AC自动机(简单版/加强版)
  7. java Spring Boot中使用Swagger2构建API文档
  8. 钉钉作弊,被判5年!
  9. 第二次冲刺-站立会议06
  10. Jmeter多机联合产生负载 (转)
  11. jy在线制图系统免费源码丨一秒生成广告横图海报图
  12. 面试问题大全【职场福利】
  13. fuz 1205(小鼠迷宫问题)
  14. java手机游戏ios_我的世界JAVA版本ios版
  15. java编程50_荐非常经典的java编程题全集-共50题(1-10)...
  16. 大学计算机第七版读书笔记(第二章)
  17. linux 内存 内核参数详解,linux系统内核参数说明
  18. 贸易动力带您使用海关数据开发客户
  19. A系列RPG地图编辑器发布,终于可以编辑地图了
  20. 2021年,定个小目标,排名1w以内

热门文章

  1. 阅读类APP提升用户留存的功能分析
  2. 概率论中的联合概率理解
  3. Excel学习:实现满足条件的Excel整行标色
  4. 解决mysql 数据迁移过程中使用 select into或inert into select 批量插入时id使用UUID重复问题(已解决)
  5. 2021年CS保研经历(三):清华大学自动化学院大数据专硕预推免
  6. php xhprof extension,php xhprof使用
  7. 金融科技的下半场:服务边界的“进化论”
  8. arduino 光控灯_Arduino 极速入门系列 - 光控灯(1)- 关于理论和 LED 那些事
  9. 高仿新闻教程-开源框架的简单实现——网易新闻的标题栏(一)
  10. 西游侠侣服务器维护多久,《西游侠侣》职业宠物合理搭配,任务PK事半功倍_37376游戏...