干货 | SRC和漏洞挖掘中的隐藏参数测试手法和工具总结
2022-7-4 19:47:26 Author: mp.weixin.qq.com(查看原文) 阅读量:34 收藏

我在 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 进行模糊测试。查找隐藏参数是一个好方法。


推荐阅读:

实战 | 记一次对邻居家的渗透测试

实战 | 记一次赏金20万美元的PayPal漏洞挖掘

实战 | 记一次观看YouTube视频,收获一枚价值4300美金的SQL注入

实战 | WAF-Bypass之SQL注入绕过思路总结

点赞,转发,在看

部分参考来源:medium

由HACK整理翻译,如需转载请注明来源


文章来源: http://mp.weixin.qq.com/s?__biz=MzI5MDU1NDk2MA==&mid=2247506381&idx=1&sn=f28ea42e9eed8b3bc5278ecdd1e2ba4b&chksm=ec1c8cf2db6b05e412c7ef50b59e0e1136b0de8e64107476a3b229c71caf0c3a736e05c01f53#rd
如有侵权请联系:admin#unsafe.sh