AWS Codebuild - Token Leakage
Відновлення налаштованих токенів Github/Bitbucket
Спочатку перевірте, чи є налаштовані будь-які джерела облікових даних, які ви можете витікати:
Через 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
.
Створіть та завантажте свій власний образ Docker MitM
Дотримуйтесь інструкцій репозиторію, щоб встановити IP-адресу вашого проксі та встановити свій SSL-сертифікат та побудувати образ Docker.
НЕ ВСТАНОВЛЮЙТЕ
http_proxy
, щоб не перехоплювати запити до кінцевої точки метаданих.Ви можете використовувати
ngrok
, наприклад,ngrok tcp 4444
, щоб встановити проксі до вашого хоста.Після побудови образу Docker завантажте його в публічний репозиторій (Dockerhub, ECR...)
Встановіть середовище
Створіть новий проект Codebuild або змініть середовище існуючого.
Встановіть проект для використання раніше згенерованого образу Docker
Встановіть MitM проксі на вашому хості
Як вказано в репозиторії Github, ви можете використовувати щось на зразок:
Використана версія mitmproxy була 9.0.1, було повідомлено, що з версією 10 це може не працювати.
Запустіть збірку та захопіть облікові дані
Ви можете побачити токен у заголовку Authorization:
Це також можна зробити з aws cli щось на зразок
Через протокол 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)
Натисніть на Побудувати проект, підтвердження буде відправлено у відкритому вигляді (base64) на порт mitm:
Тепер зловмиснику буде можливість використовувати токен зі свого комп'ютера, переглядати всі привілеї, які він має, та (зловживати) легше, ніж використовуючи службу CodeBuild безпосередньо.
Last updated