我不能透露漏洞赏金计划的名称,因此在这种情况下,它会被称为 redacted.com。该网站使用基于 cookie 的身份验证和授权机制来验证服务器端的合法请求。
敏锐地观察 cookie 中存在的参数。存在用户身份参数“c=1234567”。整个细微差别都围绕着相同。
我做了什么?
几乎每一个E-CO米多做贡献的网站有一个部分,用户可以添加/删除/更新他们的地址。该地址反映在以下两个端点上。
-
在用户个人资料部分(https://www.redacted.com/profile/address)
-
在清除购物车项目的同时完成订单的最后步骤。(https://www.redacted.com /checkout/adv/address/view) —一个隐藏的 JSON 端点。
开发人员通常更多地强调对用户来说很容易实现的端点。因此,没有发现第一个端点的运气,因为它是安全可靠的。
继续第二个端点,尝试更改 customer_id,但没有奏效。此外,尝试过参数污染,但没有奏效。
后来我试图找出网络服务器验证会话请求的依据。
根据我的调查,redacted.com 通过 cookie 使用以下参数验证会话:-
-
ud=XXXXXXX;
-
c = CUSTOMER_ID;
-
XSSRF-TOKEN= XXXXXXXX;
-
sessid = XXXXXXXXXX;
GET /checkout/adv/address/view HTTP/1.1
但是在以下端点上,它变得非常棘手。如果我们删除“ sessid ”和“ XSSRF-Token ”参数,然后将任何请求发送到服务器,它会将其视为有效请求并获取请求的内容。
因此,如果我在对受害者的客户 ID 的请求中操纵攻击者的客户 ID 参数。Web 服务器将获取受害者个人帐户详细信息的内容。
注意:Web 服务器会验证“Ud”参数是否存在,但不会验证“Ud”参数的内容。
因此,发送到服务器的最终请求如下所示:
最终回应
响应 JSON 数据与很长的 HTML 元素混杂在一起,因此无法清楚地看到 PII 数据。但是,我在下面附上了从上述回复中检索到的个人数据的干净形式。
从响应中提取的 PII 数据
请注意 CSRF_token 的存在,现在事情会很有趣。到目前为止,我只能读取其他人的私人数据,但无法写入。这是我如何找到方法的。
地址部分
存在编辑/更新地址的功能。发送到服务器的 post 请求由与上述相同的 cookie 组成。所以没有任何进一步的延迟,我用受害者的 customer_ID 操纵了 cookie。但是没有用!!!!
后来我意识到这次授权不是基于cookie的。它基于更新地址时在 POST 请求中传递的 CSRF-token 的值。
请注意,我已经拥有受害者的 CSRF 令牌。因此,我替换了令牌并更新了受害者的详细信息。
因此,通过这种方式,我可以远程读取/写入近 300 万用户的个人数据。
本文始发于微信公众号(网络侦查研究院):我如何找到对电子商务网站 300 万用户个人数据的读/写访问权限?
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论