01 漏洞描述

HTTP | HTTP报文》中介绍了HTTP的请求方法。在这些方法中,HTTP定义了一组被称为安全方法的方法:GET、HEAD、OPTIONS、TRACE,这些方法不会产生什么动作,不会在服务器上产生结果,只是简单获取信息。相对的,能产生动作的方法就会被认为是不安全的HTTP方法。

注意,安全方法不一定什么动作都不执行,比如在登陆时用GET方法传输数据,这个时候GET方法也会产生动作。就比如钱是用来花的,你硬要用来擦屁屁,这也没办法。

 

 

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

 

 

02 漏洞检测

不安全的HTTP方法漏洞检测,分为两步:查询资源支持的方法、验证方法是否真的支持。

查询

在之前的文章里提到过,OPTIONS请求方法可以查询URL指定的资源支持哪些方法。

首先正常请求,抓包,然后将请求包中的请求方法修改为OPTIONS,提交,如果成功,响应包中就会出现一个Allow首部字段,里面列出了URL指定资源所支持的方法列表。

 

 

执行到这一步,就出现这么一种现象,有的校友在执行OPTIONS请求后,发现响应包的Allow字段中包含了PUT、DELETE等不安全方法,就直接认定系统存在漏洞。在我看来,这是不严谨的。有时候Allow字段提示支持,但实际上并不支持,因此需要进一步验证该资源是否真的支持不安全的HTTP方法。

验证

查询阶段显示,支持TRACE方法。那我们将OPTIONS方法修改为TRACE方法试试,如果响应包主体中包含接收到的请求,则证明支持TRACE方法,系统存在漏洞。

 

 
 

 

发现服务器报错,证明并不支持TRACE方法。(不支持一般会报405)

不安全HTTP方法漏洞的检测大概就是这个流程,其余不安全方法在《HTTP | HTTP报文》中介绍过,检测的时候只是利用方法的特性而已,这里就不再赘述。

不过要注意的是,在验证PUT和DELETE的时候,不要在原有资源上进行操作,一定要指定一个不存在的资源,比如先PUT一个文件上去,然后DELETE刚才创建的文件,只要证明支持不安全的HTTP方法即可,切记不可修改和删除服务器原有文件

另外,PUT还可以和WebDAV扩展中的COPY/MOVE配合,PUT上传文件,COPY/MOVE修改文件位置和类型。

 

 
 

 

具体怎么用,请自行百度,点到即止。

03 漏洞修复

修改配置文件,禁用不安全的HTTP方法。

作者:安全小白团
链接:https://www.jianshu.com/p/f1e58395cb44
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

