不安全的HTTP方法

一、HTTP方法

HTTP方法是一组用于与web服务器通信的协议命令。

最常被用到的方法是:GET和POST

GET、POST和HEAD是HTTP 1.0定义的三种请求方法。

OPTIONS、PUT、DELETE、TRACE和CONNECT是HTTP 1.1新增的物种方法。

1.GET

GET用于请求已经被URL识别的资源。如果请求的资源是文本,那么就保持原来的样子返回;如果是网关接口那样的程序,则返回经过执行后的输出结果。用于向服务器查询某一些信息。

2.POST

POST方法用于将实体提交到指定的资源,通常导致在服务器上的状态变化或副作用。

GET和POST的区别

(1)GET方法用于信息获取;POST方法是用于修改服务器上资源的请求,只有使用HTTPS才能加密安全。

(2)GET请求可以被缓存;POST方法不能被缓存。

(3)GET请求有长度限制 (IE限制在2KB,Chrome,FireFox浏览器理论上对于URL是没有限制的,真正的限制取决于操作系统本身);POST请求对数据长度没有要求。

(4)GET请求只能进行url编码,而POST支持多种编码方式。

(5)GET参数通过URL传递,POST放在Request body中。

(6)GET请求会被浏览器主动cache,而POST不会,除非手动设置。

(7)GET在浏览器回退时是无害的,而POST会再次提交请求。

GET和POST的相同之处

(1)GET 和 POST,用的都是同一个传输层协议,所以在传输上没有区别。

(2)GET 方法 和 POST都可以传输实体的主体 (但一般不用GET方法进行传输,而是用POST方法;虽然GET方法和POST方法很相似,但是POST的主要目的并不是获取响应的主体内容)。

3.其他不常见方法

二、不安全的HTTP方法及危害

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

1.OPTIONS

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

2.PUT

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

3.DELETE

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

4.TRACE

TRACE方法可以回显服务器收到的请求,主要用于测试或诊断,恶意攻击者可以
利用该方法进行跨站跟踪攻击(即XST攻击),从而进行网站钓鱼、盗取管理员cookie
等。

三、漏洞检测

1.正常访问抓取数据包。

2.修改请求包中的请求方法为OPTIONS,提交。

3.提交后,如果成功,响应包中会出现一个Allow字段,里面列出了URL指定资源所支持的方法列表。


但是在执行完以上步骤,看到响应包中Allow字段包含不安全方法就直接认定系统存在漏洞有些不太严谨,因此可以进一步验证是否真的存在该漏洞。

例如,Allow字段中包含TRACE方法,那么可以将OPTIONS方法改为TRACE再发包。若响应包主题中包含接收到的请求,则证明支持TRACE方法,系统存在不安全的HTTP方法漏洞;反之,发现服务器报错(一般不支持会报错405),则证明不支持TRACE方法,需要进一步验证漏洞是否存在。

四、漏洞利用

可以使用curl对部分方法进行利用,如PUT、DELETE等。

安装curl:

curl - Download

curl使用方法:

https://www.cnblogs.com/hbzyin/p/7224338.html

五、漏洞修复

1.限制PUT、DELETE等危险方法的访问权限。

2.若不需要使用上述危险方法,应关闭不必要的方法,只使用GET、POST。

参考文章

不安全的http方法-CSDN博客

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值