インテリジェンスは、アクティブ-サイトのブルートフォースファイルとディレクトリ、脆弱性スキャナーの起動、サイトの手動表示、またはパッシブ-さまざまな検索エンジンで情報を検索できます。 サイトの最初のページを開く前であっても、脆弱性が知られるようになることがあります。
これはどのように可能ですか?
インターネットをノンストップでローミングする検索ロボットは、平均的なユーザーに役立つ情報に加えて、多くの場合、攻撃者がWebリソースを攻撃するために使用できるものを記録します。 たとえば、スクリプトエラーと機密情報を含むファイル(構成ファイルとログから始まり、認証データとデータベースバックアップを含むファイルで終わる)。
検索ロボットの観点から見ると、SQLクエリエラーメッセージはプレーンテキストであり、ページ上の製品の説明などから分離することはできません。 突然、検索ロボットが.sql拡張子を持つファイルに遭遇した場合、何らかの理由でサイトの作業フォルダーに格納され、サイトのコンテンツの一部として認識され、インデックス付けされます(おそらく、その中に示されたパスワードを含む)
そのような情報は、脆弱性を含まないページから「脆弱なページ」を区別するのに役立つ、安定した、多くの場合一意のキーワードを知ることで見つけることができます。
exploit-db.comには、キーワードを使用した特別なクエリの巨大なデータベース(いわゆるドーク)が存在し、Google Hackデータベースとして知られています。
グーグルを選ぶ理由
Dorksは、主に2つの理由でGoogleに焦点を当てています。
-キーワード(表1に示す)および特殊文字(表2に示す)の最も柔軟な構文。
-Googleインデックスは他の検索エンジンよりも完全です。
表1-主なGoogleキーワード
キーワード
| 意味
| 例
|
サイト
| 指定したサイトでのみ検索します。 URLのみを考慮
| site:somesite.ru-このドメインとサブドメインのすべてのページを検索します
|
巻き込む
| uriで単語を検索します。 clとは異なり。 「サイト」という単語、サイト名の後に一致するものを探す
| inurl:news-指定された単語がuriに現れるすべてのページを検索します
|
インテキスト
| ページ本文で検索
| intext:「交通渋滞」-「交通渋滞」に対する通常のリクエストに完全に類似
|
権利
| ページタイトルで検索します。 <title>タグで囲まれたテキスト
| intitle:” index of”-ディレクトリをリストするすべてのページを検索します
|
ext
| 指定された拡張子を持つページを検索します
| ext:pdf-すべてのpdfファイルを検索
|
ファイルタイプ
| 現在、clに完全に類似しています。 「ext」という言葉
| ファイルタイプ:pdf-類似
|
関連する
| 同様のトピックを持つサイトを検索する
| 関連:google.ru-その類似物を表示します
|
リンク
| これにリンクしているサイトを検索
| link:somesite.ru-これへのリンクがあるすべてのサイトを検索します
|
定義する
| 単語の定義を表示
| 定義:0day-用語の定義
|
キャッシュ
| キャッシュ内のページコンテンツを表示する(存在する場合)
| cache:google.com-キャッシュからページを開きます
|
表2-特別なGoogleリクエストキャラクター
記号
| 意味
| 例
|
「
| 正確なフレーズ
| intitle:「RouterOSルーター構成ページ」-ルーターを検索
|
*
| 任意のテキスト
| inurl:“ bitrix * mcart”-脆弱なmcartモジュールを持つbitrix上のサイトを検索
|
。
| 任意のキャラクター
| Index.of-クエリのインデックスに類似
|
-
| 単語を除外
| error –warning-エラーはあるが警告はないすべてのページを表示する
|
..
| 範囲
| cve 2006..2016-2006年以降の脆弱性を年ごとに表示
|
|
| 論理的な「または」
| Linux | windows-最初または2番目の単語が見つかったページを表示します
|
検索エンジンへのクエリは、単語のみによる検索であることを理解してください。
ページ上のメタ文字(引用符、角かっこ、句読点など)を探すのは無意味です。 引用符で指定された正確なフレーズの検索でさえ、単語の検索であり、その後に結果に既に完全に一致するものが検索されます。
すべてのGoogle Hack Databaseドックは14のカテゴリに論理的に分割されており、表3に示されています。
表3-Google Hackデータベースのカテゴリ
カテゴリー
| 見つけられるもの
| 例
|
スムージー
| Webシェル、パブリックファイルマネージャー
| リストされたWebシェルがアップロードされているすべてのハッキングされたサイトを検索します。
(intitle: "phpshell" OR intitle: "c99shell" OR intitle: "r57shell" OR intitle: "PHP Shell" OR intitle: "phpRemoteView") `rwx`" uname " |
ユーザー名を含むファイル
| レジストリファイル、構成ファイル、ログ、入力されたコマンドの履歴を含むファイル
| アカウント情報を含むすべてのレジストリファイルを検索します。
ファイルタイプ:reg reg + intext: "インターネットアカウントマネージャー" |
機密ディレクトリ
| さまざまな情報(個人文書、VPN構成、隠しリポジトリなど)を持つディレクトリ
| vpnに関連するファイルを含むディレクトリのリストをすべて検索します。
「Config」インタイトル:「Index of」インテキスト:vpn gitリポジトリを含むサイト: (intext: "/.gitのインデックス")( "親ディレクトリ") |
Webサーバーの検出
| Webサーバーのバージョンとその他の情報
| JBossサーバーの管理コンソールを見つけます。
inurl: "/ web-console /" intitle: "管理コンソール" |
脆弱なファイル
| 既知の脆弱性を含むスクリプト
| サーバーから任意のファイルをアップロードできるスクリプトを使用してサイトを検索します。
allinurl:forcedownload.php?file = |
脆弱なサーバー
| インストールスクリプト、Webシェル、開いている管理コンソールなど。
| rootとして実行されているPHPMyAdminコンソールを検索します。
intitle:phpMyAdmin "ようこそphpMyAdminへようこそ***" "* @ルートとして実行* *" |
エラーメッセージ
| 多くの場合、さまざまなエラーや警告により、CMSバージョンからパスワードまでの重要な情報が明らかになります。
| データベースへのSQLクエリの実行にエラーがあるサイト:
「警告:mysql_query()」「無効なクエリ」 |
ジューシーな情報を含むファイル
| 証明書、バックアップ、電子メール、ログ、SQLスクリプトなど
| 初期化SQLスクリプトを見つけます。
ファイルタイプ:sqlおよび "insert into" -site:github.com |
パスワードを含むファイル
| パスワードを含むことができるすべてのもの-ログ、SQLスクリプトなど
| パスワードに関するログ:
ファイルタイプ: ログイン テキスト: パスワード| パス| pw パスワードを含むSQLスクリプト: ext: sql intext: ユーザー名 intext: パスワード |
デリケートなオンラインショッピング情報
| オンラインショッピング情報
| ピンコードを見つける:
dcid = bn = ピン コード= |
ネットワークまたは脆弱性データ
| Webリソースに直接関連しないが、ネットワークまたは他の非Webサービスに影響する情報
| 内部ネットワークに関する情報を含むプロキシ自動構成スクリプトを検索します。
inurl:プロキシ| inurl:wpad ext:pac | ext:dat findproxyforurl |
ログインポータルを含むページ
| ログインフォームを含むページ
| Saplogon Webページ:
intext:「2016 SAP AG。 無断複写・転載を禁じます” Intitle:“ Logon” |
さまざまなオンラインデバイス
| プリンター、ルーター、監視システムなど
| プリンター構成パネルを見つけます。
intitle: " hp laserjet" inurl: SSI / Auth / set_ config_ deviceinfo 。 htm |
アドバイザリと脆弱性
| CMSの脆弱なバージョンのサイト
| 任意のファイルをサーバーにアップロードできる脆弱なプラグインを見つけます。
inurl:fckeditor -intext: "ConfigIsEnabled = False" intext:ConfigIsEnabled |
Dorksは、すべてのインターネットサイトを検索する傾向があります。 ただし、サイトの検索エリアを制限することを妨げるものはありません。
キーワード「site:somesite.com」をリクエストに追加することにより、各Googleリクエストを特定のサイトに集中させることができます。 このキーワードは、任意のdorkに追加できます。
脆弱性検索の自動化
そのため、検索エンジン(google)を使用して脆弱性の検索を自動化し、Google Hackデータベースに依存する単純なユーティリティを作成するというアイデアが生まれました。
このユーティリティは、phantomjsを使用してnodejsで記述されたスクリプトです。 正確には、スクリプトはphantomjs自体によって解釈されます。
Phantomjsは、グラフィカルインターフェイスのない本格的なWebブラウザーであり、js-codeを使用して管理され、便利なAPIを備えています。
ユーティリティはわかりやすい名前-dorksを取得しました。 コマンドラインで(オプションなしで)実行すると、いくつかの使用例が簡単に表示されます。
図1-基本的なdorksオプションのリスト
一般的なユーティリティ構文:dork "command" "list of options"。
すべてのオプションの詳細な説明を表4に示します。
表4-構文の裏表
チーム
| オプション
| 説明
|
ghdb
| -l
| Google Hack Database dorkカテゴリの番号付きリストを表示する
|
-c「カテゴリ番号または名前」
| 指定したカテゴリの番号を名前または名前でダウンロードします
| |
-q "フレーズ"
| リクエストに応じて見つかったドークをダウンロードする
| |
-o "ファイル"
| 結果をファイルに保存します(-c | -qオプションを使用した場合のみ)
| |
グーグル
| -d dork
| 任意の定義を定義します(オプションは何度も使用できますが、オプション-Dとの組み合わせは許可されます)
|
-D "ファイル"
| ファイルからドークを使用する
| |
-s "サイト"
| サイトを定義します(オプションは何度も使用できますが、オプション-Sと組み合わせて使用できます)
| |
-S "ファイル"
| ファイルからサイトを使用する(各サイトに対して個別にドークの列挙が実行されます)
| |
-f "フィルター"
| 追加のキーワードを設定します(各トラックに追加されます)
| |
-t「ミリ秒数」
| Googleリクエストの間隔
| |
-T「ミリ秒数」
| キャプチャが満たされた場合のタイムアウト
| |
-o "ファイル"
| 結果をファイルに保存します(何かが見つかったトラックのみが保存されます)
|
ghdbコマンドを使用すると、リクエストによってすべてのexploit-dbドックを取得したり、カテゴリ全体を指定したりできます。 カテゴリ0を指定すると、ベース全体がアンロードされます(約4.5千人)。
現在利用可能なカテゴリのリストを図2に示します。
図2-GHDBドックの利用可能なカテゴリのリスト
Googleチームは、各トラックをGoogle検索エンジンに置き換え、一致する結果を分析します。 何かが見つかったパスはファイルに保存されます。
このユーティリティは、さまざまな検索モードをサポートしています。
•1つのドークと1つのサイト。
•1つのあばたと多くのサイト。
•1つのサイトと多くのドーク。
•多くのサイトと多くのあばた。
隠し場所とサイトのリストは、引数またはファイルを使用して指定できます。
作業実演
エラーメッセージを検索する例を使用して、脆弱性を探してみましょう。 コマンド:dorks ghdb –c 7 –o errors.dorksでは、図3に示すように、「エラーメッセージ」カテゴリのすべての既知のdorksがロードされます。
図3-「エラーメッセージ」カテゴリの既知のすべての問題をダウンロードする
トラックがロードされ、ファイルに保存されます。 今では、それらをいくつかのサイトで「設定」します(図4を参照)。
図4-Googleキャッシュでのサイトの脆弱性の検索
しばらくして、調査中のサイトでエラーを含むいくつかのページが見つかりました(図5を参照)。
図5-見つかったエラーメッセージ
一番下の行では、ファイルresult.txtにエラーの原因となる完全なリストが表示されています。
図6は、サイトエラー検索の結果を示しています。
図6-エラーの検索結果
この秘密のキャッシュには、完全なバックトラックが表示され、スクリプトの絶対パス、サイトのコンテンツ管理システム、データベースのタイプが明らかになります(図7を参照)。
図7-サイトデバイスに関する情報の開示
ただし、すべてのGHDBの作業が真の結果をもたらすとは限りません。 また、Googleは完全に一致するものを見つけられず、同様の結果を表示する場合があります。
この場合、自分の個人的なリストを使用する方が賢明です。 たとえば、「異常な」拡張子を持つファイルを常に探す必要があります。その例を図8に示します。
図8-通常のWebリソースに固有ではないファイル拡張子のリスト
その結果、コマンドdorks google –D extensions.txt –f bankで、最初のリクエストからgoogleは「異常な」ファイル拡張子を持つサイトを返し始めます(図9を参照)。
図9-銀行サイトでの「不良」ファイルタイプの検索
Googleは32ワードを超えるリクエストを受け付けないことに注意してください。
dorks google –d intextコマンドの使用:「エラー|警告|通知|構文」-f大学
教育サイトでPHPインタープリターのエラーを検索できます(図10を参照)。
図10-PHPランタイムエラーの検索
1つまたは2つのカテゴリのあばたを使用するのが便利でない場合があります。
たとえば、サイトがワードプレスエンジンで実行されていることがわかっている場合は、ワードプレスドックが必要です。 この場合、Google Hack Database検索を使用すると便利です。 dorks ghdb –q wordpress –o wordpress_dorks.txtコマンドは、図11に示すように、すべてのWordpress dorksをロードします。
図11-Wordpressに関連するドークの検索
銀行に戻りましょう。google–D wordpress_dords.txt –f銀行チームは、wordpressに関連する興味深いものを見つけようとします(図12を参照)。
図12-Wordpressの脆弱性の検索
Google Hack Databaseでの検索では、4文字より短い単語は受け入れられないことに注意してください。 たとえば、サイトのCMSは不明だが、言語は既知である場合-PHP。 この場合、パイプおよびシステム検索ユーティリティdorks –c all | findstr / I php> php_dorks.txt(図13を参照):
図13-PHPに言及しているすべてのドークを検索
このサイトに重要なインデックスがある場合にのみ、検索エンジンでの脆弱性または一部の機密情報の検索を検索する必要があります。 たとえば、サイトで10〜15ページのインデックスが作成されている場合、この方法で何かを探すのはばかげています。 インデックスのサイズは簡単に確認できます。Google検索バーに「site:somesite.com」と入力するだけです。 インデックスが不十分なサイトの例を図14に示します。
図14-サイトインデックスのサイズの確認
不快なことについて...定期的に、Googleはキャプチャを要求することがあります-何もする必要はありません-あなたはそれを入力する必要があります。 たとえば、エラーメッセージカテゴリ(90 Dorks)で並べ替えると、キャプチャは一度だけドロップアウトしました。
phantomjsは、httpとsocksインターフェースの両方を通じて、プロキシを介した同じ方法での作業をサポートすることを追加する価値があります。 プロキシモードを有効にするには、dorks.batまたはdorks.shの対応する行のコメントを解除します。
このツールはgithub.com/USSCltd/dorksのソースコードとして入手可能で、 動作にはphantomjsのみが必要です。