我在 bugcrowd 上的一个私人程序中发现了一个错误。为方便程序隐私,方便读者理解,我将其命名为marzuki.com
marzuki.com 有两个帐户等级,免费和高级,这里没有试用版。用户必须以每月 50 美元的价格购买订阅才能成为高级会员。几周前,我测试了marzuki.com,但错过了注册的端点,注册时出现了这个bug。有一个易受攻击的参数导致攻击者无需支付即可获得高级帐户
OK,我们进入枚举步骤找参数。您可以使用 param miner(现在支持 POST json 参数)。
插件地址:
https://github.com/xnl-h4ck3r/burp-extensions
您可以使用 Logger++ burp 插件查看进度。
您还可以使用 arjun 或其他工具进行参数发现。
非易受攻击的请求
在我运行 param miner 并发现隐藏参数和此升级帐户到高级版后请求,无需支付一分钱
漏洞报告已发送,并在三天内给予赏金
现在我希望你明白为什么检测隐藏参数很重要;它可以帮助您找到 XSS、IDOR、SSRF、权限提升、LFI、Open Redirects 等漏洞。即使在某些情况下 PII 泄漏 ,很多人都错过了。
让我们从方法论开始吧!这很简单“到处猜!”,开个玩笑“不要打挂服务器。”
何时何地进行模糊测试:
每当您看到一个空白页面并得到200 OK响应时。
在常见的请求上,例如:login.php?Fuzz_Here或/login?FUZZ_Here
并且 Uncommon Endpoints 是必须的
例如:/Thisendpointmakesnosense.php?FUZZ或/something?Fuzz
此外,还有在其请求中已经包含许多参数的功能。
我通常将端点提供给 burp 中的 parm-miner 以便在中继器中对其进行测试时进行猜测,如果 param-miner 没有发现任何内容,我会在Burp intruder 或其他工具(如x8或Arjun )中使用一些单词表。在进行模糊测试时,要记住的是限制您正在使用的工具中的参数和线程的数量,并确保程序允许进行模糊测试。
总体要做什么:
选择最吸引人的目标端点。使用单词表,将其发送到 Tool for Fuzzing Params。如果输出中有任何东西,请手动测试 XSS、SSRF、权限提升等。
我遵循下面列出的顺序,但可能会因目标而异。我通常会使用 param-miner 和 Arjun Default Wordlist 找到一些东西
Arjun 所有默认词表:https://github.com/s0md3v/Arjun/tree/master/arjun/db 参数矿工“参数”:https://github.com/PortSwigger/param-miner/blob/master/resources/params 资产注释“parameters_top_1m”:https://wordlists.assetnote.io/ nullenc0de “params.txt”:https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773
您可以将所有这些结合起来制作最终的字典。Github上还有更多;这些只是我经常使用的部分参考!
自定义字典:
可以使用公共字典,但有时需要自定义目标特定字典。现在,当我在大范围内工作或有很多目标要在范围内进行测试时,我通常会使用它。因为某些参数偶尔会在特定的子域中使用,但由于开发者喜欢复制粘贴程序,它们也可能在另一个目标上起作用。
cat urls | unfurl format %q | cut -d "=" -f1 | sort -u > params.txt
现在,这是其中一种方法,但是如果我告诉你有更好的方法呢,好吧,我要与你分享的这个方法是使用 Burp 本身,这个方法的唯一问题是它很慢因为你需要手动爬取网站,但如果你有 Burp Pro,这可以克服。
您将需要getAllParams扩展,您可以将其安装在 Burp Pro中。
安装和配置扩展。
https://github.com/xnl-h4ck3r/burp-extensions
手动或自动抓取目标。
转到 Burp Target 选项卡,选择要为其构建字典的域,右键单击,然后从列表中选择“获取所有参数”
Target -> Extension -> Get All Params
现在,导航到“获取所有参数”选项卡并复制“找到的潜在参数”下显示的所有参数并将它们粘贴到文本文件中。
这些是对我有用的工具;如果你有其他的,你也可以使用它们。
x8:https://github.com/Sh1Yo/x8 Arjun:https://github.com/s0md3v/Arjun param矿工:https://github.com/PortSwigger/param-miner parameth:https://github.com/maK-/parameth
这是一个比较上述前三个工具优劣的文章:
https://sh1yo.art/post/parameter_discovery_tools_comparison/
您也可以使用其他工具,例如 ffuf 甚至是 burp intruder 本身,但我喜欢使用专门为这项工作设计的工具。
参数发现可能非常有用,但许多人忽略或没有意识到它,他们经常忘记或忘记何时执行它。如果您想找到那些隐藏的错误,这可能是一个很好的开始。有了这个,我想结束,我希望你在下一次挖洞中获得意想不到的惊喜。
当你测试一个程序时,不要错过任何功能,我之前在几周前测试过这个程序但错过了注册功能。尝试像普通用户一样浏览,浏览所有可用的功能,然后考虑不应该发生的事情。尝试对任何请求 GET/POST/PATCH/PUT 进行模糊测试。查找隐藏参数是一个好方法。
部分参考来源:medium
由HACK整理翻译,如需转载请注明来源
本文作者:HACK_Learn
本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/183811.html