发现隐藏参数:高级枚举技术指南

本文详细介绍了五种发现隐藏参数的高级方法,包括HTML输入字段分析、JavaScript文件枚举、搜索引擎利用、参数模糊测试以及参数重用技术,并提供了自动化工具推荐和实战技巧。

发现隐藏参数:高级枚举指南

侦察在漏洞赏金狩猎中扮演着不可或缺的角色,而隐藏参数的发现更为关键,因为它们通常缺乏足够的验证。这类参数往往更容易受到常见注入漏洞的影响,如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的另一种方法,包括与您的目标相关的参数。尽管这种方法众所周知,但自动化它很困难,使得大多数研究人员跳过通过搜索引擎搜索未发现的内容。

一个简单的搜索可能会产生数十个新的潜在参数,您可以在测试时尝试:

1
site:.example.com inurl:? || inurl:&

您可以将同样的方法应用于任何其他主要搜索引擎或平台,包括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日
继续阅读

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计