yamada_yoshiki Posted by

おはようございます!こんにちは!こんばんは!おやすみなさい!
山田です。

前回のpart4【勉強会の内容編(Level4)】に続きまして、今回はLevel5の問題を解説します。

↓参加した勉強会のグループになります↓
AWSハッキング(1月18日)&大和セキュリティ新年会

問題


『EC2のプロキシサービスを利用してlevel6のS3バケットに存在する隠しディレクトリを見つけてください』


URLパスの一部にURLを指定するとプロキシとして動作するようになっています。
[http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/example.com/]

プロキシ:内部ネットワークからインターネット接続を行う際、高速アクセスや安全通信等を確保するための中継サーバ

ヒント

SSRFを利用した認証情報の取得

SSRF:攻撃者から直接到達できないサーバーに対する攻撃手法の一種

AWS APIを利用して認証情報を取得


IAMロールが紐づいた状態のインスタンスにて、AWS APIへ一時的なクレデンシャル(認証情報)を要求するリクエストを強制させられ、EC2IAMロールに紐づいたクレデンシャルを窃取されてしまう。

IAMロール:特定の権限が与えられたIAM IDのこと
(ロールを使用することで、特定のAWSリソースにアクセスするため権限をユーザやアプリケーション、サービスに委任することが可能になります。)

回答

SSRFを利用して認証情報を取得


以下のURLにアクセスすると認証情報を取得できます。
http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/
169.254.169.254/latest/meta-data/iam/security-credentials/flaws

(AWSで169.254.169.254はインスタンスメタデータの取得に使われます。)

認証情報をセット

取得した認証情報をAWS CLIで利用できるように設定します。
token情報(aws_session_token)も設定する必要があります。

token:ワンタイムパスワード(使い捨てのパスワード)を生成する機械やソフトウェア

S3バケットを確認

AWS CLIにてS3バケットを読みに行けば隠しディレクトリが分かり、判明したディレクトリにアクセスすればクリアです。
cpコマンドと同様に–recursiveオプションで配下にあるディレクトリの内容も表示されます。
aws s3 ls s3://level6-cc4c404a8a8b876167f5e70a7d8c9880.flaws.cloud –recursive –profile 認証情報のプロファイル名

この問題から学べること

この問題と同じような手口で実際に攻撃された事案が話題となりました。

メタデータを利用するためのAPIを悪用して認証情報を取得できることを覚えておいてください。
また、この方法はAWSだけではなく、他のクラウドサービスにおいても悪用される危険性があります。

最後に

今回はflaws.cloudLevel5の内容をまとめました。

次は最後のlevel6の内容になります!!

part6【勉強会の内容編(Level6)】へ続きます。