Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/opsdisk/pagodo
OSINT (オープンソースインテリジェンス)偵察脆弱性分析情報収集ウェブセキュリティ
GitHubopsdisk/pagodo

pagodo

pagodo (Passive Google Dork) - Google Hacking Databaseのスクレイピングと検索を自動化する

リポジトリを見る
3.4k55011ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

pagodo - パッシブ Google Dork

はじめに

pagodoは、インターネット上で潜在的に脆弱なWebページやアプリケーションをGoogle検索する処理を自動化します。手動でGoogleダーク(dorks)検索をWeb GUIブラウザで行う代わりとなります。

2つの部分から構成されます。最初の部分はghdb_scraper.pyで、最新のGoogle dorksを取得します。2番目の部分はpagodo.pyで、ghdb_scraper.pyが収集した情報を活用します。

コアとなるGoogle検索ライブラリは、より柔軟なyagooglesearchに置き換わりました。以前はgooglesearchを使用していました。ライブラリの違いや機能の詳細については、yagooglesearchのREADMEを参照してください。

このバージョンのpagodoは、ネイティブのHTTP(S)およびSOCKS5アプリケーションサポートも備えているため、プロキシサポートが必要な場合にproxychains4のようなツールでラップする必要はありません。複数のプロキシをラウンドロビン方式で使用するには、-pスイッチを使用してプロキシのカンマ区切り文字列を指定します。

Googleダーク(dorks)とは?

Offensive Securityは、Google Hacking Database (GHDB) を管理しています。こちら: https://www.exploit-db.com/google-hacking-database。これは、ダーク(dorks)と呼ばれるGoogle検索のコレクションであり、Googleの検索ボットが収集した潜在的に脆弱なボックスやその他のおいしい情報を見つけるために使用できます。

利用規約

pagodoの利用規約は、yagooglesearchに記載されているものと同じです。

このコードは現状のまま提供され、その使用方法についてはすべてお客様の責任となります。Google検索結果のスクレイピングは、Googleの利用規約に違反する可能性があります。別のPythonのGoogle検索ライブラリにも、それに関する興味深い情報/議論がありました:

  • 元のissue
  • 応答
  • 作者は別途利用規約を作成しました
  • ...このブログへのリンクが含まれていました

Googleが推奨する方法は、APIを使用することです。

インストール

スクリプトはPython 3.6以上で書かれています。gitリポジトリをクローンして、要件をインストールしてください。

root@kitploit:~
git clone https://github.com/opsdisk/pagodo.git
cd pagodo
python3 -m venv .venv  # If using a virtual environment.
source .venv/bin/activate  # If using a virtual environment.
pip install --upgrade pip setuptools
pip install -r requirements.txt

ghdb_scraper.py

最初に、pagodo.pyは現在のすべてのGoogle dorksのリストを必要とします。リポジトリには、ghdb_scraper.pyが最後に実行された時点での現在のdorksを含むdorks/ディレクトリがあります。pagodo.pyを実行する前に、ghdb_scraper.pyを実行して最新のデータを取得することをお勧めします。dorks/ディレクトリには以下が含まれます:

  • all_google_dorks.txtファイル:すべてのGoogle dorksが1行に1つずつ含まれています
  • all_google_dorks.jsonファイル:GHDBからのJSONレスポンス
  • 個別のカテゴリdorks

Dorkカテゴリ:

root@kitploit:~
categories = {
    1: "Footholds",
    2: "File Containing Usernames",
    3: "Sensitives Directories",
    4: "Web Server Detection",
    5: "Vulnerable Files",
    6: "Vulnerable Servers",
    7: "Error Messages",
    8: "File Containing Juicy Info",
    9: "File Containing Passwords",
    10: "Sensitive Online Shopping Info",
    11: "Network or Vulnerability Data",
    12: "Pages Containing Login Portals",
    13: "Various Online devices",
    14: "Advisories and Vulnerabilities",
}

ghdb_scraper.pyをスクリプトとして使用する

すべてのdorksをall_google_dorks.txt、all_google_dorks.json、および各dorkに関するよりコンテキストデータが必要な場合は個別のカテゴリに書き込みます。

root@kitploit:~
python ghdb_scraper.py -s -j -i

ghdb_scraperをモジュールとして使用する

ghdb_scraper.retrieve_google_dorks()関数は、次のデータ構造を持つ辞書を返します:

root@kitploit:~
ghdb_dict = {
    "total_dorks": total_dorks,
    "extracted_dorks": extracted_dorks,
    "category_dict": category_dict,
}

Pythonシェル(pythonやipythonなど)を使用してデータを探索する:

root@kitploit:~
import ghdb_scraper

dorks = ghdb_scraper.retrieve_google_dorks(save_all_dorks_to_file=True)
dorks.keys()
dorks["total_dorks"]

dorks["extracted_dorks"]

dorks["category_dict"].keys()

dorks["category_dict"][1]["category_name"]

pagodo.py

pagodo.pyをスクリプトとして使用する

root@kitploit:~
python pagodo.py -d example.com -g dorks.txt

pagodoをモジュールとして使用する

pagodo.Pagodo.go()関数は、以下のデータ構造を持つ辞書を返します(使用されるdorksは架空の例です):

