ソース:
ジャンル:Google Dorking
内容:
グバウンティハンターとしての主な仕事の一つは、ターゲットの攻撃対象領域をマッピングすることです。これには、隠れたパラメータやエンドポイントの発見も含まれます。これらは、より深刻な脆弱性への扉を開き、パッチが適用されていないAPI呼び出し、保護されていない機能、さらには管理者レベルのアクセスにつながる可能性があります。Google Dorkingは、ターゲットのインフラに直接アクセスすることなく、これらの隠れた脅威を見つけるための非常に効率的な方法です。
Google Dorksを使って、しばしば公開されてしまう隠れたパラメータやエンドポイントを明らかにする方法について詳しく説明します。これらの隠れたアクセスポイントを発見することで、気づかれずに放置されていた可能性のある攻撃ベクトルを発見できるようになります。
エンドポイントとパラメータは、Webアプリケーションの機能の根幹を成す要素です。クライアントとサーバー間のデータの受け渡し方法、そして場合によっては特定の機能(管理アクションなど)の実行方法を規定します。これらの要素が適切に保護または隠蔽されていない場合、以下のような様々な攻撃に悪用される可能性があります。
秘訣はこれらの隠れたアクセス ポイントを見つけることですが、Google Dorking はまさにそのための優れたツールです。
エンドポイント、特にAPIエンドポイントは、開発者が公開を意図していない場所にドキュメント化されることがよくあります。これらのエンドポイントは、システムの動作方法、処理するデータ、ユーザーが利用できるアクションに関する貴重な情報を明らかにする可能性があります。
site:target.com filetype:php inurl:"api"
なぜ重要か :これらのAPIエンドポイントを見つけることで、標的のバックエンドに直接アクセスできるようになります。多くの場合、APIは適切に認証または制限されていないため、悪用される可能性があります。
パラメータ、特にGETパラメータは、ウェブサイトがリクエストをどのように処理するかに関する重要な情報を提供する可能性があります。非表示パラメータには、管理機能、デバッグオプション、あるいは誤ってアクセス可能になった内部機能などが含まれる場合があります。
site:target.com inurl:"?id="
説明:
重要である理由 : アプリケーションがこれらのパラメータの入力を適切に検証しない場合、パラメータを操作して不正なデータにアクセスしたり、実行権限のないアクションを実行したりされる可能性があります。
開発中、開発者はデバッグエンドポイントや管理エンドポイントを公開したままにしておくことがよくあります。これらのエンドポイントは、機密情報を漏洩させたり、管理機能へのアクセスを許可したり、サーバー側のエラーを表示したりする可能性があります。
site:target.com inurl:"admin" OR inurl:"debug"
説明:
重要度 :管理エンドポイントとデバッグエンドポイントは、通常のユーザーがアクセスすべきではない機能を公開する可能性があります。また、サーバーログ、エラーメッセージ、構成設定などの機密情報が公開される可能性もあります。
多くの企業は、内部APIドキュメントをうっかり公開してしまいます。そこには、利用可能なすべてのエンドポイントとその操作方法に関する詳細な情報が含まれている可能性があります。これらのドキュメントには、パラメータ、ペイロード、認証方法などが記載されている可能性があり、これらはすべてバグハンターにとって重要な情報です。
site:target.com filetype:json inurl:"swagger"
説明:
重要な理由 :Swaggerドキュメントは、利用可能なすべてのAPIエンドポイント(適切に保護されていない可能性のあるエンドポイントも含む)を明らかにすることができます。これは、対象のAPIセキュリティをテストするための強力な出発点となります。
他のハッキング手法と同様に、複数のドーキング演算子を組み合わせることで、より正確で効果的な検索が可能になります。隠れたパラメータやエンドポイントを発見するのに役立つ、高度な組み合わせをいくつか見てみましょう。
site:target.com inurl:"?action=" OR inurl:"?cmd="
説明:
動作の理由 :これらのパラメータは、管理機能やサーバー側コマンドの実行に使用される可能性があります。適切に保護されていない場合、コマンドインジェクションや不正なアクションなどの脆弱性につながる可能性があります。
site:target.com filetype:js inurl:"api" intext:"endpoint"
説明:
機能する理由 :JavaScript ファイルには、バックエンドAPI への参照が含まれることが多く、文書化されていない、または通常のサイトナビゲーションでは表示されない非表示のエンドポイントが明らかになる可能性があります。
クエリパラメータは、サイト内のアクセスレベルを制御する場合があります。開発者が誤って、ユーザーロールの切り替え、機密データの編集、内部ダッシュボードへのアクセスといった管理機能へのアクセスを許可するパラメータを公開してしまう可能性があります。
site:target.com inurl:"?role=admin" OR inurl:"?privilege=admin"
説明:
重要度 :これらのパラメータは、アプリケーション内のユーザーロールを制御するために使用される可能性があります。このようなパラメータを含む公開されたURLを発見した場合、それを操作して権限を昇格される可能性があります。
「Google Dorksをマスターすることは、機密機能を露出させる可能性のある隠れたパラメータやエンドポイントを発見するために不可欠です。クエリを慎重に作成することで、悪用される可能性のあるウェブアプリケーションの重要な部分を明らかにできます。」
パート2では、シンプルながらも強力なDorksを使って、これらの隠されたエンドポイントとパラメータを発見する方法を紹介しました。パート3では、高度なGoogle Dorking技術を用いて、公開されている管理パネルやログインポータルを発見する方法について詳しく説明します。
ソース:
脆弱性:GraphQL
要約:
REST APIとは異なり、GraphQLでは必要なものを正確に要求できます。
問題は、多くのアプリが権限を適切に適用していないことです。
これが危険な理由です:
GraphQL がアプリを壊すのでなく、誤った設定が壊す。
フェーズ1: GraphQLエンドポイントの検索
ほとんどのアプリはGraphQLエンドポイントを隠しています/graphql または/api。
しかし、時には次のような場合に露出することがあります。
main.js、app.js)私はそれを見つけるために簡単なツールを使用しました:
subfinder -d target.com | httpx -path /graphql -status-codeGolden Nugget:
「エンドポイントは裸の状態でした。JWTもCSRFもありませんでした。まるで警備員のいないVIPルームのようです。」
フェーズ2: イントロスペクションによるスキーマのダンプ
GraphQL のイントロスペクションと尋ねることができます。機能を使用すると、 「API、ここで何ができるのか?」
簡単なクエリですべてが公開されます。
query { __schema { types { name fields { name } } }}私はGraphQL Voyagerを使用してスキーマを視覚化し、管理者の変更、ユーザー データ、機密クエリを即座に確認しました。
フェーズ3: クエリによるデータの窃盗
このアプリにはgetUserクエリがあって。
通常は自分のデータのみが表示されます。
しかし、アクセス制御が壊れているため、誰の情報でもID を変更することでも取得できます。
query { getUser(id: 1) { # Changed from my ID to admin’s ID email passwordHash isAdmin }}管理者のプロフィール全体が漏洩した。
フェーズ4: ミューテーションによる権限の昇格
本当のジャックポット? GraphQL の変異。
私は見つけたupdateUserRole変異—そして何だと思いますか?
権限チェックはありません。
mutation { updateUserRole(id: 1337, role: "admin") { success }}自分を管理者にしました。
このレベルのアクセス権があれば、次のことが可能です。
✔すべてのユーザーの個人情報(メールアドレス、住所、ハッシュ化されたパスワード)が公開された
✔アクセスされた支払いデータ(Stripeトークン、取引履歴)
✔データベースレコードを削除または変更した
しかし、ここに意外な点があります。
「大きな力には、大きなバグ報奨金が伴います。」
私は責任を持ってそれを報告し、5,000ドルを獲得しました。調査結果に対して
GraphQL のバグを探している場合は、以下を試してください。
__schemaクエリ – ドキュメントにイントロスペクションが無効になっていると記載されていても、試してみてください。resetPassword、createAdminUser、 またはdeleteAccount。idパラメータを自由に設定できます。多くのアプリは所有権を検証しません。開発者向け:
@authディレクティブが役立ちます。セキュリティは魔法ではありません。適切なコーディングだけです。
ほなほな。
ソース:
訳:
アプリケーションをレビューしているときに、プロフィール画像のアップロード機能があることに気付きました。.
svgや.htmlといった他のファイル形式も受け付けられるかテストしてみたところ、驚いたことにSVGのアップロードも受け付けられ、そのままレンダリングされました。

アップロードしたファイルをブラウザで開くと、なんとポップアップが表示されました!

XSS を発見したときは常に、次のことを考えるべきです。
「セッションを盗んでアカウント乗っ取りを証明できますか?」
そこですぐにDevToolsを開いて確認しましたdocument.cookie— しかし、アプリケーションはJWTベースのヘッダー認証を使用していたため、セッションCookieは存在しませんでした。
これは防御の観点からは良いことですが、攻撃者にとっては、さらに深く掘り下げる必要があることを意味します。
次:localStorage。
しかし…驚いたことに、トークンはlocalStorageアップロードされたXSS ファイルを直接表示する場合。

/profile探索中に、ログインして/profileエンドポイントでは、フロントエンドのJavaScriptが動的にユーザーデータを取得し、その後JWTをlocalStorage。

問題は次の通りです:
XSSページにはJWTがありません。ブラウザに強制的にアクセスさせる必要があります。
/profileまず、JWT が保存されるのを待ってから、それを抽出します。
このチェーンを自動化するために、次のような HTMLペイロードを作成しました。
/profile静かにバックグラウンドで/localStorageローカルストレージ
ブラウザはトークンを送信しようとしたときにCORSエラーをスローしました。fetch()。

心配しないでください。私は、<img>代わりにタグfetch()ブラウザは画像の読み込みをブロックしないため、クロスオリジンであっても CORS をバイパスします。

もう一度テストしてみると…コンソールにエラーは表示されませんでした。

Collaborator サーバーは JWT を正常に受信しました。

アカウントの乗っ取りを確認するために、ブラウザ コンソールで次のコマンドを使用しました。
```
localStorage.setItem ' ( , 'token' PASTE_STOLEN_TOKEN_HERE ' );```

その後、ページを更新すると…私は被害者としてログインしていました。

この脆弱性はXSS だけに関するものではなく、複数のレイヤーを連鎖させることに関するものでした。
localStorageクッキーの代わりに/profile<img>タグ)XSSを発見したら、
alert(1)—さらに深く:
localStorage そしてsessionStorage。<img>、<script>、あるいは<form>!
ほなほな。
引用をストックしました
引用するにはまずログインしてください
引用をストックできませんでした。再度お試しください
限定公開記事のため引用できません。