Vai al contenuto

Git

Git Cheat Sheet per Pentesting e Enumerazione

Informazioni di base

Verifica configurazione

Bash
git config --list

Visualizza remote repository

Bash
git remote -v

Esplorazione di repository sospetti

Clonare un repository (anche senza HEAD)

Bash
git clone <url> --no-checkout

Scaricare tutte le branch

Bash
git fetch --all

Visualizzare branch remoti

Bash
git branch -r

Esaminare lo stato del repository

Bash
git status

Enumerazione di file e commit

Log completo con dettagli

Bash
git log --stat

Visualizzare log di una specifica branch

Bash
git log origin/<branch_name>

Visualizzare modifiche recenti

Bash
git log -p

Visualizzare tutti i commit con hash

Bash
git log --oneline

Recupero di informazioni sensibili

Ricerca di stringhe specifiche (e.g., password)

Bash
git grep <parola_chiave>

Esaminare commit eliminati (reflog)

Bash
git reflog

Ripristinare file cancellati

Bash
git checkout <hash_commit> -- <file>

Esaminare differenze tra commit

Bash
git diff <commit_1> <commit_2>

Esplorare il contenuto di un singolo commit

Bash
git show <hash_commit>

Enumerazione di oggetti Git

Elenco di oggetti (blob, tree, commit)

Bash
git cat-file --batch-check --batch-all-objects

Esaminare un oggetto specifico

Bash
git cat-file -p <hash>

Ricerca di informazioni sensibili nelle branch

Trova branch non mergiate

Bash
git branch --no-merged

Ricerca di branch con nome sospetto

Bash
git branch -a | grep -i "password\|secret\|admin"

Altri comandi utili

Analisi di differenze con branch remoto

Bash
git diff master origin/master

Controllare permessi e autorizzazioni

Bash
ls -la .git/

Download repo git da un sito web

Se trovi esposto un repository .git su un sito web (ad esempio, l'URL è http://example.com/.git/), puoi utilizzare strumenti o metodi manuali per scaricarlo e analizzarlo. Questo è un caso comune durante il pentesting, ed è importante procedere con attenzione per evitare problemi legali.

Ecco i passi principali:

1. Verifica la presenza della directory .git

Prova ad accedere all'URL http://example.com/.git/HEAD nel browser. Se ottieni un risultato come ref: refs/heads/main, significa che la directory .git è accessibile.

2. Scaricare il repository con strumenti automatici

Puoi usare strumenti come GitTools per scaricare completamente il repository. GitTools contiene lo script git-dumper, molto utile per questi casi. Installazione di GitTools

Bash
git clone https://github.com/internetwache/GitTools.git
cd GitTools

Utilizzo di git-dumper

Bash
./git-dumper/git-dumper.py http://example.com/.git/ /path/to/output/

Questo script scaricherà i file necessari per ricostruire il repository Git.

3. Metodo manuale con wget o curl

Se preferisci farlo manualmente, puoi utilizzare wget o curl per scaricare la directory .git. Con wget:

Bash
wget -r -np -R "index.html*" http://example.com/.git/

Dove: - -r è per scaricare ricorsivamente - -np è per non risalire alla directory genitore - -R è per escludere i file index.html*

Con curl:

Crea una lista di file noti (ad esempio .git/HEAD, .git/config, .git/refs/heads/main) e scaricali uno per uno:

Bash
curl -O http://example.com/.git/HEAD
curl -O http://example.com/.git/config

4. Ricostruzione del repository

Una volta scaricati i file della directory .git, puoi ricostruire il repository: Inizializza un repository nella directory di output

Bash
cd /path/to/output/
git init

Recupera i file e le branch

Bash
git reset --hard
git pull

Suggerimenti utili

  • Esplora manualmente: Ispeziona .git/config per potenziali configurazioni sospette.
  • Attenzione ai file: Cerca file .gitignore e README che possano contenere informazioni utili.
  • Ripristino di branch: Usa git reflog per ripristinare branch eliminati.
  • Analisi di commit: Esamina i commit per trovare informazioni sensibili.