AWS - S3 Unauthenticated Enum
S3パブリックバケット
バケットは、バケットの内容を誰でもリストできる場合は**「パブリック」と見なされ、バケットの内容を特定のユーザーだけがリストまたは書き込みできる場合は「プライベート」**と見なされます。
企業は、バケットの権限が誤って構成されている可能性があり、すべてにアクセスできるか、AWSの任意のアカウントで認証されたすべてのユーザーにアクセスできるようになっているかもしれません。ただし、そのような誤構成があっても、バケットには独自のアクセス制御リスト(ACL)があるため、一部のアクションを実行できない場合があります。
AWS-S3の誤構成についてはこちらを参照: http://flaws.cloud および http://flaws2.cloud/
AWSバケットの検出
WebページがAWSを使用してリソースを保存している場合の検出方法:
列挙とOSINT:
wappalyzerブラウザプラグインを使用する
burpを使用して(Webをスパイダリングする)またはページを手動でナビゲートしてすべてのロードされたリソースを履歴に保存する
ドメイン内のリソースをチェックする:
resources.domain.com
のようなCNAMEをチェックすると、bucket.s3.amazonaws.com
というCNAMEがあるかもしれませんすでに発見されたオープンバケットがあるhttps://buckets.grayhatwarfare.comをチェックする
バケット名とバケットドメイン名は同じである必要があります
flaws.cloudはIP 52.92.181.107にあり、そこに移動するとhttps://aws.amazon.com/s3/にリダイレクトされます。また、
dig -x 52.92.181.107
を実行するとs3-website-us-west-2.amazonaws.com
が表示されます。バケットであるかどうかを確認するには、https://flaws.cloud.s3.amazonaws.com/にアクセスすることもできます。
ブルートフォース
企業に関連する名前をブルートフォースしてバケットを見つけることができます:
https://github.com/jordanpotti/AWSBucketDump(潜在的なバケット名のリストを含む)
s3scannerの呼び出し
s3scanner --threads 100 scan --buckets-file /tmp/final-words-s3.txt | grep bucket_exists
S3バケットの略奪
S3オープンバケットがある場合、BucketLootは自動的に興味深い情報を検索できます。
リージョンの検索
AWSがサポートするすべてのリージョンをhttps://docs.aws.amazon.com/general/latest/gr/s3.htmlで見つけることができます。
DNSによる
**dig
とnslookup
**を使用して、発見されたIPのDNSリクエストを行うことで、バケットのリージョンを取得できます。
Check that the resolved domain have the word "website".
You can access the static website going to: flaws.cloud.s3-website-us-west-2.amazonaws.com
or you can access the bucket visiting: flaws.cloud.s3-us-west-2.amazonaws.com
試してみる
バケットにアクセスしようとするが、指定するドメイン名に別のリージョンが含まれている場合(たとえば、バケットが bucket.s3.amazonaws.com
にあるが、bucket.s3-website-us-west-2.amazonaws.com
にアクセスしようとする場合)、正しい場所に案内される:
バケットの列挙
ユーザーは単にURLをウェブブラウザに入力することで、バケットの公開状態をテストできます。非公開のバケットは「アクセスが拒否されました」と応答します。公開されているバケットは、保存されている最初の1,000個のオブジェクトをリスト表示します。
誰でもアクセス可能:
非公開:
また、CLIを使用してこれを確認することもできます:
パブリックURLテンプレート
パブリックバケットからアカウントIDを取得する
新しい**S3:ResourceAccount
** ポリシー条件キーを利用することで、AWSアカウントを特定することが可能です。この条件は、アカウントが含まれているS3バケットに基づいてアクセスを制限します(他のアカウントベースのポリシーは、リクエスト元のアカウントに基づいて制限します)。
そして、ポリシーにはワイルドカードを含めることができるため、アカウント番号を1つずつ見つけることが可能です。
このツールは、このプロセスを自動化します:
このテクニックは、API GatewayのURL、LambdaのURL、Data Exchangeのデータセット、さらにはタグの値(タグキーを知っている場合)を取得するためにも機能します。この悪用を自動化するためのconditional-loveというツールや、元の研究で詳細情報を見つけることができます。
参考文献
最終更新