# AWS - Lambda Post Exploitation {{#include ../../../../banners/hacktricks-training.md}} ## Lambda For more information check: {{#ref}} ../../aws-services/aws-lambda-enum.md {{#endref}} ### Exfilrtate Lambda Credentials Lambdaはランタイムで環境変数を使って資格情報を注入します。もしそれらにアクセスできれば(`/proc/self/environ` を読む、または脆弱な関数自体を利用するなど)、その資格情報を利用できます。これらはデフォルトの変数名 `AWS_SESSION_TOKEN`、`AWS_SECRET_ACCESS_KEY`、`AWS_ACCESS_KEY_ID` に格納されます。 デフォルトでは、これらの資格情報は cloudwatch のロググループ(名前は `AWS_LAMBDA_LOG_GROUP_NAME` に格納)への書き込みや任意のロググループ作成が可能です。加えて、Lambda関数は用途に応じてさらに多くの権限が割り当てられていることが多いです。 ### Steal Others Lambda URL Requests If an attacker somehow manage to get RCE inside a Lambda he will be able to steal other users HTTP requests to the lambda. If the requests contain sensitive information (cookies, credentials...) he will be able to steal them. {{#ref}} aws-warm-lambda-persistence.md {{#endref}} ### Steal Others Lambda URL Requests & Extensions Requests Lambda Layers を悪用すると、extensions を悪用してLambda内に永続化し、リクエストの窃取や改竄を行うことも可能です。 {{#ref}} ../../aws-persistence/aws-lambda-persistence/aws-abusing-lambda-extensions.md {{#endref}} ### AWS Lambda – VPC Egress Bypass 空の VpcConfig(SubnetIds=[], SecurityGroupIds=[])で設定を更新することで、Lambda関数を制限されたVPCから外へ強制的に出すことができます。そうすると関数はLambda管理のネットワークプレーンで実行され、アウトバウンドのインターネットアクセスを回復し、NATのないプライベートVPCサブネットで課される送信制御を回避します。 {{#ref}} aws-lambda-vpc-egress-bypass.md {{#endref}} ### AWS Lambda – Runtime Pinning/Rollback Abuse `lambda:PutRuntimeManagementConfig` を悪用して関数を特定のランタイムバージョンに固定(Manual)したり、更新を凍結(FunctionUpdate)したりします。これにより悪意ある layer/wrapper と互換性を維持し、脆弱な旧ランタイムにとどめて exploitation や長期的な永続化を助けることができます。 {{#ref}} aws-lambda-runtime-pinning-abuse.md {{#endref}} ### AWS Lambda – Log Siphon via LoggingConfig.LogGroup Redirection `lambda:UpdateFunctionConfiguration` の高度なログ設定を悪用して、関数のログを攻撃者が指定した CloudWatch Logs のロググループにリダイレクトできます。コードや実行ロールを変更する必要はありません(ほとんどの Lambda ロールは `AWSLambdaBasicExecutionRole` 経由で既に `logs:CreateLogGroup/CreateLogStream/PutLogEvents` を含んでいます)。関数が秘密情報やリクエストボディを出力したり、スタックトレースでクラッシュした場合、新しいロググループからそれらを収集できます。 {{#ref}} aws-lambda-loggingconfig-redirection.md {{#endref}} ### AWS - Lambda Function URL Public Exposure Function URL の AuthType を NONE に切り替え、lambda:InvokeFunctionUrl を全員に付与するリソースベースポリシーをアタッチすることで、プライベートな Lambda Function URL を認証不要の公開エンドポイントにできます。これにより内部関数の匿名実行が可能になり、機密性の高いバックエンド処理が露出する可能性があります。 {{#ref}} aws-lambda-function-url-public-exposure.md {{#endref}} ### AWS Lambda – Event Source Mapping Target Hijack `UpdateEventSourceMapping` を悪用して既存の Event Source Mapping (ESM) のターゲットLambda関数を変更すると、DynamoDB Streams、Kinesis、または SQS からのレコードが攻撃者管理下の関数に配信されます。これによりプロデューサーや元の関数コードに触れることなく、ライブデータを密かに迂回させられます。 {{#ref}} aws-lambda-event-source-mapping-hijack.md {{#endref}} ### AWS Lambda – EFS Mount Injection data exfiltration `lambda:UpdateFunctionConfiguration` を悪用して既存の EFS Access Point を Lambda にアタッチし、マウントされたパスからファイルを列挙/読み取りする簡単なコードをデプロイすることで、関数が以前アクセスできなかった共有の秘密情報や設定を持ち出せます。 {{#ref}} aws-lambda-efs-mount-injection.md {{#endref}} {{#include ../../../../banners/hacktricks-training.md}}