サイトflaws.cloudはS3バケットとしてホストされています。 これは、githubページを介してホスティングするのと同様に、静的サイトをホストするのに最適です。 S3ホスティングに関する興味深い事実:サイトをS3バケットとしてホスティングする場合、バケット名(flaws.cloud)はドメイン名(flaws.cloud)と一致する必要があります。 また、S3バケットはグローバルな名前空間です。つまり、2人が同名のバケットを持つことはできません。 この結果、apple.comという名前のバケットを作成することができ、AppleはS3ホスティングでメインサイトをホストすることはできません。
次のように、ドメインでDNSルックアップを実行することによって、サイトがS3バケットとしてホストされていると判断できます。
dig +nocmd flaws.cloud any +multiline +noall +answer
# Returns:
# flaws.cloud. 5 IN A 54.231.184.255
ブラウザーで54.231.184.255を訪問すると、https://aws.amazon.com/s3/ にリダイレクトされます。
なのでflaws.cloudはS3バケットとしてホストされているということがわかります。
次のコマンドを実行できます:
nslookup 54.231.184.255
# Returns:
# Non-authoritative answer:
# 255.184.231.54.in-addr.arpa name = s3-website-us-west-2.amazonaws.com
これによってus-west-2リージョンにホストされていることがわかります。
サイドノート(このゲームでは役に立たない):ウェブホスティング用に設定されたS3バケットには、自分のDNSを設定せずにブラウズするためのAWSドメインが与えられています。この場合、flaws.cloudはhttp://flaws.cloud.s3-website-us-west-2.amazonaws.com/ からアクセスすることもできます。
このレベルでは、その権限が少し緩いということを知ることができます
あなたは us-west-2にflaws.cloudという名前のバケットがあることを知っているので、aws cliを使ってバケットをブラウズしようとすることができます:
aws s3 ls s3://flaws.cloud/ --no-sign-request --region us-west-2
もしあなたがそのリージョンを知らなかったのであれば、十数箇所のリージョンがあるのでその中から探します。また、GUIツールcyberduckを使用してこのバケットをブラウズして、自動的に領域を把握することもできます。
最後に、(http://flaws.cloud.s3.amazonaws.com/)にアクセスして、このバケットの権限の問題のためにファイルを一覧表示することもできます。
これらのツールを実行せずに次のレベルに到達する方法を知りたいですか?に行く
この時点で、サブドメインに移動するよう指示するファイルが見つかりました (http://level2-c8b217a33fcf1f839f6f1f73a00a9ae7.flaws.cloud)
AWSでは、すべての種類のパーミッションと機能を備えたS3バケットを設定して、静的ファイルのホストに使用することができます。多くの人が誤って権限をあまりにも緩く開いてしまいます。 Webサーバーのディレクトリ一覧を許可しないように、バケット一覧を許可しないでください。
- Legal RobotリンクとShopifyリンク のS3バケットのディレクトリ一覧。
- ShopifyのS3バケットに対する読み書き権限リンク とUdemyリンク 。このチャレンジには他のプレイヤーのチャレンジを破壊するための読み書き権限はありませんでしたが、それは一般的な問題です。
デフォルトでは、S3バケットはプライベートであり、作成時に安全です。 Webページとしてアクセスできるようにするために、私は「Static Website Hosting」を有効にしてバケットポリシーを変更して誰もが "s3:GetObject"権限を持つようにしました。 。しかし、この欠陥を紹介するために、 "Everyone"に "List"権限を追加する権限を変更しました
(図)
「Everyone」とは、インターネット上のすべての人を意味します。そのリストの許可のためにhttp://flaws.cloud.s3.amazonaws.com/ に行くだけでファイルを一覧表示することもできます。
次のレベルはかなり似ていて、ややひねっています。このために、独自のAWSアカウントが必要になります。あなたは無料ティア が必要です。
独自のAWSキーが必要で、AWS CLIを使用する必要があります。第1レベルと同様に、このサブドメインが "level2-c8b217a33fcf1f839f6f1f73a00a9ae7.flaws.cloud"という名前のS3バケットとしてホストされていることがわかります。
その権限はあまりにも緩いですが、内部にあるものを見るには独自のAWSアカウントが必要です。自分のアカウントを使って以下を実行できます:
aws s3 --profile YOUR_ACCOUNT ls s3://level2-c8b217a33fcf1f839f6f1f73a00a9ae7.flaws.cloud
「Everyone」へのアクセス許可を開くのと同様に、人々は誤って「Any Authenticated AWS User」へのアクセス許可を開きます。実際にはAWSアカウントを持っている人を意味するときに、誤って自分のアカウントのユーザーにしかなるとは思わないかもしれません。
- Shopifyで認証されたAWSユーザの権限を開く(リンク)[https://hackerone.com/reports/98819]
特定のAWSユーザーに対してのみアクセス許可を開きます。
次のレベルはかなり似ていて、ややひねっています。あなたの最初のAWSキーを見つける時間!私はあなたが他のバケットが何であるかを列挙することができる何かを見つけるでしょう。
最初のレベルと同様に、このディレクトリにファイルをリストする方法を理解しておいて、このバケットのリストが「Everyone」に公開されていることがわかっているはずです。 (level3-9afd3927f195e10225021a578e6f78df.flaws.cloud.s3.amazonaws.com/)[http://level3-9afd3927f195e10225021a578e6f78df.flaws.cloud.s3.amazonaws.com/] のファイル一覧を参照してください。
このS3バケットには.gitファイルがあります。おそらくそれに興味深いものがあります。このS3バケット全体をダウンロードするには:
aws s3 sync s3://level3-9afd3927f195e10225021a578e6f78df.flaws.cloud/ . --no-sign-request --region us-west-2
人々は誤ってgit reposに秘密のものを追加してから、秘密を取り消したりロールバックしたりせずに削除しようとします。次のコマンドを実行すると、git リポジトリの履歴を見ることができます。
git log
次に、コミットした時にgitリポジトリがどのようだったか確認することができます。
git checkout f7cebc46b471ca9838a0bdd1074bb498a3f84c87
f7cebc46b471ca9838a0bdd1074bb498a3f84c87
は git log
に示されたコミットのハッシュになります。
(訳注:ここでlsする)
あなたはAWSの鍵と秘密を見つけたはずです。 awsコマンドを使用してそれを使用し、それを使用してプロファイルを作成するようにawsコマンドを設定することができます:
aws configure --profile flaws
次に、そのプロファイルを使用してS3バケットを一覧表示します。
aws --profile flaws s3 ls
多くの場合、AWSキーが漏れてしまい、キーを取り消すことなく間違いを隠そうとします。あなたは、漏れていたか、または間違っていたかもしれないAWS鍵(またはどんな秘密鍵でも)をいつも取り消すべきです。あなたのsecretを早く、頻繁にローリングしてください。
- Instagramの百万ドルのバグ:バグウンティ研究者は、この記事を読む必要があります。様々な改訂版の.tar.gzアーカイブを持つS3バケットを含む、一連の欠陥を発見しました。これらのアーカイブの1つにAWSのクレデンシャルが含まれていたため、リサーチャーはInstagramのすべてのS3バケットにアクセスできました。発見された問題のいくつかがどのように回避されたかについては、"Instagram's Million Dollar Bug": Case study for defense の記事を参照してください.。
このレベルが示しているもう1つの興味深い問題は、AWSの特定のバケットだけを一覧表示する機能を制限することはできないということです。従業員にアカウント内のバケットのリストを表示させたい場合、それらをすべてリストすることができます。このバケットを検出するために使用したキーは、アカウント内のすべてのバケットを表示できます。バケットには何が入っているのかわかりませんが、それらが存在することはわかります。同様に、バケットはグローバルな名前空間を使用することに注意してください。つまり、バケット名はすべての顧客で一意でなければなりません。つまり、merger_with_company_Yという名前のバケット、または秘密と思われるバケットを作成すると、バケットが存在することを誰かが発見することは技術的に可能です。
あなたの秘密が漏洩したり、公開されたり、保管されたり、誤って共有されたりした疑いがある場合は、常に秘密を公開してください。早めにロールし、頻繁にロールする。ローリングシークレットとは、キーを取り消す(つまり、AWSアカウントからキーを削除する)ことで、新しいキーを生成することを意味します。