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

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

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

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

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

Категории

Все категории
Loading categories
forgejo-openid-discovery-ssrf — Forgejo 16.0.5 — высокий уровень — удалённо — SSRF — OpenID discovery загружает URL-адреса, контролируемые атакующим | Kitploit
Инструменты/GitHubGitHub/abraxas/forgejo-openid-discovery-ssrf
РазведкаАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийСбор информацииВеб-безопасностьТестирование на Проникновение
GitHub

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
abraxas/forgejo-openid-discovery-ssrf

forgejo-openid-discovery-ssrf

Forgejo 16.0.5 — высокий уровень — удалённо — SSRF — OpenID discovery загружает URL-адреса, контролируемые атакующим

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

Abraxas Labs - forgejo-openid-discovery-ssrf

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  forgejo-openid-discovery-ssrf

forgejo-openid-discovery-ssrf

Класс: SSRF Доступ: Удалённый

Forgejo 16.0.5 (8d24b7d) - Forgejo

Когда включён [openid] ENABLE_OPENID_SIGNIN, неаутентифицированный POST /user/login/openid передаёт URL атакующего в yohcop openid-go v1.0.1. Помощники уровня пакета этой библиотеки используют http.DefaultClient. На этом пути нет hostmatcher. Вебхуки и миграции фильтруют исходящие HTTP-запросы. OpenID — нет.

Тот, кто может добраться до формы входа, может инициировать Yadis GET на loopback, RFC1918, CGNAT и IMDS с хоста Forgejo.

IDCVE пока нет
КлассSSRF
ДоступУдалённый (неаутентифицированный, когда включён вход через OpenID)
CWECWE-918
CVSSВысокий: 8.6 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N
ПродуктForgejo
Затронутовплоть до v16.0.5 (8d24b7d) с ENABLE_OPENID_SIGNIN; остаток от Gitea CVE-2026-58314
Аутентификациянеаутентифицированный
ЛицензияGNU Affero GPL v3.0
Лабораториятолько 127.0.0.1

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

Без аккаунта. Отправьте POST с OpenID URL. Хост Forgejo его загрузит.

ПривилегияМетод / sinkРазведка / целостность / доступностьДоказано в лаборатории или выведено
Инициировать Yadis GET на loopbackНеаутентифицированный POST /user/login/openid с openid=http://127.0.0.1:18080/Разведка (исходящий HTTP с хоста Forgejo)Доказано в лаборатории. Oracle увидел GET / с Accept: application/xrds+xml от 127.0.0.1
Проверка RFC1918, CGNAT, link-local, IMDSТот же http.DefaultClient Discover, без фильтра IPРазведкаВыведено из клиента. В лаборатории использовался только loopback
Повтор из аутентифицированного add-OpenIDPOST /user/settings/security/openid также вызывает RedirectURL и пропускает allowedOpenIDURIРазведкаВыведено из обработчика. В лаборатории использовался неаутентифицированный POST входа
Чтение тел ответов в ошибке входаПосле CVE-2021-45325 ошибки больше не выдают содержимое запросаРазведкаДоказано в лаборатории как закрытое. Этот остаток — это запрос, а не утечка HTML

Закрыто на этом пине: CSRF ассоциации OpenID (nonce сессии openIDState), hostmatcher вебхуков/миграций (там всё ещё используется), git followRedirects=false, миграция LookupIP CVE-2026-82556. Лаборатория не завершает вход через OpenID и не возвращает шелл.

Флажок веб-установщика по умолчанию включён (EnableOpenIDSignIn = MustBool(!InstallLock) пока не заблокирован, затем записывается в app.ini). После блокировки отсутствующий ключ — false. Шаблон Docker app.ini не содержит секции [openid], поэтому предварительно заблокированный образ без мастера настроек выключен, если оператор не установит ключ. Пустой WHITELISTED_URIS разрешает любой URI.

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

v16.0.5 закрыл CSRF ассоциации OpenID. Я всё равно задержался на этой поверхности. Gitea PR 38406 / CVE-2026-58314 поместил клиент с фильтрацией hostmatcher в выделенный экземпляр openid-go. Этот пин всё ещё вызывает помощники уровня пакета.

Уже зафиксированные неверные пути: повторная подача CSRF ассоциации (этот nonce есть в дереве); трактовка предварительно заблокированного Docker-образа как значения по умолчанию (мастер настроек записывает флажок); ожидание старой утечки строки ошибки OpenID; обратный шелл. Театр.

Лаборатория

python3 forgejo-openid-discovery-ssrf-Abraxas-Labs.py

или:

cd lab
./run.sh

Цель только http://127.0.0.1:19330. Образ codeberg.org/forgejo/forgejo:16.0.5. Oracle использует общий netns с Forgejo и привязывается к 127.0.0.1:18080.

IOC post-openid status=200
IOC xrds-hits count=1
SUCCESS forgejo-openid-discovery-ssrf how=live post=/user/login/openid openid=http://127.0.0.1:18080/ path=/ accept=application/xrds+xml peer=127.0.0.1 post-status=200 FORGEJO-OPENID-DISCOVERY-WITNESS

Исправление

То же, что и в Gitea PR 38406: http.Client с фильтрацией hostmatcher в выделенном экземпляре openid-go. Оставьте WHITELISTED_URIS в качестве второго барьера. Блокируйте loopback, RFC1918, CGNAT, link-local и метаданные.

Ссылки

  • codeberg.org/forgejo/forgejo тег v16.0.5
  • modules/auth/openid/openid.go
  • Рядом исправлено (не этот запрос): v16.0.5 OpenID association CSRF
  • Класс Gitea: CVE-2026-58314 / PR 38406
  • CWE-918

Лицензия

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

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