AWS - Steal Lambda Requests
Last updated
Last updated
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Slicerはコンテナ外のプロセスで、initプロセスに呼び出しを送信します。
initプロセスはポート9001でリッスンし、いくつかの興味深いエンドポイントを公開しています:
/2018-06-01/runtime/invocation/next
– 次の呼び出しイベントを取得
/2018-06-01/runtime/invocation/{invoke-id}/response
– 呼び出しのハンドラー応答を返す
/2018-06-01/runtime/invocation/{invoke-id}/error
– 実行エラーを返す
bootstrap.pyはinitプロセスから呼び出しを取得するループを持ち、ユーザーのコードを呼び出して処理します(/next
)。
最後に、bootstrap.pyはinitに応答を送信します。
bootstrapはユーザーコードをモジュールとして読み込むため、ユーザーコードによって実行されるコードは実際にはこのプロセス内で発生しています。
この攻撃の目的は、ユーザーのコードが脆弱なリクエストを処理する**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に送信し、その後リクエストを通常通り処理することが可能です。
この攻撃では、システムから**bootstrap.py
**の元のコードを取得するか、githubから取得し、悪意のあるコードを追加して、現在のlambda呼び出しから実行するだけで十分です。
RCE脆弱性を見つける。
悪意のある bootstrapを生成する(例:https://raw.githubusercontent.com/carlospolop/lambda_bootstrap_switcher/main/backdoored_bootstrap.py)。
悪意のあるbootstrapを実行する。
これらのアクションは簡単に実行できます:
For more info check https://github.com/carlospolop/lambda_bootstrap_switcher
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)