Shikata Ga Nai

Private? There is no such things.

AWS SSRF to Root on production instance — A bug worth 1.75Lacsを訳してみた

Hello there, ('ω')ノ

 

AWS SSRF から本番インスタンスのルートへを。

 

脆弱性

 SSRF

 RCE

 パスワードのリセット

 

記事:

 https://logicbomb.medium.com/a-bug-worth-1-75lacs-aws-ssrf-to-rce-8d43d5fda899

 

今回は、AWS SSRF をエスカレートして。

インドで成長しているトレーディング スタートアップの 1 つで。

リモート コード実行 (RCE) を実行する方法を。

 

 

アプリのさまざまなセクションに手動で移動して。

機密性の高い API エンドポイントを探していて。

並行して、ターゲット スコープを Burp Suite の「Crawl and Audit」に追加して。

アプリには、通常の「パスワード リセット」機能があり。

エンドポイントをよく見ると「return_url」というパラメータがあり。

このようなパラメータには、簡単に見つけられるバグが含まれる可能性が常にあり。

 

そして、Burp Suite が同じエンドポイントで。

「外部サービス インタラクション (DNS)」の脆弱性を発見したとき。

自分の期待は正しかったことが証明され。

 

さまざまな HTTP リクエスト ヘッダをチェックしているときに。

レスポンス ヘッダが X-Amz-Cf-Id であることがわかり。

プロファイル写真を取得するための S3 バケットのやり取りもあったため。

アプリケーションが AWS 経由であることは明らかで。

 

次の動きは、SSRF が可能かどうかを確認することで。

AWS メタデータ URL (http://169.254.169.254/latest/meta-data/) に。

アクセスしてみましたが、以下は CURL 要求に対する応答で。

 

 

インスタンスメタデータからセキュリティ認証情報を取得していて。

 

 

それはSSRFを確認することに。

AWS は、AWS システム マネージャと呼ばれるサービスを提供して。

AWS クラウドで実行されているアプリケーションと。

インフラストラクチャを管理し。

これは、コマンドライン ツールでも使用できて。

 

https://docs.aws.amazon.com/cli/latest/reference/ssm/index.html

 

ここで気に入ったのは、SSM を介してインスタンスでリモート コマンドを。

実行するには関連するロールがインスタンスに関連付けられている必要があることで。

 

1.上記のセキュリティ認証情報を使用して、AWS CLI をインストールして設定して。

 

 $ export AWS_ACCESS_KEY_ID=
 $ export AWS_SECRET_ACCESS_KEY=
 $ export AWS_DEFAULT_REGION=
 $ export AWS_SESSION_TOKEN=

 

2.以下のコマンドを使用して。

 最初のステップで使用されたリージョンを見つけることができ。

 

 http://169.254.169.254/latest/meta-data/placement/availability-zone

 

3.send-command を使用してコマンドを実行し。

 クエリは次のようになり。

 

 $ aws ssm send-command --document-name "AWS-RunShellScript" --comment "AnyComment" --instance-ids="[Instance-id]" --parameters "commands=whoami"

 

 このコマンドの出力は CommandId を提供し。

 

 

4.3番目のステップで使用されるインスタンス ID を取得するには。

 

 http://169.254.169.254/latest/meta-data/instance-id

 

5.実行されたコマンドの出力を確認するための最終ステップ。

 (ステップ 3 の「whoami」で使用)

 

 $ aws ssm list-command-invocations --command-id="[Command_Id]" --details

 

 

ついにコマンドを実行することができ、 出力は「root」として表示され。

これが、AWS SSRF を RCE にエスカレートする方法で。

 

Best regards, (^^ゞ