AWS - Steal Lambda Requests
Last updated
Last updated
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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 завантажує код користувача як модуль, тому будь-яке виконання коду, яке виконується кодом користувача, насправді відбувається в цьому процесі.
Мета цієї атаки - змусити код користувача виконати шкідливий процес 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.
Ви можете легко виконати ці дії, запустивши:
Для отримання додаткової інформації перегляньте https://github.com/carlospolop/lambda_bootstrap_switcher
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)