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

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

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

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

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

Категории

Все категории
Loading categories
gitea-git-redir-ssrf — Proof-of-concept и лабораторная работа для аутентифицированного SSRF в эндпоинте миграции репозиториев Gitea, где git следует HTTP-редиректам в loopback git HTTP и утекает внутренние объекты. | Kitploit
Инструменты/GitHubGitHub/abraxas/gitea-git-redir-ssrf
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьТестирование на ПроникновениеЛаборатории и Практика
GitHubabraxas/gitea-git-redir-ssrf

gitea-git-redir-ssrf

Proof-of-concept и лабораторная работа для аутентифицированного SSRF в эндпоинте миграции репозиториев Gitea, где git следует HTTP-редиректам в loopback git HTTP и утекает внутренние объекты.

Репозиторий
13 дней назадЕщё не проверено

Популярное

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

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

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

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

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

Abraxas Labs - gitea-git-redir-ssrf

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  gitea-git-redir-ssrf

gitea-git-redir-ssrf

Gitea 1.27.3 - Gitea

IsMigrateURLAllowed — это одноразовый net.LookupIP по введённому вами URL. Затем байты проходят через git clone --mirror. HandleGitCmdHTTPRedirection должен мешать git следовать этому переходу. Он не делает ничего. Комментарий и есть находка: они не включили http.followRedirects=false, потому что GitLab отдаёт 301 без .git. Fetch при pull-mirror вызывает ту же пустышку.

Аутентифицированный пользователь может выполнить миграцию с разрешённого хоста-приманки, и git проследует по 302 в loopback git HTTP. Внутренние объекты попадают в репозиторий, которым он владеет.

IDCVE пока нет
CWECWE-918
CVSSHigh: 7.7 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N
ПродуктGitea
Затронутовплоть до v1.27.3 (146cc3e)
Аутентификацияаутентифицированный (открытая регистрация по умолчанию)
ЛицензияGNU Affero GPL v3.0
Лабораториятолько 127.0.0.1

Что может сделать атакующий

Зарегистрироваться, выполнить миграцию с выглядящего внешним URL, который отдаёт 302 на http://127.0.0.1:.../internal.git. Прямая миграция на loopback запрещена. Клонирование с переходом по редиректу — нет. Файл-свидетель попадает в его репозиторий.

Не чтение диска через file://. Не X-Gitea-Internal-Auth на /api/internal (git не установит этот заголовок). Не неаутентифицированный RCE. Не RCE через metadata, если только вы отдельно не покажете, что git сохранил тело.

Остатки того же тега: keys IDOR, hostmatcher 0.0.0.0/8.

Как я это нашёл

v1.27.3 закрыла волну GHSA 2026 года: CVE-2026-60004 (RCE через хук diffpatch, CISA KEV), CVE-2026-59774 (неаутентифицированный Org-mode #+INCLUDE), ограничения fork-PR Actions, значение по умолчанию X-WEBAUTH-USER для обратного прокси. Оставайтесь на 1.27.3+ ради них. Я всё равно задержался на этом теге.

CVE-2026-59765 исправила Go uri.Open. CVE-2026-22874 исправила Go reservedIPNets. Редиректор git по-прежнему FIXME. Запись в changelog «disable HTTP redirects on pull mirror sync» — это не данная функция.

Лаборатория размещает Gitea на 8.8.4.2, чтобы хост-приманка на 8.8.4.10 выглядел внешним для hostmatcher. Внутренний git HTTP слушает только loopback в netns Gitea (network_mode: service:gitea, порт 9418). Прямая миграция на 127.0.0.1 должна завершиться неудачей. Клонирование с переходом по редиректу должно удаться. redir.py отдаёт 302 на /bait.git в http://127.0.0.1:9418/internal.git. Файл-свидетель WITNESS содержит GHSA-GITEA-GIT-REDIR-SSRF.

Уже зафиксированные неверные повороты: ALLOW_LOCALNETWORKS true (тогда allow-list исчезает); file://; X-Gitea-Internal-Auth; reverse shell. Театр. Отказ прямой миграции на loopback — это контроль.

Клиентские баги выглядят как баги продукта. Хелпер, который затеняет http.client, не отправляет ни одного пакета. .recv() у HTTPResponse — это не .read(). Упоминаю это один раз, потому что это стоило времени и на минуту выглядело так, будто 1.27.3 довела дело до конца.

Лаборатория

cd lab
./run.sh

Цель только http://127.0.0.1:18103. ALLOW_LOCALNETWORKS=false.

negative-loopback status=422 You can not import from disallowed hosts
migrate-bait status=201 clone_addr=http://8.8.4.10/bait.git
fetch raw/WITNESS status=200 GHSA-GITEA-GIT-REDIR-SSRF
SUCCESS Gitea #2 git HTTP redirect SSRF

Исправление

Не считайте DNS на момент отправки границей. Принудительно задайте http.followRedirects=false (и нормализуйте clone URL к .git, чтобы GitLab по-прежнему работал), либо проксируйте git HTTP через dialer, который заново прогоняет hostmatcher на каждом переходе.

Ссылки

  • github.com/go-gitea/gitea тег v1.27.3
  • HandleGitCmdHTTPRedirection · IsMigrateURLAllowed
  • Рядом исправлено: CVE-2026-59765 · CVE-2026-22874
  • CWE-918

Лицензия

GNU Affero GPL v3.0. См. LICENSE. Только loopback-лаборатория. Без гарантий.

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