构建隐藏目录字典集是红队信息收集与目录爆破环节的核心基础,字典的精准度直接决定扫描效率与漏洞发现概率。相比于直接使用公开字典的“广撒网”模式,“通用基础+目标专属+规则生成+动态迭代”的构建思路,能大幅减少无效请求、规避WAF拦截、提升高危路径命中概率。本文从底层逻辑、实操步骤、工具选型到调优策略,全方位拆解隐藏目录字典集的构建方法,兼顾入门易用性与红队实战前瞻性。
一、构建字典集的核心逻辑与前置准备
1. 核心目标
隐藏目录字典集的核心价值,是覆盖通用高频路径、框架/技术栈专属路径、目标资产自定义路径、备份/临时/敏感文件路径四大类。最终实现“低冗余、高精准、分场景适配”,既避免大量无效请求暴露攻击痕迹,又能精准命中后台管理、配置文件、数据库备份等高价值路径。
2. 前置工具与资源储备
字典构建不是凭空创作,而是“站在巨人肩膀上”的定制化加工,提前准备以下工具与资源能事半功倍:
- 基础字典库(必选)
- SecLists:目前最全面的渗透测试字典库,GitHub地址
danielmiessler/SecLists,优先选用Discovery/Web-Content目录下的通用目录、语言专属目录(如php.txtjsp.txt),Web-Shells目录下的框架专属路径,Files/CommonBackups.txt中的备份文件后缀。 - dirsearch/ffuf自带字典:两款主流目录扫描工具的内置字典,经过实战验证,覆盖高频路径且冗余度低,适合作为基础打底。
- FuzzDB:专注于模糊测试的字典库,包含大量罕见但高危的配置文件、临时目录路径,适合补充“冷门高价值”条目。
- SecLists:目前最全面的渗透测试字典库,GitHub地址
- 生成与处理工具(核心)
- pydictor:轻量级字典生成工具,支持自定义字符集、前缀后缀拼接、规则组合,适合生成目标专属变体路径。
- crunch:高性能字符组合生成器,可指定字符集、长度范围,用于生成数字、字母组合的随机目录(如测试环境路径
test001admin123)。 - 文本处理工具:Linux下的
sort/uniq/grep,Windows下的PowerShell,用于去重、过滤、分类;Python脚本则适合实现复杂自定义逻辑(如多级目录拼接、命名习惯匹配)。
- 信息收集素材(定制化关键)
字典精准度的核心在于“贴合目标”,提前收集目标资产的以下信息,是构建专属字典的前提:- 技术栈信息:目标网站使用的编程语言(PHP/Java/Node.js/Python)、Web框架(SpringBoot/Django/Flask/WordPress)、中间件(Nginx/Apache/Tomcat)。
- 资产标识信息:主域名、子域名、项目代号、公司简称、产品名称(如目标域名为
example-pay.com,则可衍生pay-adminexample-backup等路径)。 - 公开泄露信息:GitHub/GitLab代码泄露、Wayback Machine历史快照、第三方漏洞平台披露的历史路径,这些信息能直接获取目标真实存在的隐藏路径。
- 命名习惯信息:通过公开信息判断目标的命名偏好(如驼峰命名
UserAdmin、下划线命名user_admin、版本前缀v1_api)。
二、分步骤构建隐藏目录字典集(从基础到专属)
1. 第一步:整合基础字典,搭建核心骨架
基础字典是字典集的“底盘”,负责覆盖80%的通用高频路径,无需从零编写,只需做好整合与筛选:
- 筛选核心条目:从SecLists中提取
common.txt(通用目录)、对应技术栈的目录文件(如目标是Java项目则选jsp.txttomcat.txt)、CommonBackups.txt(备份后缀);同时加入dirsearch的common.txt字典,两者重复率约30%,但能互补覆盖遗漏条目。 - 初步去重:使用命令
cat sec_lists.txt dirsearch.txt | sort | uniq > base_dict.txt,去除重复条目,减少后续加工冗余。 - 剔除无效条目:过滤明显不符合Web路径规则的内容(如超长字符串、特殊符号过多的条目),保留
adminloginconfigbackupuploadsapiv1test等高频核心路径。
2. 第二步:目标专属定制,打造差异化核心
这是字典集“从通用到精准”的关键一步,也是红队实战中与公开字典拉开差距的核心环节。根据信息收集的素材,针对性添加以下四类定制化条目:
| 信息类型 | 提取维度 | 定制化路径生成示例 |
|---|---|---|
| 技术栈/框架 | 语言专属路径、框架默认路径、中间件配置路径 | PHP→/phpinfo.php/admin.php/mysql_backup.sql;SpringBoot→ /actuator/swagger-ui.html/error/env;Django→ /admin/static/media/api-auth;Tomcat→ /manager/html/host-manager/html |
| 资产标识 | 域名/项目名/公司简称的缩写、全称、变体 | 目标域名为cloud-pay.com→/cloud//pay//cloud-admin//pay-backup//cp-test/ |
| 公开泄露信息 | 历史路径、测试目录、废弃接口 | Wayback Machine发现/test/202405→衍生/test/202406/test-backup//old-test/;GitHub泄露 /config/prod.yml→添加/config/dev.yml/config/test.yml |
| 命名习惯 | 前缀/后缀规则、版本号、团队代号 | 目标常用v2_xxx→/v2_api//v2_login//v2-admin/;团队代号 dev-team→/dev//dev-test//team-admin/ |
3. 第三步:规则化生成变体,扩大覆盖边界
仅靠手动添加的条目无法覆盖所有可能的变体,通过工具按规则生成路径变体,能进一步提升命中率,重点覆盖以下变体类型:
- 前缀后缀变体:为核心路径添加备份、测试、版本等标识前缀/后缀,如
admin→old-admin/admin_bak/admin_test/v1_admin。- 工具实操(pydictor):
pydictor -input base_dict.txt -append "_bak" "_test" -prepend "old_" "v1_" -o var_dict.txt
- 工具实操(pydictor):
- 大小写变体:部分Windows服务器或老旧系统区分路径大小写,需生成大小写组合,如
/Admin/ADMIN/aDmin。- 工具实操(Python脚本):遍历基础条目,生成全小写、全大写、首字母大写三种格式。
- 多级目录变体:很多隐藏目录是多级结构,如
/admin/user/config/db/backup/2024/sql,需将核心路径进行组合。- 工具实操(Python脚本):定义核心目录列表,嵌套循环生成二级、三级目录,如
[admin, config]+[user, db]→/admin/user/admin/db/config/user。
- 工具实操(Python脚本):定义核心目录列表,嵌套循环生成二级、三级目录,如
- 字符组合变体:针对测试环境、临时目录的随机命名,如
test001admin123backup_2024,用crunch生成数字+字母组合。- 工具实操(crunch):
crunch 5 6 abc123 -o combo_dict.txt(生成5-6位,由abc和123组成的路径)。
- 工具实操(crunch):
4. 第四步:去重优化与分类,提升实战效率
经过前三步生成的字典会存在大量冗余,且条目杂乱无章,直接用于扫描会降低效率、增加被拦截风险,需进行以下优化:
- 深度去重:使用
sort final_dict.txt | uniq -u > unique_dict.txt命令去重,-u参数可去除所有重复条目;对于Windows环境,用PowerShell命令Get-Content final_dict.txt | Sort-Object -Unique > unique_dict.txt。 - 按优先级排序:将高频核心路径(如
/admin/login/config)放在字典头部,扫描工具默认按顺序发起请求,能优先命中高价值路径,减少无效请求。 - 分场景分类:将字典拆分为多个子字典,适配不同扫描阶段,降低被WAF识别的概率:
- 通用扫描字典:包含高频通用路径,用于初步探测;
- 框架专属字典:按SpringBoot/Django/WordPress等拆分,针对特定技术栈扫描;
- 敏感文件字典:包含
.env.git.svnweb.config.bak等敏感文件路径,单独扫描; - 目标专属字典:仅包含与目标资产相关的定制化路径,用于精准爆破。
5. 第五步:实战动态迭代,持续优化字典集
字典集不是一次性产物,而是需要在实战中持续迭代的“活字典”,通过以下方式不断提升精准度:
- 扫描反馈补充:使用dirsearch/ffuf扫描目标后,将返回状态码为
200(存在)、403(权限不足)、302(重定向)的路径加入字典,并衍生变体(如发现/pay,则添加/pay-admin/pay-backup)。 - 误报路径排除:过滤扫描中频繁返回
404且响应长度固定的无效路径(如/favicon.ico/robots.txt),避免字典冗余。 - 行业特性补充:不同行业的网站存在专属路径,如金融行业的
/risk//payment/,电商行业的/order//cart/,根据目标行业补充对应条目。 - 定期同步更新:跟踪SecLists、dirsearch等开源字典库的更新,及时添加新框架、新技术的专属路径(如新兴框架
FastAPI的默认路径)。
三、红队实战高频字典模板(可直接复用)
1. 通用高频隐藏目录(适用于所有目标)
/admin/login/backup/config/test/uploads/api/v1/v2/manage/system/data/log/temp/install
2. 主流框架/技术栈专属路径
| 框架/技术栈 | 核心隐藏路径 |
|---|---|
| WordPress | /wp-admin/wp-content/wp-includes/wp-config.php/wp-login.php |
| SpringBoot | /actuator/swagger-ui.html/swagger-resources/env/health/beans |
| Django | /admin/static/media/api-auth/admin/login/ |
| PHP | /phpinfo.php/phpmyadmin/admin.php/config.php/mysql.php |
| Tomcat | /manager/html/host-manager/html/docs/examples |
3. 敏感备份/配置文件路径
.git/.svn/.env.htaccessweb.configweb.config.bakdatabase.sqlbackup.tar.gzindex.php.swpconfig.yml
四、红队实战注意事项(合规与避坑)
- 严格遵守授权边界:仅对已获得书面授权的目标进行测试,未授权扫描可能触犯《网络安全法》等法律法规,承担法律责任。
- 控制扫描速率与频率:使用
dirsearch -t 10(10线程)、ffuf -rate 20(每秒20请求)等参数控制扫描速率,避免因请求量过大触发WAF拦截或被判定为DDoS攻击。 - 规避特征检测:避免使用单一字典长时间扫描,分阶段使用不同子字典;同时随机化请求头、User-Agent,降低被识别为自动化工具的概率。
- 字典加密与存储:红队实战中,字典集属于敏感资产,需进行加密存储,避免泄露后暴露攻击目标与战术思路。
五、前瞻性趋势:AI驱动的智能字典生成
随着网络安全防御技术的升级,传统的规则化字典逐渐面临WAF智能拦截的挑战。未来,AI驱动的智能字典生成将成为红队技术的新趋势:通过机器学习分析目标资产的命名习惯、技术栈特征、历史路径规律,自动生成高度贴合目标的定制化字典;同时结合大语言模型(LLM)的语义理解能力,预测目标可能存在的隐藏路径(如根据项目文档生成未公开的接口路径),进一步提升字典的精准度与隐蔽性。