AWS - Steal Lambda Requests
Потік Lambda
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
ID запиту можна отримати зі стеку легітимного
bootstrap.py
процесу, використовуючи модуль python inspect (як запропоновано тут) або просто запросивши його знову до/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
Посилання
Last updated