默认字典虽然很好用,但可能会遗漏特定框架或应用程序特有的目录和端点。自定义字典可以让你:
- 针对特定框架的目标路径:像 WordPress、Joomla 或 Django 这样的 CMS 平台通常具有独特的目录结构。
- 适应技术栈:Python 应用可能具有
.py端点,而 Node.js 应用可能暴露.js文件。 - 关注可能的入口点:通过了解技术栈,您可以更准确地猜测敏感目录和文件。
1. 指纹识别技术
首先确定目标网站的技术栈:
- 使用WhatWeb或Wappalyzer等工具来检测框架、编程语言和 CMS。
- 检查 HTTP 标头、cookie 和元标签以获取技术线索。
例如:
- 文件
wp-content夹表示 WordPress。 - 扩展程序
.php建议使用基于 PHP 的应用程序。
2. 收集框架特定路径
研究已识别技术的默认路径、端点和敏感文件。以下是一些示例:
WordPress:
/wp-admin(仪表盘登录区域)/wp-content/uploads(用户上传的文件)/wp-config.php(包含数据库凭据的配置文件)
Django:
/admin(管理员界面)/static(静态文件,例如 CSS 和 JavaScript)/media(用户上传的媒体文件)
Node.js:
/server.js(服务器端入口点)/package.json(关于依赖项和项目设置的元数据)/api/v1(/api/v2常用 API 端点)
探索示例命令:
- 用于
curl手动测试路径:
curl -I <http://example.com/wp-config.php>
curl -I <http://example.com/static>
- 用于
wget递归下载:
wget -r -np <http://example.com/admin>
3. 利用公共存储库
浏览 GitHub 代码库、文档和论坛以获取更多信息。搜索诸如"默认目录结构"或"常用端点"之类的关键词,以查找特定框架的相关信息。
搜索示例:
- 在 GitHub 上搜索:
"wp-config.php" in:path - 寻找
.env例子:"dotenv example"
4. 合并已知词汇表
合并通用列表,例如:
- SecLists:一套全面的安全测试字典。
- FuzzDB:用于模糊测试和发现的专用有效载荷。
然后通过附加框架特定的路径,使用自定义条目来增强它们。
5. 搜索在线词汇表
使用特定技术时,您可以在网上搜索相关的关键词列表。例如:
- 如果目标使用 PHP,请查找 PHP 特有的单词列表:
"PHP directory brute force wordlist"或"PHP endpoint wordlist GitHub"。 - 对于基于Node.js的应用程序,请搜索Node.js相关列表:
"Node.js wordlist GitHub"。
搜索命令示例:
- 使用搜索引擎或 GitHub:
site:github.com "PHP wordlist" site:github.com "Node.js endpoint wordlist"
这些列表通常包含维护良好的特定框架路径,因此是很好的起点。
6. 自动创建单词列表
自动化是高效生成单词列表的关键。以下是具体操作方法:
步骤 1:定义框架路径
framework_paths = ["/admin", "/static", "/login", "/config"]
parameters = [".php", ".js", ".json", ".env"]
custom_wordlist = []
for path in framework_paths:
for param in parameters:
custom_wordlist.append(f"{path}{param}")
with open("custom_wordlist.txt", "w") as file:
file.write("\n".join(custom_wordlist))
步骤 2:使用 Bash 实现自动化
使用 Bash 脚本可以快速进行组合操作:
paths=("/admin" "/static" "/config")
extensions=(".php" ".json" ".env")
for path in "${paths[@]}"; do
for ext in "${extensions[@]}"; do
echo "$path$ext" >> custom_wordlist.txt
done
done
为什么要自动化?
自动化确保:
- 可扩展性:快速生成大量列表。
- 精确度:包含与框架相关的路径和扩展。
- 效率:节省时间并减少人为错误。
7. 测试你的单词表
通过对目标数据库运行字典来验证其有效性:
Gobuster 示例:
gobuster dir -u <http://target-site.com> -w custom_wordlist.txt -x php,js,jsondir -u <http://target-site.com> -w custom_wordlist.txt -x php,js,json
FFUF 示例:
ffuf -u <http://target-site.com/FUZZ> -w custom_wordlist.txt
真实案例:发现隐藏目录
想象一下,你的目标是一个基于 Node.js 的应用程序。通过识别 <script> 标签,你可以发现一些敏感的元数据,例如包版本和依赖项。将这些信息与包含 <script> 、<script> 和/package.json``<script> 的字典结合起来,你就能发现一个未公开的管理面板!/api/v1``/api/v2``/admin
在另一个案例中,攻击 WordPress 网站会发现一个/wp-config.php由于权限不当而可访问的文件。该文件包含数据库凭据,可能为进一步的攻击打开方便之门。
额外提示
- 使用 Burp Suite:从拦截的流量中捕获常见路径和参数。
- 分析错误消息:404 或 403 错误通常会揭示命名规则。
- 关注备份文件:添加诸如
.bak、.old或 之类的扩展名~,以查找遗忘的备份。
最后
创建自定义字典文件不仅仅是猜测目录;它是一种发现隐藏漏洞的策略性方法。通过针对目标技术定制字典文件并利用自动化工具,您可以解锁通用工具可能遗漏的秘密。
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf
客服小蜜蜂(微信:freebee1024)



