4.5 KiB
AWS - Lambda Post Exploitation
{{#include ../../../../banners/hacktricks-training.md}}
Lambda
Pour plus d'informations, consultez :
{{#ref}} ../../aws-services/aws-lambda-enum.md {{#endref}}
Exfilrtate Lambda Credentials
Lambda utilise des variables d'environnement pour injecter des credentials à l'exécution. Si vous pouvez y accéder (en lisant /proc/self/environ ou en utilisant la fonction vulnérable elle‑même), vous pouvez les utiliser. Elles se trouvent dans les noms de variables par défaut AWS_SESSION_TOKEN, AWS_SECRET_ACCESS_KEY, et AWS_ACCESS_KEY_ID.
Par défaut, celles‑ci auront le droit d'écrire dans un cloudwatch log group (dont le nom est stocké dans AWS_LAMBDA_LOG_GROUP_NAME), ainsi que de créer des log groups arbitraires ; cependant les fonctions lambda ont fréquemment des permissions supplémentaires assignées en fonction de leur usage prévu.
Steal Others Lambda URL Requests
Si un attaquant parvient d'une manière ou d'une autre à obtenir RCE dans une Lambda, il pourra voler les requêtes HTTP d'autres utilisateurs envoyées à la lambda. Si les requêtes contiennent des informations sensibles (cookies, credentials...), il pourra les dérober.
{{#ref}} aws-warm-lambda-persistence.md {{#endref}}
Steal Others Lambda URL Requests & Extensions Requests
En abusant des Lambda Layers, il est aussi possible d'abuser des extensions et de persister dans la lambda, mais aussi de voler et modifier les requêtes.
{{#ref}} ../../aws-persistence/aws-lambda-persistence/aws-abusing-lambda-extensions.md {{#endref}}
AWS Lambda – VPC Egress Bypass
Forcer une fonction Lambda hors d'un VPC restreint en mettant à jour sa configuration avec un VpcConfig vide (SubnetIds=[], SecurityGroupIds=[]). La fonction s'exécutera alors dans le plan réseau géré par Lambda, récupérant l'accès sortant à Internet et contournant les contrôles d'egress appliqués par des sous‑réseaux VPC privés sans NAT.
{{#ref}} aws-lambda-vpc-egress-bypass.md {{#endref}}
AWS Lambda – Runtime Pinning/Rollback Abuse
Abuser de lambda:PutRuntimeManagementConfig pour pin (verrouiller) une fonction sur une version runtime spécifique (Manual) ou geler les mises à jour (FunctionUpdate). Cela préserve la compatibilité avec des layers/wrappers malveillants et peut maintenir la fonction sur un runtime obsolète et vulnérable, facilitant l'exploitation et la persistance à long terme.
{{#ref}} aws-lambda-runtime-pinning-abuse.md {{#endref}}
AWS Lambda – Log Siphon via LoggingConfig.LogGroup Redirection
Abuser des contrôles avancés de logging de 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/corps de requête ou plante avec des stack traces, vous pouvez les récupérer depuis le nouveau log group.
{{#ref}} aws-lambda-loggingconfig-redirection.md {{#endref}}
AWS - Lambda Function URL Public Exposure
Transformer une Lambda Function URL privée en un endpoint public non authentifié en passant le Function URL AuthType à NONE et en attachant une resource-based policy qui accorde lambda:InvokeFunctionUrl à tout le monde. Cela permet l'invocation anonyme de fonctions internes et peut exposer des opérations backend sensibles.
{{#ref}} aws-lambda-function-url-public-exposure.md {{#endref}}
AWS Lambda – Event Source Mapping Target Hijack
Abuser de UpdateEventSourceMapping pour changer la fonction Lambda cible d'un Event Source Mapping (ESM) existant afin que les enregistrements de DynamoDB Streams, Kinesis, ou SQS soient livrés à une fonction contrôlée par l'attaquant. Cela détourne silencieusement des données en direct sans toucher aux producteurs ni au code de la fonction d'origine.
{{#ref}} aws-lambda-event-source-mapping-hijack.md {{#endref}}
AWS Lambda – EFS Mount Injection data exfiltration
Abuser de lambda:UpdateFunctionConfiguration pour attacher un EFS Access Point existant à une Lambda, puis déployer du code trivial qui liste/lit des fichiers depuis le chemin monté afin d'exfiltrer des secrets/config partagés auxquels la fonction n'avait pas accès auparavant.
{{#ref}} aws-lambda-efs-mount-injection.md {{#endref}}
{{#include ../../../../banners/hacktricks-training.md}}