web安全/渗透测试--10--不安全的HTTP方法

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wutianxu123/article/details/82634760

3.9 不安全的HTTP方法

1、漏洞描述:

不安全的HTTP方法一般包括:TRACE、PUT、DELETE、COPY等。其中最常见的为TRACE方法可以回显服务器收到的请求,主要用于测试或诊断,恶意攻击者可以利用该方法进行跨站跟踪攻击(即XST攻击),从而进行网站钓鱼、盗取管理员cookie等。其他说明方式如下所示:

方法 解释
PUT 向指定的目录上传文件
DELETE 删除指定的资源
COPY 将指定的资源复制到Destination消息头指定的位置
MOVE 将指定的资源移动到Destination消息头指定的位置
CONNECT 客户端使用Web服务器作为代理
PROPFIND 获取与指定资源有关的信息,如作者、大小与内容类别
TRACE 在响应中返回服务器收到的原始请求
DEAD 返回报文的头部
OPTIONS 客户端询问服务器可以提交哪些请求方法
GET 获取服务器资源
POST 传输实体文本

2、检测方法

1、使用抓包软件抓取数据包
2、拦截数据包,将HTTP方法修改为GET、POST、HEAD、PUT、DELETE、TRACE等
3、分别发送数据包到服务器
4、查看每种HTTP方法的返回结果。如果服务器完全忽略请求或者返回错误,则该项是安全的。如果服务器有其他任何返回,则服务器响应了不必要的方法,是不安全的。注意:GET和POST响应是正常的,其他的不正常。

3、修复方案
以下为针对不安全的HTTP方法中的TRACE相关的修复建议:

1、中间件为apache服务器

a、利用apache服务器的rewrite功能,对TRACE请求进行拦截。编辑httpd.conf文件增加下面内容:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
RewriteRule .* - [F]

b、更详细的解释如下:
LoadModule rewrite_module modules/mod_rewrite.so     #首先激活rewrite模块
RewriteEngine On                                     #启用Rewrite引擎
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)         #对Request中的Method字段进行匹配:^TRACE 即以TRACE字符串开头
RewriteRule .* - [F]                                 #定义规则:对于所有格式的来源请求,均返回[F]-Forbidden响应。

c、对于1.3.34以上和2.0.55以上版本的apache服务器,配置文件增加:TraceEnable off

d、或者用如下方法:

e、在项目或tomcat下的web.xml中,添加如下配置:
<!-- 关闭不安全的HTTP方法   -->
<security-constraint>
    <web-resource-collection>
        <web-resource-name>任意名称</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>
<login-config>
    <auth-method>BASIC</auth-method>
</login-config>

2、中间件为Microsoft IIS
如果你使用的是Microsoft IIS,使用URLScan工具禁用HTTP TRACE请求,或者只开放满足站点需求和策略的方式。安装URLScan(URLScan是微软提供给IIS6的路径重定向工具。
在这里下载: http://www.iis.net/learn/extensions/working-with-urlscan/urlscan-3-reference),在URLScan.ini中配置,只允许GET、HEAD和POST这三个常用命令(UseAllowVerbs=1)。

3、中间件为Sun ONE Web Server releases 6.0
如果你使用的是Sun ONE Web Server releases 6.0 SP2或者更高的版本,在obj.conf文件的默认object section里添加下面的语句:

<Client method="TRACE">
    AuthTrans fn="set-variable"
    remove-headers="transfer-encoding"
    set-headers="content-length: -1"
    error="501"
</Client>

4、Sun ONE Web Server releases 6.0 SP2
如果你使用的是Sun ONE Web Server releases 6.0 SP2或者更低的版本,编译如下地址的NSAPI插件:http://sunsolve.sun.com/pub-cgi/retrieve.pl?doc=fsalert%2F50603

4、其他说明
由于不同的Web服务器支持的HTTP协议版本不同,如果系统不支持HTTP/1.0,那么步骤4返回“HTTP/1.0 400 Bad Request”;这种情况下,应该更改步骤4的输入行为OPTIONS / HTTP/1.0

展开阅读全文

没有更多推荐了,返回首页