关于 insecure-source-code-management
用于授权安全评估的技能,检查暴露的版本控制元数据和备份文件,并介绍 Git、SVN、Mercurial、Bazaar 等内容的检测与恢复方法。
主要功能
- 01Git 元数据检测与恢复
- 02SVN 工作副本恢复
- 03Mercurial 和 Bazaar 检查
- 04`.DS_Store` 与备份探测
- 05判断 403 和 404 响应
适用场景
- 01检查授权范围内站点的仓库文件暴露
- 02从可访问的元数据恢复源文件
- 03排查备份和配置文件泄露
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ yaklang/ hack-skills --skill insecure-source-code-management安装后在 Claude Code 中输入/insecure-source-code-management确认已加载。
详细介绍
技能:不安全的源代码管理
AI 加载指令:此技能涵盖对暴露的版本控制元数据、常见备份产物及相关错误配置的检测与恢复。仅限在获得授权的评估中使用。将恢复的凭据和 URL 视为敏感信息;不得超出范围外泄真实数据。如需广泛的发现工作流,请在工作区中存在 recon-for-sec 和 recon-and-methodology 时一并加载。
0. 快速开始
优先探测的高价值路径(使用 GET 或 HEAD,并遵守速率限制):
/.git/HEAD
/.git/config
/.svn/entries
/.svn/wc.db
/.hg/requires
/.bzr/README
/.DS_Store
/.env
路由说明:先快速探测这些路径;如需完整的侦察工作流,请在深入测试前加载 recon-for-sec 和 recon-and-methodology 中的方法论。
1. GIT 暴露
检测
/.git/HEAD— 有效的仓库通常会返回如下纯文本:
ref: refs/heads/main
/.git/config— 可能暴露remote.origin.url、用户身份或内嵌凭据。/.git/index、/.git/objects/— 访问部分对象存储后,使用合适的工具即可重建仓库。
403 与 404
404— 路径可能不存在,或已在边缘处被完全拦截。/.git/返回403— 目录可能存在,但不允许列出内容;仍应尝试直接访问文件 URL:
/.git/HEAD
/.git/config
/.git/logs/HEAD
/.git/refs/heads/main
目录返回 403,而 HEAD 返回 200,强烈表明存在暴露。
恢复工具(开源)
arthaud/git-dumper— 当各个文件可获取时,转储可访问的.git树。internetwache/GitTools— 用于处理部分转储或损坏转储的 Dumper、Extractor、Finder 模块。WangYihang/GitHacker— 标准转储工具无法处理边缘情况时的替代恢复方案。
优先检查的关键文件
| 路径 | 重要性 |
|---|---|
.git/config | 远程仓库、凭据、钩子路径 |
.git/logs/HEAD | 提交历史、类似 reflog 的信息泄露 |
.git/refs/heads/* | 分支头指针、提交 SHA |
.git/packed-refs | 打包的分支/标签引用 |
.git/objects/** | 用于重建的对象 blob |
2. SVN 暴露
检测
- SVN 1.7 之前的版本:
/.svn/entries— 列出路径和修订版本的 XML 或文本元数据。 - SVN ≥ 1.7:
/.svn/wc.db— SQLite 工作副本数据库(下载后使用PRAGMA table_info)。
探测示例:
GET /.svn/entries HTTP/1.1
GET /.svn/wc.db HTTP/1.1
恢复
anantshri/svn-extractor— 从暴露的.svn中自动提取。- 手动操作:下载
wc.db,使用sqlite3查询文件路径和校验和,然后在暴露时请求/.svn/pristine/blob。
3. MERCURIAL 暴露
检测
/.hg/requires— 列出仓库功能的小型文本文件;可用于确认存在 Mercurial 元数据。
GET /.hg/requires HTTP/1.1
GET /.hg/store/ HTTP/1.1
恢复
sahildhar/mercurial_source_code_dumper— 当存储路径可访问时转储仓库。
4. 其他泄露
Bazaar(Bzr)
- 探测
/.bzr/README和/.bzr/branch-format,检查 Bazaar 元数据。
macOS .DS_Store
/.DS_Store可能包含目录和文件名列表。- 工具:
gehaxelt/ds-store、lijiejie/ds_store_exp— 离线解析.DS_Store。
备份和配置产物
探测以下路径(根据应用根目录和命名惯例调整):
/.env
/backup.zip
/backup.tar.gz
/wwwroot.rar
/backup.sql
/config.php.bak
/.config.php.swp
Web 服务器错误配置迹象(示例:NGINX)
location /.git { deny all; }— 可能导致/.git/返回 403,但对特定子路径仍可能按规则放行或拒绝。- 受保护位置返回 403 可能确认该路由存在;务必与不存在路径返回的 404 区分开。
5. 决策树
- 探测
/.git/HEAD→ 是否符合ref: refs/heads/模式?→ 运行 git-dumper / GitTools / GitHacker;检查config和logs/HEAD中是否有机密信息。 - 否则探测
/.svn/wc.db或entries→ 是否成功?→ 使用 svn-extractor,或手动恢复wc.db+ pristine。 - 否则探测
/.hg/requires→ 是否成功?→ 使用 mercurial dumper。 - 否则探测
/.bzr/README→ 使用 Bazaar 工具,或手动遍历路径。 - 并行执行:获取应用根路径和父路径中的
/.DS_Store、/.env及常见备份扩展名文件。 - 解读状态码:目录返回 403,而特定文件返回 200 → 将其视为文件逐个提取的高优先级目标。
6. 相关路由
注意:与侦察技能协调——先设定范围并确定请求速率,再进行有针对性的 VCS/备份验证。
评论
支持 Markdown