flaws.cloud Level5 write up
Level5の問題です。問題文は次のとおり。
問題
This EC2 has a simple HTTP only proxy on it. Here are some examples of it's usage: http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/flaws.cloud/ http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/summitroute.com/blog/feed.xml http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/neverssl.com/ See if you can use this proxy to figure out how to list the contents of the level6 bucket at level6-cc4c404a8a8b876167f5e70a7d8c9880.flaws.cloud that has a hidden directory in it.
http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud
のプロキシ機能を利用して秘匿されたディレクトリ上に保管されているLevel6の問題コンテンツを探す問題です。
解答
何も取っ掛かりがわからなかったのでHint1を開けると次のように記載されていました。IPアドレス 169.254.169.254
でメタデータサービスと呼ばれるものが利用できるということです。
On cloud services, including AWS, the IP 169.254.169.254 is magical. It's the metadata service. There is an RFC on it (RFC-3927), but you should read the AWS specific docs on it here.
Need another hint? Go to Hint 2
調べてみると、実行中のインスタンスからhttp://169.254.169.254/latest/meta-data/ にアクセスすることでインスタンスメタデータというインスタンスに関するデータを表示できることがわかりました。
ここで思い出したのが先日参加したSEC-JAWS勉強会で紹介されたSSRFの攻撃テクニック。URLの一部をインスタンスメタデータを返す値に変更することでメタデータを取得できるというものです。
問題の例で与えられているURL例を見ると、http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/<URL>/
という形式になっています。このURLの部分にインスタンスメタデータを返すURLを設定してアクセスしてみると、メタデータの項目を取得できました。
インスタンスにアタッチされているIAMロールの認証情報を取得できると都合が良いので、http://169.254.169.254/latest/meta-data/iam/security-credentials
の情報を表示させると、flawsというロールが存在しており、インスタンスメタデータを通じて認証情報を取得することができました。
入手したIAMロールをAWS CLIに設定してS3の情報を確認すると ddcc78ff というディレクトリを確認できます。
ブラウザでアクセスすることでLevel 6の問題を表示できました。
Level 6に続く