# AWS - Lambda Post Exploitation {{#include ../../../../banners/hacktricks-training.md}} ## Lambda Para mais informações, confira: {{#ref}} ../../aws-services/aws-lambda-enum.md {{#endref}} ### Exfilrtate Lambda Credentials Lambda usa variáveis de ambiente para injetar credenciais em tempo de execução. Se você conseguir acessá-las (lendo `/proc/self/environ` ou usando a própria função vulnerável), pode usá-las você mesmo. Elas vivem nos nomes de variável padrão `AWS_SESSION_TOKEN`, `AWS_SECRET_ACCESS_KEY`, e `AWS_ACCESS_KEY_ID`. Por padrão, essas terão acesso para gravar em um cloudwatch log group (o nome do qual está armazenado em `AWS_LAMBDA_LOG_GROUP_NAME`), assim como para criar log groups arbitrários; entretanto, funções lambda frequentemente têm mais permissões atribuídas com base em seu uso pretendido. ### `lambda:Delete*` Um atacante concedido lambda:Delete* pode deletar funções Lambda, versions/aliases, layers, event source mappings e outras configurações associadas. ```bash aws lambda delete-function \ --function-name ``` ### Roubar requisições de URL de outras funções Lambda Se um atacante conseguir RCE dentro de uma função Lambda, ele poderá roubar as requisições HTTP de outros usuários para essa Lambda. Se as requisições contiverem informações sensíveis (cookies, credenciais...), ele poderá exfiltrá-las. {{#ref}} aws-warm-lambda-persistence.md {{#endref}} ### Roubar requisições de URL de outras funções Lambda & requisições de extensions Abusando de Lambda Layers, também é possível abusar de extensions e persistir na função Lambda, além de roubar e modificar requisições. {{#ref}} ../../aws-persistence/aws-lambda-persistence/aws-abusing-lambda-extensions.md {{#endref}} ### AWS Lambda – VPC Egress Bypass Forçar uma função Lambda a sair de uma VPC restrita atualizando sua configuração com um VpcConfig vazio (SubnetIds=[], SecurityGroupIds=[]). A função então será executada no plano de rede gerenciado pelo Lambda, recuperando o acesso à internet de saída e contornando controles de egress aplicados por sub-redes VPC privadas sem NAT. {{#ref}} aws-lambda-vpc-egress-bypass.md {{#endref}} ### AWS Lambda – Runtime Pinning/Rollback Abuse Abuse `lambda:PutRuntimeManagementConfig` para fixar uma função a uma versão específica de runtime (Manual) ou congelar atualizações (FunctionUpdate). Isso preserva compatibilidade com layers/wrappers maliciosos e pode manter a função em um runtime desatualizado e vulnerável para facilitar exploração e persistência de longo prazo. {{#ref}} aws-lambda-runtime-pinning-abuse.md {{#endref}} ### AWS Lambda – Log Siphon via LoggingConfig.LogGroup Redirection Abuse `lambda:UpdateFunctionConfiguration` controles avançados de logging para redirecionar os logs de uma função para um log group do CloudWatch Logs escolhido pelo atacante. Isso funciona sem alterar o código ou a role de execução (a maioria das roles Lambda já inclui `logs:CreateLogGroup/CreateLogStream/PutLogEvents` via `AWSLambdaBasicExecutionRole`). Se a função imprimir segredos/corpos de requisição ou falhar com stack traces, você pode coletá-los do novo log group. {{#ref}} aws-lambda-loggingconfig-redirection.md {{#endref}} ### AWS - Lambda Function URL Public Exposure Transforme uma Function URL privada da Lambda em um endpoint público não autenticado trocando o Function URL AuthType para NONE e anexando uma policy baseada em recurso que concede lambda:InvokeFunctionUrl a todos. Isso permite invocação anônima de funções internas e pode expor operações sensíveis de backend. {{#ref}} aws-lambda-function-url-public-exposure.md {{#endref}} ### AWS Lambda – Event Source Mapping Target Hijack Abuse `UpdateEventSourceMapping` para alterar a função Lambda alvo de um Event Source Mapping (ESM) existente, de modo que registros de DynamoDB Streams, Kinesis ou SQS sejam entregues a uma função controlada pelo atacante. Isso desvia silenciosamente dados em tempo real sem tocar nos produtores ou no código da função original. {{#ref}} aws-lambda-event-source-mapping-hijack.md {{#endref}} ### AWS Lambda – EFS Mount Injection data exfiltration Abuse `lambda:UpdateFunctionConfiguration` para anexar um EFS Access Point existente a uma função Lambda, então implante código trivial que lista/leia arquivos do caminho montado para exfiltrar segredos/configs compartilhados que a função antes não conseguia acessar. {{#ref}} aws-lambda-efs-mount-injection.md {{#endref}} {{#include ../../../../banners/hacktricks-training.md}}