日記帳

WE NEED メーデー 睡眠を!

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/ にアクセスすることでインスタンスメタデータというインスタンスに関するデータを表示できることがわかりました。

docs.aws.amazon.com

ここで思い出したのが先日参加したSEC-JAWS勉強会で紹介されたSSRFの攻撃テクニック。URLの一部をインスタンスメタデータを返す値に変更することでメタデータを取得できるというものです。

speakerdeck.com

問題の例で与えられているURL例を見ると、http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/<URL>/ という形式になっています。このURLの部分にインスタンスメタデータを返すURLを設定してアクセスしてみると、メタデータの項目を取得できました。

f:id:mot_skmt:20210418141514p:plain

インスタンスにアタッチされているIAMロールの認証情報を取得できると都合が良いので、http://169.254.169.254/latest/meta-data/iam/security-credentials の情報を表示させると、flawsというロールが存在しており、インスタンスメタデータを通じて認証情報を取得することができました。

f:id:mot_skmt:20210418141609p:plain

f:id:mot_skmt:20210418141957p:plain

入手したIAMロールをAWS CLIに設定してS3の情報を確認すると ddcc78ff というディレクトリを確認できます。

f:id:mot_skmt:20210418142027p:plain

ブラウザでアクセスすることでLevel 6の問題を表示できました。

f:id:mot_skmt:20210418142131p:plain

Level 6に続く