白帽故事 · 2023年8月9日 0

“演绎黑客之术:$2000引爆响应操控之力”

题外话:一年一度的国内安全圈的“大狂欢”今天正式拉开帷幕,你参与其中了吗?

背景介绍:

今天的分享来自国外一名ID为 ELgllad 的白帽子,让我们来看看他是如何发现和利用漏洞从而获得赏金的。

由于漏洞报告尚未公开,暂将目标网站统称为:member.redacted.com

故事开始:

在“https://member.redacted.com/”中,员工可以创建自己的帐户,但只是创建帐户,在雇主同意此注册之前,用户无法在网站上执行任何操作。

在这种情况下,就需要寻找更多的端点,在注册成功后的端点为: interview/user/needEmployer

那么在哪里可以找到更多端点呢?是的,首当其冲的就是 javascript 文件!所以分析 js 文件后成功发现了一些端点:

/dashboard/
/dashboard/myPlansModel
/user/profileMode/
/user/editProfile/
/interview/cart/
/interview/shop/

但是直接访问这些端点的话,服务器会重定向到第一个端点:

白帽小哥决定尝试其它方式来访问这些端点。

首先要明白用户的权限是什么,用户只能从 /user/editCredentials 端点更改自己的电子邮件和密码,但是 /user/editProfile 端点明显拥有更强大的权限。

因此,基于这一点,来看看请求和响应过程中都发生了什么。

发现端倪:

通过进一步了解,发现下面的API端点是负责授权和帐户设置的:

在看到任何 false 值后,将其更改为 true 看看会发生什么,因此从响应包中将所有 false 更改为 true 。页面显示拥有了更多的功能,如商店、购物车和编辑个人资料等。

这不是妥妥一个绕过注册漏洞吗?,但是在点击购物车或编辑个人资料等功能后,网站再次重定向到了https://member.redacted.com/interview/user/needEmployer

那么来看看点击商店或购物车等功能后,后端服务器的响应是怎样的。


HTTP/1.1 403
Date: Sat, 05 Aug 2023 17:38:55 GMT
Content-Type: application/json;charset=UTF-8
….

[{“path”:null,”code”:”forbidden”,”description”:null}]

响应标头给出了 403,并在响应正文中显示了“禁止”。

再次尝试将响应包中的 403 → 200 OK,并删除所有响应正文,看看会怎样。

成功拥有了所有权限:使用所有功能、更改名称、上传文件、购买、创建计划等。

但要访问任何其他函数或端点,需要每次都替换响应包,因此白帽小哥在 burpsuite 中使用“match and replace”来自动处理所有响应,规则流程如下:

1st.
Type: Response Body
Match: false
Replace: true
2nd.
Type: Response Body
Match: [{"path":null,"code":"forbidden","description":null}]
Replace:
3nd.
Type: Response Header
Match: 403
Replace: 200 OK

最后自然是提交漏洞报告,等待赏金确认了。

你学废了么?如果觉得还不错的话,欢迎一键三连~