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

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

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

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

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

Категории

Все категории
Loading categories
gitea-user-keys-idor — Proof-of-concept и лабораторная работа для Gitea IDOR (CWE-639) в GET /api/v1/user/keys/{id}, позволяющая аутентифицированному токену read:user перечислять SSH-ключи и deploy-ключи других пользователей. | Kitploit
Инструменты/GitHubGitHub/abraxas/gitea-user-keys-idor
Анализ уязвимостейЭксплуатацияСбор информацииВеб-безопасностьТестирование на ПроникновениеБезопасность APIЛаборатории и Практика
GitHubabraxas/gitea-user-keys-idor

gitea-user-keys-idor

Proof-of-concept и лабораторная работа для Gitea IDOR (CWE-639) в GET /api/v1/user/keys/{id}, позволяющая аутентифицированному токену read:user перечислять SSH-ключи и deploy-ключи других пользователей.

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

Популярное

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

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

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

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

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

Abraxas Labs - gitea-user-keys-idor

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  gitea-user-keys-idor

gitea-user-keys-idor

Gitea 1.27.3 - Gitea

GET /api/v1/user/keys/{id} находится в группе текущего пользователя (reqToken, rejectPublicOnly). Обработчик по-прежнему загружает строку по числовому ID без проверки владельца. В той же таблице хранятся пользовательские ключи, deploy-ключи и principals. Аналогичный обработчик GPG делает это правильно: GetGPGKeyForUserByID(ctx, ctx.Doer.ID, id). Приватные поля защищены. Публичный ключевой материал, заголовок и отпечаток — нет. ID последовательны.

Токен read:user перебирает 1, 2, 3 и инвентаризирует чужие SSH- и deploy-ключи. Открытая регистрация превращает это в баг для новых аккаунтов.

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

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

Зарегистрироваться (открытая регистрация по умолчанию), выпустить токен read:user, перебрать /api/v1/user/keys/{id}. Он получает заголовки, отпечатки и публичный ключевой материал для ключей, которыми не владеет, включая deploy-ключи. Приватный ключ он не получает. Шелл он не получает. Он инвентаризирует, у кого есть доступ к чему.

GHSA по ключам в 1.27.3 был ограничен именем пользователя списком плюс individualPermsChecker. Это был не этот lookup.

Тот же тег, остаток: git HTTP redirect SSRF.

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

v1.27.3 закрыл волну GHSA 2026 года. Я всё равно остался на этом теге и прочитал обработчик ключей текущего пользователя рядом с GPG. GPG возвращает 404 для чужого id. SSH — нет.

seed.sh подкладывает заголовок ключа жертвы GHSA-GITEA-KEY-IDOR-WITNESS и ключ атакующего. В собственном списке атакующего свидетеля нет. GET /user/keys/1 от имени атакующего — есть. GPG с чужим id возвращает 404. Это и есть весь аргумент.

Уже зафиксированные неверные повороты: трактовка собственного списка атакующего как утечки (это не так — список ограничен, GET-by-id — нет); reverse shell. Театр.

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

Лаборатория

cd lab
./run.sh

Цель только http://127.0.0.1:18101.

add-key user=victim status=201 title=GHSA-GITEA-KEY-IDOR-WITNESS id=1
add-key user=attacker status=201 id=2
attacker-list status=200 ids=[2] (no witness)
get id=1 status=200 snippet contains GHSA-GITEA-KEY-IDOR-WITNESS
SUCCESS Gitea #1 user/keys IDOR

Исправление

404, если только key.OwnerID == ctx.Doer.ID (или администратор сайта). Отклонять типы deploy/principal. Соответствовать GPG.

Ссылки

  • github.com/go-gitea/gitea тег v1.27.3
  • GetPublicKey
  • Рядом исправлено (не этот lookup): CVE-2026-60004 · CVE-2026-59774
  • Тот же тег: gitea-git-redir-ssrf
  • CWE-639

Лицензия

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

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