
🫖 Прямой PoC для проверки RCE-уязвимости CVE-2026-60004 в Gitea с одной целью
Прямой инструмент проверки одной цели для уязвимости удалённого выполнения кода в Git-хуке
diffpatchв Gitea.
Этот репозиторий содержит сфокусированный валидатор AfterDark: один скрипт, одна цель, один запуск. Здесь нет подкоманд для обнаружения, разведки, верификации или других операций.
Этот проект предоставляется только для авторизованного тестирования безопасности, защитной валидации, исследований и обучения. Используйте его исключительно на системах, которыми вы владеете или на оценку которых у вас есть явное письменное разрешение.
Авторы и участники не несут ответственности за неправомерное использование, ущерб, прерывание работы сервисов, потерю данных или юридические последствия. Вы несёте ответственность за соблюдение применимых законов, контрактов, правил взаимодействия и требований к раскрытию информации.
Это активный proof of concept для RCE. Он создаёт учётную запись, создаёт приватный репозиторий, записывает контрактный маркер и выполняет команду от имени пользователя операционной системы Gitea. Относитесь к нему соответственно. 🛡️
CVE-2026-60004 затрагивает рабочий процесс diffpatch репозиториев Gitea. Злоумышленник с правом записи в репозиторий может отправить контролируемое содержимое патча, которое устанавливает и запускает Git-хук, что приводит к выполнению команд от имени сервисной учётной записи Gitea.
| Пункт | Детали |
|---|---|
| Продукт | Gitea |
| Затронутые версии | >= 1.17.0, < 1.27.1 |
| Исправленная версия | 1.27.1 |
| Воздействие | Удалённое выполнение команд от имени пользователя ОС Gitea |
| Официальное уведомление | GHSA-rcr6-4jqh-j84m |
Forgejo и другие форки требуют ручного анализа реализации и не считаются автоматически затронутыми.
Каждый запуск выполняет один фиксированный рабочий процесс:
post-index-change через diffpatch.id.Инструмент принимает только одну цель. У него нет режимов списка целей, подстановочных знаков, массового сканирования или пассивного обнаружения.
PATHСкрипт использует только стандартную библиотеку Python. Установка через pip install не требуется.
git clone https://github.com/InfoSec-DB/CVE-2026-60004-Gitea-RCE-PoC.git
cd CVE-2026-60004-Gitea-RCE-PoC
python3 scanner.py --help
python3 scanner.py \
--contract-number ENG-2026-001 \
--username audit-eng-2026-001 \
--password 'use-a-unique-disposable-password' \
https://gitea.example
Также доступны короткие опции:
python3 scanner.py \
-c ENG-2026-001 \
-u audit-eng-2026-001 \
-p 'use-a-unique-disposable-password' \
https://gitea.example
🚨 Пароль передаётся в командной строке и отображается в финальной панели результатов. Используйте только уникальные одноразовые тестовые учётные данные. Учитывайте, что аргументы командной строки могут сохраняться в истории оболочки или быть временно видны локальным инструментам проверки процессов.
Команда по умолчанию — id. Узко ограниченную пользовательскую команду можно указать с помощью --cmd:
python3 scanner.py \
-c ENG-2026-001 \
-u audit-eng-2026-001 \
-p 'use-a-unique-disposable-password' \
--cmd 'uname -a' \
https://gitea.example
Пользовательские команды намеренно не имеют тайм-аута. Валидатор ожидает завершения удалённой команды, поэтому избегайте интерактивных или длительных команд, если только это специально не требуется условиями взаимодействия.
По умолчанию каждый запуск записывает данные в каталог:
afterdark-results/<contract>/<UTC timestamp>/
Вы можете выбрать другой корневой каталог или точный каталог запуска:
python3 scanner.py \
-c ENG-2026-001 \
-u audit-eng-2026-001 \
-p 'use-a-unique-disposable-password' \
--results-root ./engagement-evidence \
https://gitea.example
python3 scanner.py \
-c ENG-2026-001 \
-u audit-eng-2026-001 \
-p 'use-a-unique-disposable-password' \
--output-dir ./engagement-evidence/run-01 \
https://gitea.example
Каждый запуск создаёт приватные файлы с правами 0600 и отказывается перезаписывать существующие результаты:
confirmation.json — цель, результат проверки версии, имя учётной записи, временные метки, команда, код возврата и захваченные артефактыconfirmation.command-output.txt — полный вывод удалённой командыДоказательства могут содержать конфиденциальную информацию о взаимодействии. Не коммитьте их в Git. Включённый .gitignore исключает пути результатов по умолчанию и распространённые имена файлов доказательств.
Валидатор не удаляет серверные артефакты автоматически. После оценки авторизованный администратор должен:
afterdark-*/tmp/gitea-validation-<contract>/client.txt1.27.1 или новееУспешный результат доказывает выполнение команд от имени сервисной учётной записи Gitea. Сам по себе он не доказывает доступ root, закрепление, горизонтальное перемещение или полную компрометацию хоста.
idТесты проверяют разбор и конструирование PoC без сетевых запросов:
python3 -m unittest discover -s tests -v
Приветствуются улучшения, которые делают валидатор безопаснее, надёжнее или проще в очистке. Не отправляйте реальные данные целей, учётные данные, приватные доказательства или разрушительные полезные нагрузки.
О уязвимостях в этом инструменте сообщайте в соответствии с SECURITY.md.
Создано для тщательной, контрактно-ограниченной валидации безопасности. 🫖🛡️