
pagodo (Google Dork Passivo) - Automatizza lo scraping e la ricerca nel Google Hacking Database
pagodo automatizza la ricerca su Google di pagine web e applicazioni potenzialmente vulnerabili su Internet. Sostituisce l'esecuzione manuale delle ricerche Google dork con un browser GUI web.
Ci sono 2 parti. La prima è ghdb_scraper.py che recupera gli ultimi Google dork, e la seconda parte è pagodo.py che sfrutta le informazioni raccolte da ghdb_scraper.py.
La libreria principale di ricerca Google ora utilizza yagooglesearch più flessibile al posto di googlesearch. Consulta il README di yagooglesearch per una spiegazione più approfondita delle differenze e delle capacità delle librerie.
Questa versione di pagodo supporta anche nativamente HTTP(S) e SOCKS5, quindi non è più necessario avvolgerlo in uno strumento come proxychains4 se hai bisogno del supporto proxy. Puoi specificare più proxy da utilizzare in modo round-robin fornendo una stringa separata da virgole di proxy usando l'opzione -p.
Offensive Security mantiene il Google Hacking Database (GHDB) che si trova qui: https://www.exploit-db.com/google-hacking-database. È una raccolta di ricerche Google, chiamate dork, che possono essere utilizzate per trovare macchine potenzialmente vulnerabili o altre informazioni interessanti catturate dai bot di ricerca di Google.
I termini e le condizioni per pagodo sono gli stessi termini e condizioni presenti in
yagooglesearch.
Questo codice è fornito così com'è e sei pienamente responsabile di come viene utilizzato. Lo scraping dei risultati di ricerca di Google potrebbe violare i loro Termini di Servizio. Un'altra libreria Python di ricerca Google ha avuto alcune informazioni/discussioni interessanti a riguardo:
Il metodo preferito di Google è utilizzare la loro API.
Gli script sono scritti per Python 3.6+. Clona il repository git e installa i requisiti.
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
Per iniziare, pagodo.py ha bisogno di un elenco di tutti i Google dork attuali. Il repository contiene una directory dorks/ con i dork correnti al momento dell'ultima esecuzione di ghdb_scraper.py. Si consiglia di eseguire ghdb_scraper.py per ottenere i dati più aggiornati prima di eseguire pagodo.py. La directory dorks/ contiene:
all_google_dorks.txt che contiene tutti i Google dork, uno per rigaall_google_dorks.json che è la risposta JSON da GHDBCategorie di dork:
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",
}
Scrive tutti i dork in all_google_dorks.txt, all_google_dorks.json e categorie individuali se si desiderano più dati contestuali su ogni dork.
python ghdb_scraper.py -s -j -i
La funzione ghdb_scraper.retrieve_google_dorks() restituisce un dizionario con la seguente struttura dati:
ghdb_dict = {
"total_dorks": total_dorks,
"extracted_dorks": extracted_dorks,
"category_dict": category_dict,
}
Utilizzando una shell Python (come python o ipython) per esplorare i dati:
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"]
python pagodo.py -d example.com -g dorks.txt
La funzione pagodo.Pagodo.go() restituisce un dizionario con la struttura dati di seguito (i dork usati sono esempi fittizi):
{
"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",
}
Utilizzando una shell Python (come python o ipython) per esplorare i dati:
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)
L'opzione -d può essere utilizzata per limitare i risultati a un dominio specifico e funge da operatore di ricerca Google:
site:github.com
-i - Specifica il ritardo minimo tra le ricerche di dork, in secondi. Non renderlo troppo piccolo, altrimenti il tuo IP verrà HTTP 429 rapidamente.-x - Specifica il ritardo massimo tra le ricerche di dork, in secondi. Non renderlo troppo grande altrimenti le ricerche richiederanno molto tempo.I valori forniti da -i e -x vengono utilizzati per generare una lista di 20 tempi di attesa casuali, che vengono selezionati casualmente tra ogni diversa ricerca di Google dork.
-m - Il numero massimo totale di risultati di ricerca da restituire per Google dork. Ogni richiesta di ricerca Google può recuperare al massimo 100 risultati alla volta, quindi se scegli -m 500, dovranno essere effettuate 5 query di ricerca separate per ogni ricerca di Google dork, il che aumenterà il tempo necessario per completare.