发现隐藏参数:高级枚举指南
侦察在漏洞赏金狩猎中扮演着不可或缺的角色,而隐藏参数的发现更为关键,因为它们通常缺乏足够的验证。这类参数往往更容易受到常见注入漏洞的影响,如SQL注入、XSS、IDOR甚至命令注入。
本文将介绍五种检测潜在隐藏输入参数的方法,包括帮助您大规模自动化整个过程的开源工具。
隐藏参数是如何产生的?
在我们深入探讨五种发现隐藏参数的方法之前,必须首先了解它们是如何产生的。许多开发人员无意识地依赖隐蔽性作为防御机制。他们认为,如果参数没有在文档中记录或在Web应用程序界面中使用,攻击者就不会找到(请求体或查询)参数。这在以下情况中尤其常见:
- 开发过程中留下的调试参数(如缓存绕过参数)
- 仅内部或管理员功能参数(如跟踪参数)
- 遗留API端点和应用程序路由
- 任何其他不面向最终用户但仍可被任何人访问的未记录参数
通过本文记录的方法,我们将能够识别任何缺乏足够验证且最终用户可以访问的隐藏参数。
1. HTML输入字段
发现更多参数的最直接方法是抓取每个HTML元素的’id’和’name’属性,包括非表单输入字段。这通常通过爬取目标并解析属性值来完成。可以专门部署自动化工具如GoSpider和GetAllParams(GAP)来完成此任务。
在以下简化示例中,我们可以检索到两个参数:‘password’和’user_id’。一个来自可见的输入字段,另一个用于反映用户ID。
在Burp Suite中高亮显示隐藏表单输入字段
像Burp Suite和ZAProxy这样的代理拦截器允许您高亮显示隐藏输入字段。由于HTTP是无状态的,开发人员经常使用隐藏输入字段来帮助在Web应用程序的页面加载之间保存数据。基本上,这是注入我们任何SQLi、XSS或其他payload字符串的理想位置。
2. JavaScript文件枚举
我们都知道JavaScript文件是漏洞赏金猎人的宝库,因为它们包含对API端点、应用程序路由以及输入参数的多个引用。检查JavaScript文件并寻找解析和检索参数值的特定函数调用是关键。
在下面的简化示例中,我们可以发现几个请求体参数,包括’type’查询参数。
变量名
除了在预定义的HTTP请求或解析函数中查找潜在参数外,您还可以尝试收集变量名列表,并将它们作为请求体或查询参数进行请求!
拦截客户端参数
检测新参数的另一种方法是在客户端拦截它们。像Eval Villain这样的工具允许您拦截并在提供的输入参数被DOM处理时获得通知。这种行为通常表明可能存在基于DOM的漏洞,如基于DOM的跨站脚本(XSS)。
3. Google/GitHub/Wayback Machine枚举
Google dorking是执行侦察并找到更多有趣URL的另一种方法,包括与您的目标相关的参数。尽管这种方法众所周知,但自动化它很困难,使得大多数研究人员跳过通过搜索引擎搜索未发现的内容。
一个简单的搜索可能会产生数十个新的潜在参数,您可以在测试时尝试:
|
|
您可以将同样的方法应用于任何其他主要搜索引擎或平台,包括Bing、DuckDuckGo、Yandex甚至GitHub!
使用互联网档案馆获取更高级的功能
互联网档案馆(也称为Wayback Machine)可以帮助您发现更多参数,因为它索引了互联网上几乎所有网页的多个版本。使其成为一个很好的工具,帮助您找到例如更多带有(查询)参数的索引URL。
要使用WaybackMachine查找参数,请访问web.archive.org并搜索您的目标。然后,过滤包含查询参数的索引URL。
提示! 找到了一个有趣的JavaScript文件?尝试在Wayback Machine上查看索引版本,以潜在地找到更多(遗留)参数!深入了解高级侦察技术!
4. 参数模糊测试
参数模糊测试是发现隐藏和未引用参数的最准确和可扩展的方法。通过观察可能由参数引起的响应变化,您可以准确了解某个参数是否被后端处理。
幸运的是,也有多个工具可用于自动化此任务,如Ffuf、Arjun、x8、ParamMiner等。主要困难来自于您用于暴力破解的单词表。
通常,通过考虑多个应用程序相关因素(如命名约定、本地化、编程语言或框架)创建的自定义单词表,比通用参数单词表表现更好。
然而,更推荐结合使用自定义单词表和包含最常用参数名的通用单词表,这样可以提供更准确的结果。
提示! 自定义单词表可以用于任何类型的内容发现,包括未引用端点和应用程序路由的枚举!阅读我们的深入文章,了解如何为您的特定目标制作自己的定向单词表!
5. 参数重用
在某些情况下,查询和请求体参数会被重用并在多个应用程序路由和API端点中被接受。ZAProxy和Burp Suite都提供了您可以轻松导出和解析的爬取历史记录。尝试将一些解析出的参数用于不同的端点总是值得尝试的。
提示! 如果您的目标有移动应用程序,请确保检查源代码,并查找指向包含参数的Web应用程序的URL或其他链接!
自动化工具
自动化工具可以极大地帮助加速您的重复扫描任务,包括隐藏参数的发现。以下是几个免费的开源工具(无特定顺序),可以帮助您被动和主动枚举任何未引用的输入参数。
Arjun
Arjun是一个流行的开源、基于Python的参数发现工具。它支持多种内容类型和HTTP请求方法,非常适合在多种上下文中发现参数。Arjun可在GitHub上获取:https://github.com/s0md3v/Arjun
x8
x8是一个极快的、基于Rust的隐藏参数发现套件。凭借其广泛的配置支持和使用自定义单词表的能力,使得执行任何类型的参数发现扫描变得容易。x8可在GitHub上获取:https://github.com/sh1yo/x8
ParamMiner
ParamMiner是一个简单易用的插件,用于在Burp Suite中主动查找未引用的参数。它还附带几个广泛的单词表,帮助您快速开始新的暴力破解扫描。ParamMiner可在BApp商店和GitHub上获取:https://github.com/portswigger/param-miner
GetAllParams (GAP)
GetAllParams (GAP)是一个替代的Burp Suite扩展,能够主动和被动检测新参数。该扩展还可用于生成自定义单词表,使其成为不可或缺的工具。GAP可在GitHub上获取:https://github.com/xnl-h4ck3r/GAP-Burp-Extension
结论
无论您处理任何类型的目标,侦察都至关重要。识别隐藏的输入参数更为关键,可以为您提供优势,特别是因为这些参数经常被遗忘(或故意隐藏)且缺乏足够的验证。
所以,您刚刚学会了如何发现更多隐藏参数以找到更多漏洞…现在是时候测试您的技能了!您可以从在易受攻击的实验环境中练习开始,或者…浏览我们在Intigriti上的70多个公共漏洞赏金计划,谁知道呢,也许在您的下一次提交中就能获得赏金!
立即开始在INTIGRITI上进行黑客攻击
上一篇文章
创建用于漏洞赏金目标的自定义单词表:完整指南
下一篇文章
初学者的Google dorking:如何使用Google搜索找到更多漏洞
您可能还喜欢
识别流行反向代理后的服务器原始IP
2025年7月29日
继续阅读
初学者的GitHub dorking:如何使用GitHub搜索找到更多漏洞
2025年7月13日
继续阅读
2025年利用Log4Shell(Log4J)
2025年6月29日
继续阅读