AWS - Steal Lambda Requests
Last updated
Last updated
Apprenez et pratiquez le hacking AWS : Apprenez et pratiquez le hacking GCP :
Slicer est un processus en dehors du conteneur qui envoie des invocations au processus init.
Le processus init écoute sur le port 9001 exposant quelques points de terminaison intéressants :
/2018-06-01/runtime/invocation/next
– obtenir le prochain événement d'invocation
/2018-06-01/runtime/invocation/{invoke-id}/response
– retourner la réponse du gestionnaire pour l'invocation
/2018-06-01/runtime/invocation/{invoke-id}/error
– retourner une erreur d'exécution
bootstrap.py a une boucle récupérant les invocations du processus init et appelle le code de l'utilisateur pour les gérer (/next
).
Enfin, bootstrap.py envoie au init la réponse
Notez que bootstrap charge le code de l'utilisateur en tant que module, donc toute exécution de code effectuée par le code de l'utilisateur se produit en réalité dans ce processus.
L'objectif de cette attaque est de faire exécuter au code de l'utilisateur un processus bootstrap.py
malveillant à l'intérieur du processus bootstrap.py
qui gère la requête vulnérable. De cette manière, le processus bootstrap malveillant commencera à communiquer avec le processus init pour gérer les requêtes pendant que le bootstrap légitime est piégé à exécuter le malveillant, donc il ne demandera pas de requêtes au processus init.
C'est une tâche simple à réaliser car le code de l'utilisateur est exécuté par le processus bootstrap.py
légitime. Ainsi, l'attaquant pourrait :
Envoyer un faux résultat de l'invocation actuelle au processus init, de sorte que init pense que le processus bootstrap attend plus d'invocations.
Une requête doit être envoyée à /${invoke-id}/response
Exécuter un bootstrap.py
malveillant qui gérera les prochaines invocations
Pour des raisons de discrétion, il est possible d'envoyer les paramètres d'invocation lambda à un C2 contrôlé par l'attaquant et ensuite de gérer les requêtes comme d'habitude.
Trouver une vulnérabilité RCE.
Exécuter le bootstrap malveillant.
Vous pouvez facilement effectuer ces actions en exécutant :
L'invoke-id peut être obtenu à partir de la pile du processus bootstrap.py
légitime en utilisant le module python (comme ) ou simplement en le demandant à nouveau à /2018-06-01/runtime/invocation/next
(comme ).
Pour cette attaque, il suffit d'obtenir le code original de bootstrap.py
du système ou de , d'ajouter le code malveillant et de l'exécuter à partir de l'invocation lambda actuelle.
Générer un bootstrap malveillant (par exemple )
Pour plus d'informations, consultez
Apprenez et pratiquez le hacking AWS : Apprenez et pratiquez le hacking GCP :
Consultez les !
Rejoignez le 💬 ou le ou suivez nous sur Twitter 🐦 .
Partagez des astuces de hacking en soumettant des PRs aux et dépôts github.