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

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

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

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

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

Категории

Все категории
Loading categories
prometheus-bearer-redirect — Prometheus v3.15.0 — High — Remote — Утечка учётных данных — remote_write google_iam/azuread передаёт Bearer при кросс-хостовых 3xx | Kitploit
Инструменты/GitHubGitHub/abraxas/prometheus-bearer-redirect
Анализ уязвимостейЭксплуатацияВиртуализация для безопасностиВеб-безопасностьЛаборатории и Практика
GitHubabraxas/prometheus-bearer-redirect

prometheus-bearer-redirect

Prometheus v3.15.0 — High — Remote — Утечка учётных данных — remote_write google_iam/azuread передаёт Bearer при кросс-хостовых 3xx

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

Популярное

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

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

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

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

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

Abraxas Labs - prometheus-bearer-redirect

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  prometheus-bearer-redirect

prometheus-bearer-redirect

Класс: Утечка учётных данных Достижимость: Удалённая

Prometheus v3.15.0 (5241a27) - CNCF / Prometheus

prometheus/common v0.71.0 уже удаляет учётные данные scrape / HTTPClientConfig при кросс-хостовых перенаправлениях (isCrossHostRedirect, #901). NewWriteClient сначала создаёт этот клиент, а затем оборачивает azuread.NewAzureADRoundTripper или googleiam.NewRoundTripper вне механизма удаления. follow_redirects по-прежнему по умолчанию имеет значение true.

Если настроенный URL remote_write отвечает 301/302/307 на другой хост, Prometheus отправляет Authorization: Bearer вместе с токеном Azure AD или GCP monitoring.write на этот хост. Go уже удалил скопированный заголовок. Эти RoundTripper устанавливают его снова.

Не CVE-2026-42151 (дамп client_secret на /-/config). В стандартном prometheus.yml нет remote_write. Это зависит от azuread: или google_iam:.

IDCVE пока нет
КлассУтечка учётных данных (remote_write Bearer при кросс-хостовом 3xx)
ДостижимостьУдалённая (исходящий запрос от Prometheus к цели 3xx)
CWECWE-201
CVSSВысокий: 8.6 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N
ПродуктPrometheus
Затронутоv3.15.0 (5241a27fe3c6983549fccc32f6e65917408c63cd), образ prom/prometheus:v3.15.0
Аутентификацияконфигурационно-зависимый remote_write с azuread: или google_iam:
ЛицензияGNU Affero GPL v3.0
Лабораториятолько 127.0.0.1

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

У оператора настроен remote_write с azuread: или google_iam:. URL RW или промежуточный хост, на который он отвечает 3xx, контролируется атакующим.

ПривилегияМетод / приёмникДоказано в лаборатории или выведено
Прочитать действующий GCP monitoring.write Bearer при кросс-хостовом 3xxgoogle_iam remote_write POST, 307 на другой хостДоказано в лаборатории. Оракул POST /write получил Authorization: Bearer lab-gcp-PROMETHEUS-BEARER-REDIRECT-WITNESS
Та же утечка для azureadazureADRoundTripper.RoundTrip всегда выполняет Header.Set("Authorization", "Bearer "+token) без isCrossHostRedirectВыведено из исходного кода на этой версии. То же место обёртки в NewWriteClient. В лаборатории использовался google_iam, поэтому Azure не вызывался
Воспроизвести этот токен против Azure Monitor / GCP Monitoring от имени этой учётной записиТокен является реальными облачными учётными данными, когда эти блоки аутентификации настроеныВыведено. В лаборатории был сгенерирован фиктивный токен; Azure или GCP не вызывались
Scrape / oauth2 / basic / bearer на той же версииHTTPClientConfig RoundTripper из common v0.71.0Доказано в лаборатории как закрыто. oauth2 scrape GET проследовал за 302 к тому же оракулу без Authorization
Стандартный OSSremote_write пустЗакрыто
remote_write.headers, задающий AuthorizationотклоняетсяЗакрыто
/-/config, выводящий client_secretCVE-2026-42151; поле имеет тип Secret на этой версииЗакрыто
Администрирование / жизненный цикл Prometheusфлаги по умолчанию выключеныЗакрыто
RCE / получение оболочкине этот остатокЗакрыто

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

Я зафиксировал тег prometheus/prometheus v3.15.0 после волны исправлений 3.11/3.12 по редактированию секретов и ограничению snappy. Девятнадцать поисков. Стандартный OSS: admin API, lifecycle HTTP, remote-write receiver и OTLP receiver выключены. Common #901 присутствует в v0.71.0. Остаток — это две обёртки remote_write, которые находятся вне этого клиента.

func (rt *azureADRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) {
	accessToken, err := rt.tokenProvider.getAccessToken(req.Context())
	// ...
	req.Header.Set("Authorization", bearerAccessToken)
	return rt.next.RoundTrip(req)
}

googleiam.NewRoundTripper — это google.golang.org/api/transport/http -> oauth2.Transport, который выполняет SetAuthHeader на каждом переходе.

Уже зафиксированные ошибочные пути: повторная подача CVE-2026-42151; рассмотрение scrape oauth2 как всё ещё уязвимого (это не так); называние этого уязвимостью High при установке по умолчанию (это не так — remote_write пуст, пока вы его не включите). Театральность: reverse shell. Оракул — это Bearer в перенаправленном POST.

Лаборатория

python3 prometheus-bearer-redirect-Abraxas-Labs.py

или

cd lab
./run.sh

Только loopback: Prometheus http://127.0.0.1:19380, оракул http://127.0.0.1:19381. Образ prom/prometheus:v3.15.0. run.sh записывает лабораторный gcp-sa.json с token_uri: http://hop:8080/token, чтобы google_iam никогда не обращался к Google.

SUCCESS prometheus-bearer-redirect how=live rw-method=POST rw-bearer=yes token-has-witness=yes scrape-method=GET scrape-bearer=no PROMETHEUS-BEARER-REDIRECT-WITNESS

Исправление

Пропускать прикрепление Bearer Azure AD / Google IAM, когда isCrossHostRedirect(req), так же как в common #901. Не устанавливать Authorization повторно после того, как Go удалил его при кросс-хостовом 3xx.

Ссылки

  • github.com/prometheus/prometheus тег v3.15.0 (5241a27fe3c6983549fccc32f6e65917408c63cd)
  • storage/remote/client.go · storage/remote/azuread/azuread.go · storage/remote/googleiam/googleiam.go
  • prometheus/common #901
  • Рядом исправлено (не эта обёртка): CVE-2026-42151
  • CWE-201

Лицензия

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

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