AWS Codebuild - Token Leakage
Last updated
Last updated
Learn & practice AWS Hacking: Learn & practice GCP Hacking:
Спочатку перевірте, чи є налаштовані облікові дані джерела, які ви могли б витікати:
Якщо ви виявите, що автентифікація, наприклад, до Github налаштована в обліковому записі, ви можете екстрактувати цей доступ (GH token або OAuth token), змусивши Codebuild використовувати конкретний docker image для виконання збірки проекту.
Для цього ви можете створити новий проект Codebuild або змінити середовище існуючого, щоб налаштувати Docker image.
Docker image, який ви можете використовувати, це . Це дуже базовий 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 з чимось на кшталт
Codebuild проекти мають налаштування під назвою insecureSsl
, яке приховане в вебі, і ви можете змінити його лише через API.
Увімкнення цього дозволяє Codebuild підключатися до репозиторію без перевірки сертифіката, запропонованого платформою.
Спочатку вам потрібно перерахувати поточну конфігурацію за допомогою чогось на кшталт:
Потім, зібравши інформацію, ви можете оновити налаштування проекту insecureSsl
на True
. Наступний приклад показує, як я оновлюю проект, зверніть увагу на insecureSsl=True
в кінці (це єдине, що потрібно змінити в зібраній конфігурації).
Крім того, додайте також змінні середовища http_proxy та https_proxy, які вказують на ваш tcp ngrok, як:
Нарешті, натисніть на Build the project, облікові дані будуть надіслані у відкритому вигляді (base64) на порт mitm:
Цю вразливість виправили 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
Нарешті, натисніть на Build the project, облікові дані будуть надіслані у відкритому вигляді (base64) на порт mitm:
Тепер зловмисник зможе використовувати токен зі своєї машини, перерахувати всі привілеї, які він має, і (зловживати) легше, ніж безпосередньо використовуючи сервіс CodeBuild.
Потім запустіть базовий приклад з на порту, вказаному змінними проксі (http_proxy та https_proxy)
Потім запустіть базовий приклад з на порту, вказаному змінними проксі (http_proxy та https_proxy)
Вчіться та практикуйте AWS Hacking: Вчіться та практикуйте GCP Hacking:
Перевірте !
Приєднуйтесь до 💬 або або слідкуйте за нами в Twitter 🐦 .
Діліться хакерськими трюками, надсилаючи PR до та репозиторіїв на github.