Git

Tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE) Azure 해킹 배우기 및 연습하기: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks 지원하기

URL에서 .git 폴더를 덤프하려면 다음을 사용하세요 https://github.com/arthaud/git-dumper

내용을 검사하려면 https://www.gitkraken.com/ 사용하세요

웹 애플리케이션에서 .git 디렉터리가 발견되면 wget -r http://web.com/.git. 명령으로 모든 내용을 다운로드할 수 있습니다. 그런 다음 git diff 로 변경 사항을 확인할 수 있습니다.

다음 도구들: Git-Money, DVCS-PillageGitTools 는 git 디렉터리의 콘텐츠를 가져오는 데 사용할 수 있습니다.

도구 https://github.com/cve-search/git-vuln-finder 는 커밋 메시지 내부에서 CVEs 및 보안 취약성 관련 메시지를 검색하는 데 사용할 수 있습니다.

도구 https://github.com/michenriksen/gitrob 는 조직 및 구성원의 저장소에서 민감한 데이터를 검색합니다.

Repo security scanner 는 커맨드라인 기반 도구로, 한 가지 목표로 작성되었습니다: 개발자가 민감한 데이터를 푸시하여 실수로 노출한 GitHub 비밀을 찾아내는 것을 돕기 위해서입니다. 다른 도구들처럼 비밀번호, 개인 키, 사용자 이름, 토큰 등도 찾아줍니다.

여기에서 github dorks에 대한 연구를 확인할 수 있습니다: https://securitytrails.com/blog/github-dorks

Faster /.git dumping & dirlisting bypass (2024–2026)

  • holly-hacker/git-dumper 는 classic GitTools dumper를 병렬 페칭으로 재작성한 2024년 버전입니다 (>10x 속도 향상). 예: python3 git-dumper.py https://victim/.git/ out && cd out && git checkout -- .
  • Ebryx/GitDump.git/index, packed-refs 등에서 object 이름을 brute-forces하여 디렉터리 트래버설이 비활성화된 경우에도 리포지토리를 복구합니다: python3 git-dump.py https://victim/.git/ dump && cd dump && git checkout -- .

빠른 덤프 후 트리아지

cd dumpdir
# reconstruct working tree
git checkout -- .
# show branch/commit map
git log --graph --oneline --decorate --all
# list suspicious config/remotes/hooks
git config -l
ls .git/hooks

비밀/자격증명 검색 (현재 도구)

  • TruffleHog v3+: 엔트로피+정규표현식 및 자동 Git 히스토리 탐색. trufflehog git file://$PWD --only-verified --json > secrets.json
  • Gitleaks (v8+): 빠른 정규식 규칙세트로, 압축 풀린 트리 또는 전체 히스토리를 스캔할 수 있음. gitleaks detect -v --source . --report-format json --report-path gitleaks.json

서버 측 Git 통합 RCE (hooksPath override 이용)

Git 저장소를 통합하는 현대 웹 애플리케이션은 때때로 사용자 제어 식별자(user-controlled identifiers)를 사용해 .git/config을 재작성합니다. 이러한 식별자가 hooksPath에 연결되면, Git 훅을 공격자가 제어하는 디렉터리로 리다이렉트하여 서버가 네이티브 Git을 실행할 때(예: git commit) 임의 코드를 실행할 수 있습니다. 주요 단계:

  • Path traversal in hooksPath: repo 이름/의존성 이름이 hooksPath에 복사되는 경우 의도된 훅 디렉터리에서 탈출하기 위해 ../../..을 주입하여 쓰기가 가능한 위치를 가리키게 합니다. 이는 Git config에서 사실상 path traversal과 같습니다.
  • Force the target directory to exist: 애플리케이션이 서버 측에서 clone을 수행할 때 clone 대상 제어(ref/branch/path 파라미터 등)를 악용해 ../../git_hooks 같은 경로로 clone하게 만들어 중간 폴더들이 생성되도록 합니다.
  • Ship executable hooks: Git 메타데이터 내에서 실행 비트를 설정해 모든 clone이 훅을 100755 모드로 쓰도록 합니다:
git update-index --chmod=+x pre-commit

해당 리포지토리의 pre-commit/post-commit에 페이로드(reverse shell, file dropper 등)를 추가합니다.

  • Find a native Git code path: JGit 같은 라이브러리는 훅을 무시합니다. 실제로 훅이 실행되도록 system Git으로 폴백하는 배포 흐름/플래그(예: deploy-with-attached-repo 파라미터)를 찾아보세요.
  • Race the config rewrite: 애플리케이션이 Git 실행 직전에 .git/config를 정리하는 경우, 악성 hooksPathを書き込む 엔드포인트를 스팸하면서 Git 동작을 트리거해 race condition을 이기고 훅을 실행되게 합니다.

References

Tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE) Azure 해킹 배우기 및 연습하기: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks 지원하기