root@kitploit:~
{
    "dorks": {
        "inurl:admin": {
            "urls_size": 3,
            "urls": [
                "https://github.com/marmelab/ng-admin",
                "https://github.com/settings/admin",
                "https://github.com/akveo/ngx-admin",
            ],
        },
        "inurl:gist": {
            "urls_size": 3,
            "urls": [
                "https://gist.github.com/",
                "https://gist.github.com/index",
                "https://github.com/defunkt/gist",
            ],
        },
    },
    "initiation_timestamp": "2021-08-27T11:35:30.638705",
    "completion_timestamp": "2021-08-27T11:36:42.349035",
}

Pythonシェル(pythonやipythonなど)を使用してデータを探索する:

root@kitploit:~
import pagodo

pg = pagodo.Pagodo(
    google_dorks_file="dorks.txt",
    domain="github.com",
    max_search_result_urls_to_return_per_dork=3,
    save_pagodo_results_to_json_file=None,  # None = Auto-generate file name, otherwise pass a string for path and filename.
    save_urls_to_file=None,  # None = Auto-generate file name, otherwise pass a string for path and filename.
    verbosity=5,
)
pagodo_results_dict = pg.go()

pagodo_results_dict.keys()

pagodo_results_dict["initiation_timestamp"]

pagodo_results_dict["completion_timestamp"]

for key,value in pagodo_results_dict["dorks"].items():
    print(f"dork: {key}")
    for url in value["urls"]:
        print(url)

結果の調整

特定のドメインに範囲を限定

-dスイッチを使用すると、結果を特定のドメインに限定でき、Google検索演算子として機能します:

root@kitploit:~
site:github.com

Google dork検索間の待機時間

  • -i - dork検索間の最小遅延(秒)を指定します。小さくしすぎると、IPがすぐにHTTP 429される可能性があります。
  • -x - dork検索間の最大遅延(秒)を指定します。大きすぎると検索に時間がかかります。

-iと-xで指定された値は、20個のランダムな待機時間のリストを生成するために使用され、それぞれ異なるGoogle dork検索の間にランダムに選択されます。

返される結果の数

-m - Google dorkごとに返す最大検索結果の総数。各Google検索リクエストは最大100件の結果を一度に取得できるため、-m 500を選択した場合、各Google dork検索に対して5回の個別の検索クエリが必要になり、完了までの時間が増加します。

出力の保存

-o [optional/path/to/results.json] - 出力をJSONファイルに保存します。ファイル名を指定しない場合は、日時スタンプ付きのファイル名が生成されます。

-s [optional/path/to/results.txt] - URLをテキストファイルに保存します。ファイル名を指定しない場合は、日時スタンプ付きのファイル名が生成されます。

ログの保存

--log [optional/path/to/file.log] - ログを指定されたファイルに保存します。ファイル名を指定しない場合、デフォルトのファイルpagodo.py.logがpagodoディレクトリのルートに使用されます。

Googleがブロックしている!

7300以上の検索リクエストをできるだけ高速にGoogleに行うことは、単純に機能しません。Googleはそれをボットとして当然検出し、一定期間IPをブロックします。1つの解決策は、HTTP(S)/SOCKSプロキシのバンクを使用し、それらをpagodoに渡すことです。

ネイティブプロキシサポート

-pスイッチを使用して、プロキシのカンマ区切り文字列をpagodoに渡します。

root@kitploit:~
python pagodo.py -g dorks.txt -p http://myproxy:8080,socks5h://127.0.0.1:9050,socks5h://127.0.0.1:9051

異なるプロキシIPを活用するため、-iと-xの値をさらに減らすこともできます。pagodoに渡されたプロキシはラウンドロビンで選択されます。

proxychains4サポート

別の解決策は、proxychains4を使用してルックアップをラウンドロビンすることです。

proxychains4をインストールする

root@kitploit:~
apt install proxychains4 -y

/etc/proxychains4.conf設定ファイルを編集して、異なるプロキシサーバーをラウンドロビンでルックアップするようにします。以下の例では、2つの異なるダイナミックSOCKSプロキシが異なるローカルリスニングポート(9050と9051)で設定されています。

root@kitploit:~
vim /etc/proxychains4.conf
root@kitploit:~
round_robin
chain_len = 1
proxy_dns
remote_dns_subnet 224
tcp_read_time_out 15000
tcp_connect_time_out 8000
[ProxyList]
socks4 127.0.0.1 9050
socks4 127.0.0.1 9051

pagodo.pyスクリプトの前にproxychains4を置くと、各_リクエスト_ルックアップが異なるプロキシ(したがって異なるIP)を経由するようになります。

root@kitploit:~
proxychains4 python pagodo.py -g dorks/all_google_dorks.txt -o [optional/path/to/results.json] -s [optional/path/to/results.txt]

ただし、以下の場合、Googleにとって自然に見えない可能性があります:

  1. IP #1からgoogle.comへの「ブラウジング」をシミュレートする
  2. 最初の検索クエリをIP #2から行う
  3. 「次へ」をクリックして2番目の検索クエリをIP #3から行うシミュレート
  4. 「次へ」をクリックして3番目の検索クエリをIP #1から行うシミュレート

そのため、組み込みの-pプロキシサポートを使用することが推奨されます。yagooglesearchのドキュメントに記載されているように、「提供されたプロキシは検索のライフサイクル全体で使用され、検索の各部分で異なるプロキシをローテーションするのではなく、より人間らしく見せるためです。」

ライセンス

GNU General Public License v3.0に基づいて配布されています。詳細についてはLICENSEを参照してください。

連絡先

@opsdisk

プロジェクトリンク: https://github.com/opsdisk/pagodo

ツールをダウンロード