不安全源码管理
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md 的官方指南,把规范名 @user_3c6cb52e/insecure-source-code-management-3mh9 的技能安装到当前 AI 助手中。
技能介绍
要解决的问题
部署流水线里一个高频失误,是把版本控制目录原样带到了线上。Web 服务器可能对 /.git/ 返回 403 禁止列目录,但 /.git/HEAD 这类具体文件仍返回 200。攻击者拿到 HEAD 中的 ref: refs/heads/xxx 引用,再逐文件抓取 config、logs/HEAD、objects/ 下的 pack 块,就能在本地把整个仓库拼回来——包括提交历史中残留的凭证和内部地址。SVN、Mercurial、Bazaar 存在同构问题。
核心能力
按版本控制系统分四条探测线:
- Git:先探
/.git/HEAD确认引用格式,再区分 403 与 404——目录 403 而 HEAD 200 是高置信度暴露信号。恢复可用arthaud/git-dumper、internetwache/GitTools、WangYihang/GitHacker。 - SVN:1.7 之前看
/.svn/entries,之后看/.svn/wc.db(SQLite 表结构可直接查询),工具用anantshri/svn-extractor,也可手工取 pristine blob。 - Mercurial / Bazaar:以
/.hg/requires、/.bzr/README作为存在性指纹,分别接sahildhar/mercurial_source_code_dumper与路径遍历。 - 周边产物:
/.DS_Store(用gehaxelt/ds-store、lijiejie/ds_store_exp离线解析)、/.env、常见备份后缀。NGINX 的location /.git { deny all; }只拦目录列,拦不住单文件请求。
使用边界
仅用于已获授权的评估。恢复出的凭证和 URL 一律按敏感数据处理,不要越界外传真实数据。若工作区同时装有 recon-for-sec 和 recon-and-methodology,先由它们完成范围划定、限速与指纹识别,再做针对性 VCS 校验,避免把大规模发现与逐文件抓取混在一轮里。
使用场景
- 渗透测试人员对授权目标做外部攻击面梳理时,需要探测 `/.git/HEAD` 与 `/.svn/wc.db`,判断版本控制目录是否被误部署上线。
- 红队发现目标对 `/.git/` 目录返回 403 但 `HEAD` 返回 200 后,需要用 `git-dumper` 类工具逐文件抓取并还原完整提交历史。
- 安全工程师巡检外包交付的项目时,需要检查 `/.DS_Store`、`/.env` 和常见备份后缀是否被打包进了生产环境根目录。
- 应用安全工程师修复 CI/CD 配置缺陷后,需要在测试环境验证 NGINX `location /.git { deny all; }` 规则下哪些子路径仍可被抓取。
适合人员
- 渗透测试工程师——需要对授权目标系统地排查 VCS 目录暴露并还原泄露源码,作为渗透报告中的高优先级证据。
- 应用安全工程师——负责修复 CI/CD 配置缺陷,需要用本技能在测试环境验证 Git/SVN 元数据是否被误部署到生产。
- 红队成员——在攻防演练中需要从暴露的 `wc.db` 或 `.git/config` 中提取凭证与内网地址,溯源攻击路径。
- DevOps 工程师——需要检查自己维护的 Web 服务是否存在 `.git` 目录残留风险,在外部攻击者之前发现并清除问题。