(九)不安全的HTTP方法的更多相关文章

  1. JSP数据交互——九大内置对象及其方法详解(一)

    ①既然说到JSP内置对象,那么什么是JSP内置对象呢? 解析:JSP内置对象,就是在编写JSP页面时,不需要做任何声明就可以直接使用的对象. 如下代码片段:  <% int[]  value  ...

  2. 通过编写串口助手工具学习MFC过程——(九)自动识别串口的方法

    通过编写串口助手工具学习MFC过程 因为以前也做过几次MFC的编程,每次都是项目完成时,MFC基本操作清楚了,但是过好长时间不再接触MFC的项目,再次做MFC的项目时,又要从头开始熟悉.这次通过做一个 ...

  3. vue第十九单元(mapState mapMutations等方法的使用)

    第十九单元(mapState mapMutations等方法的使用) #课程目标 1.熟练使用mapState 2.熟练使用mapGetters 3.熟练使用mapActions 4.熟练使用mapM ...

  4. php学习九:存取器&魔术方法

    当声明属性的时候用到了private,那么的话只能本类中才能访问此属性,其他地方无法使用,这个时候需要给外界提供一些方法来使外界访问 方法一:存取器: 可以提供一个public的方法来使外界对类里面的 ...

  5. JSP九大内置对象及其方法

    内置对象包括 request response pageContext session application out config page exception 1.out (1)clear()清除 ...

  6. 要件审判九步法及其基本价值 z

    要件审判九步法及其基本价值 发布时间:2014-12-24 14:29:05 作者介绍 邹碧华,男,1967年出生于江西奉新,毕业于北京大学法学院,获法学博士学位.上海市高级人民法院副院长.2006年 ...

  7. Arcgis for js开发之直线、圆、箭头、多边形、集结地等绘制方法

    p{ text-align:center; } blockquote > p > span{ text-align:center; font-size: 18px; color: #ff0 ...

  8. javascript字符串方法总结

    一.单引号字符串内部可以使用双引号,双引号字符串内部也可以使用单引号 "hello 'world'" 'welcome "to" js' 二.多行和转义 如果要 ...

  9. Bash 脚本编程语言中的美学与哲学

    我承认,我再一次地当了标题党.但是不可否认,这一定是一篇精华随笔.在这一篇中,我将探讨 Bash 脚本语言中的美学与哲学. 这不是一篇 Bash 脚本编程的教程,但是却能让人更加深入地了解 Bash ...

  10. db2 import export load

    DB2中所谓的数据移动,包括: 1. 数据的导入(Import) 2. 数据的导出(Export) 3. 数据的装入(Load) 导入和装入都是利用DB2的相关命令把某种格式的文件中的数据保存到数据库 ...

随机推荐

  1. springmvc 校验---spring校验

    springmvc提供了灵活的可拓展的校验方式,根据不同的项目可选择适合的校验方式,首先介绍下springmvc中内置的校验实现方式! 1.实现 org.springframework.validat ...

  2. 深入理解Java虚拟机第三版,总结笔记【随时更新】

    最近一直在看<深入理解Java虚拟机>第三版,无意中发现了第三版是最近才发行的,听说讲解的JDK版本升级,新增了近50%的内容. 这种神书,看懂了,看进去了,真的看的很快,并没有想象中的晦 ...

  3. 关于python中第三方库安装方法和问题解决

    一.安装方法 方法一: 1.管理员身份启动命令行(运行--->cmd) 2.pip install 库的绝对路径和库的详细名称 :或者运用cd命令跳转到下载好的库所在的位置然后pip insta ...

  4. CF915D Almost Acyclic Graph

    题目链接:http://codeforces.com/contest/915/problem/D 题目大意: 给出一个\(n\)个结点\(m\)条边的有向图(无自环.无重边,2 ≤ n ≤ 500, ...

  5. ShoneSharp语言(S#)的设计和使用介绍系列(9)— 一等公民“函数“爱炫巧

    ShoneSharp语言(S#)的设计和使用介绍 系列(9)— 一等公民“函数“爱炫巧 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/Shon ...

  6. 软链接 vs. 硬链接

    ​链接大家都用过,比如 Windows 中的快捷方式就是一种链接,可是 Linux 里又分硬链接和软链接,它们表示什么意思,又有什么区别呢,本文来给大家做一个解释. Inode 索引节点 要想理解硬链 ...

  7. jsonp跨域封装

    一.什么是同源政策? 同源策略是指在Web浏览器中,允许某个网页脚本访问另一个网页的数据,但前提是这两个网页必须有相同的URI.主机名和端口号,一旦两个网站满足上述条件,这两个网站就被认定为具有相同来 ...

  8. MySQL 8.0用户及安全管理

    用户的功能 登录数据库 管理数据库对象 用户的组成 用户名@'白名单' 白名单: % 10.0.0.10 .% 10.0.0.5% 10.0.0.0/255.255.254.0 oldguo.com ...

  9. 3D视觉基础(基本原理及3D传感器基本参数)

    本人所在行业属于3D视觉方向,因此最近也是学习了很多3D视觉的知识,这次专门总结一下. 传统工业机器视觉中,2D指的是X方向加Y方向,那么3D视觉自然就是加了一个Z方向.目前我接触到的公司产品是3D激 ...

  10. Linux学习(二):makefile

    编译命令: gcc -o exefile src.c (将src.c编译,链接为exefile可执行文件) gcc -o obj.o -c src.c (将src.c编译为obj.o目标文件) mak ...