AWS - Steal Lambda Requests
Last updated
Last updated
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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
– hole das nächste Aufrufereignis
/2018-06-01/runtime/invocation/{invoke-id}/response
– gib die Handler-Antwort für den Aufruf zurück
/2018-06-01/runtime/invocation/{invoke-id}/error
– gib einen Ausführungsfehler zurück
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.
Beachte, 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.
Das Ziel dieses Angriffs ist es, den Benutzer-Code dazu zu bringen, einen bösartigen bootstrap.py
-Prozess innerhalb des bootstrap.py
-Prozesses auszuführen, 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 angefordert werden an /2018-06-01/runtime/invocation/next
(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.
Finde eine RCE-Schwachstelle.
Generiere einen bösartigen Bootstrap (z.B. https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py)
Führe den bösartigen Bootstrap aus.
Du kannst diese Aktionen einfach ausführen, indem du Folgendes ausführst:
Für weitere Informationen siehe https://github.com/carlospolop/lambda_bootstrap_switcher
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)