AWS Codebuild - Token Leakage
Відновлення токенів, налаштованих у Github/Bitbucket
Спочатку перевірте, чи є налаштовані облікові дані джерела, які ви могли б витікати:
Via Docker Image
Якщо ви виявите, що автентифікація, наприклад, до Github налаштована в обліковому записі, ви можете екстрактувати цей доступ (GH token або OAuth token), змусивши Codebuild використовувати конкретний docker image для виконання збірки проекту.
Для цього ви можете створити новий проект Codebuild або змінити середовище існуючого, щоб налаштувати Docker image.
Docker image, який ви можете використовувати, це https://github.com/carlospolop/docker-mitm. Це дуже базовий Docker image, який налаштує змінні середовища https_proxy
, http_proxy
та SSL_CERT_FILE
. Це дозволить вам перехопити більшість трафіку хоста, вказаного в https_proxy
та http_proxy
, і довіряти SSL CERT, вказаному в SSL_CERT_FILE
.
Створіть та завантажте свій власний Docker MitM image
Слідуйте інструкціям репозиторію, щоб налаштувати IP-адресу проксі та налаштувати свій SSL сертифікат і збудуйте docker image.
НЕ НАЛАШТОВУЙТЕ
http_proxy
, щоб не перехоплювати запити до кінцевої точки метаданих.Ви можете використовувати
ngrok
, наприклад,ngrok tcp 4444
, щоб налаштувати проксі на вашому хості.Після того, як ви збудували Docker image, завантажте його до публічного репозиторію (Dockerhub, ECR...)
Налаштуйте середовище
Створіть новий проект Codebuild або змініть середовище існуючого.
Налаштуйте проект на використання раніше згенерованого Docker image.
Налаштуйте 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)
Нарешті, натисніть на Build the project, облікові дані будуть надіслані у відкритому вигляді (base64) на порт mitm:
Тепер зловмисник зможе використовувати токен зі своєї машини, перерахувати всі привілеї, які він має, і (зловживати) легше, ніж безпосередньо використовуючи сервіс CodeBuild.
Last updated