yamada_yoshiki Posted by

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

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

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

問題

『次のレベルでは、EC2で実行されているWebページにアクセスする必要があります。
http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud
nginxがセットアップされた直後に、そのEC2のスナップショットが作成されたことを知っておくと役立ちます。』
と書いてます。

クリアするにはURLにアクセスし、スナップショットを取得してBasic認証を突破する必要があります。

nginx:リバースプロキシ(負荷分散)機能があるWebサーバソフト

ヒント


level4EC2に存在するEBSスナップショットを自分のEBS内に持って行き中身を解析することでこの問題を解くことができます。

EBS:EC2の仮想的な外付けHDDみたいなサービス
(EC2はサーバを停止すると初期化を行う特徴があり、通常はEBSにデータを保存してからEC2の停止を行ないます)

スナップショットEBSに含まれるデータが丸ごとS3に複製される機能
(EBS上のデータが破損しても、スナップショット時点のデータをS3から復元可能)

認証情報に紐づく情報を調べる

以下のコマンドで、利用しているAWSアカウントやユーザの情報を確認できます
(例)[aws sts get-caller-identity -–profile 設定したプロファイル名]
aws sts get-caller-identity –profile flawsSample
Level3で取得したクレデンシャル(認証情報)に紐づくプロファイル名(flawsSample)を指定して実行してみます。

[ユーザ情報内容]
ユーザIDアクセスキーID
AWSアカウントIDARNを構築するのに使用する12桁の数字
ARN:AWSのサービスリソースを一意に識別するための記述形式

スナップショットの情報を取得する

[aws ec2 describe-snapshots]コマンドでスナップショットの情報を取得できます。

利用可能な全てのスナップショットの情報が出力されるため、owner-idAWSアカウントIDを指定しすることで指定したAWSアカウントIDが公開しているスナップショットの情報のみを取得しています。

(例)[aws ec2 describe-snapshots –owner-id AWSアカウントID –profile 設定したプロファイル名]
aws ec2 describe-snapshots –owner-id 975426262029 –profile flawsSample

level4スナップショット情報はパブリックに公開されているためどの認証情報からでも取得できますが、リージョンホストサーバーがあるus-west-2に指定する必要があります。

パーミッション(アクセス権)を確認

先ほど取得したsnapshot-idを指定してスナップショットパーミッション(アクセス権)を確認することができます。
(例)[aws ec2 describe-snapshot-attribute –snapshot-id snapshot-id –attribute createVolumePermission –profile 設定したプロファイル名]
aws ec2 describe-snapshot-attribute –snapshot-id snap-0b49342abd1bdcb89 –attribute createVolumePermission –profile flawsSample

CreateVolumePermissonGroupキーの値がallとなっている場合、誰でもスナップショットが作成可能です。

自分のアカウントにスナップショットからEBSボリュームを作成

[aws ec2 create-volume]コマンドで、パーミッション(アクセス権)を確認した際に取得したsnapshot-idを指定して、自分のアカウントに該当のスナップショットからEBSボリューム(記憶領域)を作成します。

作成にはリージョンus-west-2に指定する必要があります。
またアベイラビリティゾーンも指定する必要があるためus-west-2bと設定してください。

アベイラビリティゾーン:AWSの各リージョンに存在するデータセンター (サーバ等)

(例)[aws ec2 create-volume –availability-zone アベイラビリティゾーン –region us-west2 –snapshot-id snapshot-id]
aws ec2 create-volume –availability-zone us-west-2b –region us-west2 –snapshot-id snap-0b49342abd1bdcb89

EC2にEBSボリュームをアタッチ

マネジメントコンソールから確認すると自分のアカウントにEBSボリュームが作成されています。

リージョン米国西部 (オレゴン) us-west-2となります。

適当にEC2を作成します(Ubuntuが推奨されています)
作成したEC2EBSボリュームアタッチしてみてください。

アタッチ:接続すること(切断はデタッチ)

作成したEC2インスタンスSSHログインし、アタッチしたボリュームマウントしてみてください
マウントした領域中から、Basic認証のID/PASSを探しだすことができればゴールです。

マウント:コンピュータに接続した機器やメディアをコンピュータに認識させ、使える状態にすること

回答

SSHでログイン後、mountコマンドを利用して、EC2アタッチしたEBSボリュームマウントします。

Basic認証のID・パスワードを取得

調査すると/home/ubuntu.htpasswdファイルを生成するスクリプトファイルがあり、ID/PASSが記載されていることが分かります。

この情報で最初のBasic認証にログインすればクリアとなります。

この問題から学べること

AWSではEC2RDSスナップショットを取得することができます。

RDS:クラウド上で提供するRDBMS(リレーショナルデータベース)サービス

AWSでは通常バックアップ目的でEC2のスナップショットを取得しますが、悪用されてしまうことがあります。

デフォルトではスナップショットは自分のアカウントからのアクセスに限定されます。
スナップショットを適切に管理することが重要です。

最後に

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

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