Serpscan es un potente script PHP diseñado para permitirte aprovechar el poder del dorking directamente desde la comodidad de tu línea de comandos.
Serpscan ofrece un poderoso uso de las directivas de búsqueda (Google, Bing, Yahoo, Yandex, Badiu), analizando los resultados de las búsquedas utilizando múltiples herramientas externas.
Puedes ejecutar la herramienta en tu PC o .
Características
- Escaneo de múltiples dominios
- Enumeración de subdominios
- Comprueba los subdominios vivos
- Encuentra URLs de todos los motores de búsqueda
- Encuentra archivos .js
- Busca puntos finales en archivos .js
- Encuentra parámetros
- Busca directorios
- Exportación de resultados en html, json
- Puedes personalizar tus dorks en el archivo de configuración (
config.php
)
Se pueden agregar más Dorks si así lo requieres, pero por defecto ya contiene los que usarás para funcionar.
Instalación
Prerrequistios:
Nombre | Repositorio |
---|---|
subfinder | https://github.com/projectdiscovery/subfinder |
httpx | https://github.com/projectdiscovery/httpx |
hakrawler | https://github.com/hakluke/hakrawler |
Docker
Copia el comando y utilízalo para Docker.
docker run -it alaa0x2/serpscan:latest php /usr/src/SerpScan/start.php -d domain.com -t html
Lo primero que haremos será clonar el repositorio, y proseguir con los demás comandos:
git clone https://github.com/Alaa-abdulridha/SerpScan.git
cd SerpScan
chmod 777 install.sh
./install.sh
Para su configuración:
- Debes agregar tu clave SerpApi al archivo
config.php
- Puedes coger tu clave de serpapi: https://serpapi.com
- También puedes agregar tus dorks al archivo de configuración sin ningún problema
<?php
require __DIR__ . '/vendor/autoload.php';
require __DIR__ . '/SAPI.class.php';
ini_set('max_execution_time', 0);
set_time_limit(0);
date_default_timezone_set('Asia/Riyadh');
// Replace with your API key.
$APIKey = 'API_KEY'
$outputPath = 'result';
$usePackage = true;
$domainsFile = 'domains.txt';
// query need to search , {{DOMAIN}} not change ever
$engine = [
['google', 'q', [
'subDomain' => 'site:.{{DOMAIN}}', // not change key
'SQLErrors' => 'site:{{DOMAIN}} intext:"sql syntax near" | intext:"syntax error has occurred" | intext:"incorrect syntax near" | intext:"unexpected end of SQL command" | intext:"Warning: mysql_connect()" | intext:"Warning: mysql_query()" | intext:"Warning: pg_connect()"',
'PubDocum' => 'site:{{DOMAIN}} ext:doc | ext:docx | ext:odt | ext:rtf | ext:sxw | ext:psw | ext:ppt | ext:pptx | ext:pps | ext:csv',
'PHP_Err_Warn' => 'site:{{DOMAIN}} "PHP Parse error" | "PHP Warning" | "PHP Error"',
'PHP_INFO' => 'site:{{DOMAIN}} ext:php intitle:phpinfo "published by the PHP Group"',
'DirLIstVuln' => 'site:{{DOMAIN}} intitle:index.of',
'ConfigsFiles' => 'site:{{DOMAIN}} ext:xml | ext:conf | ext:cnf | ext:reg | ext:inf | ext:rdp | ext:cfg | ext:txt | ext:ora | ext:ini | ext:env',
'PastingSites' => 'site:pastebin.com | site:paste2.org | site:pastehtml.com | site:slexy.org | site:snipplr.com | site:snipt.net | site:textsnip.com | site:bitpaste.app | site:justpaste.it | site:heypasteit.com | site:hastebin.com | site:dpaste.org | site:dpaste.com | site:codepad.org | site:jsitor.com | site:codepen.io | site:jsfiddle.net | site:dotnetfiddle.net | site:phpfiddle.org | site:ide.geeksforgeeks.org | site:repl.it | site:ideone.com | site:paste.debian.net | site:paste.org | site:paste.org.ru | site:codebeautify.org | site:codeshare.io | site:trello.com "{{DOMAIN}}"',
'DBFiles' => 'site:{{DOMAIN}} ext:sql | ext:dbf | ext:mdb',
'SearchGit' => 'site:github.com | site:gitlab.com "{{DOMAIN}}"',
'SearchStack' => 'site:stackoverflow.com "{{DOMAIN}}"',
'LogsFiles' => 'site:{{DOMAIN}} ext:log',
'BackupFiles' => 'site:{{DOMAIN}} ext:bkf | ext:bkp | ext:bak | ext:old | ext:backup',
'LoginPages' => 'site:{{DOMAIN}} inurl:login | inurl:signin | intitle:Login | intitle:"sign in" | inurl:auth',
'SignupPages' => 'site:{{DOMAIN}} inurl:signup | inurl:register | intitle:Signup',
]],
['baidu', 'q', [
'subDomain' => 'site:.{{DOMAIN}}', // not change key
]],
['bing', 'q', [
'subDomain' => 'site:.{{DOMAIN}}', // not change key
]],
['yahoo', 'p', [
'subDomain' => 'site:.{{DOMAIN}}', // not change key
]],
['yandex', 'text', [
'subDomain' => 'site:{{DOMAIN}}', // not change key
]]
];
Los dorks actuales comprobarán:
- Documentos expuestos públicamente
- Vulnerabilidades de listas de directorios
- Archivos de configuración expuestos
- Archivos de base de datos expuestos
- Archivos de registro expuestos
- Copia de seguridad y archivos antiguos
- Páginas de inicio de sesión
- Errores SQL
- Errores / advertencias de PHP
- phpinfo ()
- Buscar en Pastebin.com / pegar sitios
- Buscar en Github.com y Gitlab.com
Uso
El argumento -t debe ser utilizado en todos los casos, podrías introducir múltiples objetivos en el archivo domains.txt
.
Flag | Descripción | Ejemplo |
---|---|---|
-d | Dominio para buscar subdominios | php start.php -d target.com -t html |
-t | La plantilla del resultado (html,json) | php start.php -d target.com -t html |
-w | Archivo que contiene la lista de dominios a enumerar | php start.php -w domains.txt -t html |
php serpscan.php -d objetivo.com -t html
Aquí están los resultados:
Esta herramienta es sólo un ejemplo de lo que podrías lograr usando SerpApi para automatizar tu búsqueda de errores 😀
Revisa el repo de GitHub, hay una muestra del informe que se proporciona.
Y como mencioné antes, puedes obtener tu clave de API en https://serpapi.com
Es el sitio web más barato que hay y el mejor para proporcionarte este servicio con un gran equipo, y te proporcionarán 5000 créditos de búsqueda gratis o más (Que es realmente mucho).
https://github.com/Alaa-abdulridha/SerpScan