Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
pagodo — pagodo (수동 Google Dork) - Google 해킹 데이터베이스 스크래핑 및 검색 자동화 | Kitploit
도구/GitHubGitHub/opsdisk/pagodo
OSINT (Open Source Intelligence)ReconnaissanceVulnerability AnalysisInformation GatheringWeb Security
GitHubopsdisk/pagodo

pagodo

pagodo (수동 Google Dork) - Google 해킹 데이터베이스 스크래핑 및 검색 자동화

저장소 보기
3.4k55011개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

pagodo - 수동 Google 도크

소개

pagodo는 인터넷에서 잠재적으로 취약한 웹 페이지 및 애플리케이션을 찾기 위해 Google 검색을 자동화합니다. 웹 GUI 브라우저로 수동으로 Google 도크 검색을 수행하는 것을 대체합니다.

두 부분으로 구성됩니다. 첫 번째는 ghdb_scraper.py로 최신 Google 도크를 검색하고, 두 번째는 pagodo.py로 ghdb_scraper.py가 수집한 정보를 활용합니다.

핵심 Google 검색 라이브러리는 이제 보다 유연한 yagooglesearch를 사용하며 이전의 googlesearch를 대체합니다. 라이브러리 차이점 및 기능에 대한 자세한 설명은 yagooglesearch README를 확인하세요.

이 버전의 pagodo는 기본 HTTP(S) 및 SOCKS5 애플리케이션 지원도 제공하므로, 프록시 지원이 필요할 때 더 이상 proxychains4와 같은 도구로 감쌀 필요가 없습니다. -p 스위치를 사용하여 쉼표로 구분된 프록시 문자열을 제공하여 라운드 로빈 방식으로 여러 프록시를 사용할 수 있습니다.

Google 도크란 무엇인가요?

Offensive Security는 여기에서 찾을 수 있는 Google Hacking Database (GHDB)를 유지 관리합니다: https://www.exploit-db.com/google-hacking-database. Google 검색 봇에 의해 수집된 잠재적으로 취약한 상자나 기타 유용한 정보를 찾는 데 사용할 수 있는 Google 검색(도크) 모음입니다.

이용 약관

pagodo의 이용 약관은 yagooglesearch에서 찾을 수 있는 이용 약관과 동일합니다.

이 코드는 있는 그대로 제공되며 사용 방법에 대한 전적인 책임은 사용자에게 있습니다. Google 검색 결과를 스크래핑하는 것은 Google의 서비스 약관을 위반할 수 있습니다. 다른 Python Google 검색 라이브러리에 몇 가지 흥미로운 정보/논의가 있습니다:

  • 원본 이슈
  • 응답
  • 작성자가 별도의 이용 약관을 만들었습니다.
  • ...여기에 이 블로그로의 링크가 포함되어 있습니다.

Google이 선호하는 방법은 API를 사용하는 것입니다.

설치

스크립트는 Python 3.6+ 용으로 작성되었습니다. git 저장소를 클론하고 요구 사항을 설치하세요.

root@kitploit:~
git clone https://github.com/opsdisk/pagodo.git
cd pagodo
python3 -m venv .venv  # 가상 환경을 사용하는 경우.
source .venv/bin/activate  # 가상 환경을 사용하는 경우.
pip install --upgrade pip setuptools
pip install -r requirements.txt

ghdb_scraper.py

시작하려면 pagodo.py에 모든 현재 Google 도크 목록이 필요합니다. 저장소에는 ghdb_scraper.py가 마지막으로 실행되었을 때의 현재 도크가 포함된 dorks/ 디렉토리가 있습니다. pagodo.py를 실행하기 전에 ghdb_scraper.py를 실행하여 가장 최신 데이터를 가져오는 것이 좋습니다. dorks/ 디렉토리에는 다음이 포함됩니다:

  • 모든 Google 도크가 포함된 all_google_dorks.txt 파일 (한 줄에 하나)
  • GHDB의 JSON 응답인 all_google_dorks.json 파일
  • 개별 카테고리 도크

도크 카테고리:

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를 스크립트로 사용하기

모든 도크를 all_google_dorks.txt, all_google_dorks.json 및 개별 카테고리에 기록합니다 (각 도크에 대한 더 많은 컨텍스트 데이터를 원하는 경우).

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() 함수는 아래 데이터 구조를 가진 딕셔너리를 반환합니다 (사용된 도크는 예시):

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 = 파일 이름 자동 생성, 그렇지 않으면 경로 및 파일 이름 문자열 전달.
    save_urls_to_file=None,  # None = 파일 이름 자동 생성, 그렇지 않으면 경로 및 파일 이름 문자열 전달.
    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 도크 검색 간 대기 시간

  • -i - 도크 검색 간 최소 지연 시간(초)을 지정합니다. 너무 작게 설정하면 IP가 빠르게 HTTP 429를 받게 됩니다.
  • -x - 도크 검색 간 최대 지연 시간(초)을 지정합니다. 너무 크게 설정하면 검색 시간이 오래 걸립니다.

-i 및 -x로 제공된 값은 20개의 무작위 대기 시간 목록을 생성하는 데 사용되며, 각 Google 도크 검색 사이에 무작위로 선택됩니다.

반환할 결과 수

-m - Google 도크당 반환할 최대 검색 결과 총 수입니다. 각 Google 검색 요청은 한 번에 최대 100개의 결과를 가져올 수 있으므로, -m 500을 선택하면 각 Google 도크 검색에 대해 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이 차단하고 있어요!

가능한 한 빨리 Google에 7300개 이상의 검색 요청을 수행하는 것은 작동하지 않습니다. Google은 당연히 이를 봇으로 감지하고 일정 기간 동안 IP를 차단할 것입니다. 한 가지 해결책은 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 설정 파일을 편집하여 다른 프록시 서버를 통해 조회를 라운드 로빈합니다. 아래 예에서는 서로 다른 로컬 수신 포트(9050 및 9051)를 가진 2개의 다른 동적 소켓 프록시가 설정되었습니다.

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. IP #3에서 "다음"을 클릭하여 두 번째 검색 쿼리 시뮬레이션
  4. IP #1에서 "다음"을 클릭하여 세 번째 검색 쿼리 시뮬레이션

이러한 이유로, yagooglesearch 문서에 명시된 대로 기본 -p 프록시 지원을 사용하는 것이 권장됩니다. "제공된 프록시는 검색의 전체 수명 주기 동안 사용되어 검색을 더 인간처럼 보이게 하며, 검색의 다른 부분에 대해 다양한 프록시를 회전하는 대신 사용됩니다."

라이선스

GNU General Public License v3.0에 따라 배포됩니다. 자세한 내용은 LICENSE를 참조하세요.

연락처

@opsdisk

프로젝트 링크: https://github.com/opsdisk/pagodo

도구 다운로드