
Herramienta OSINT para buscar, analizar y volcar solo los directorios abiertos de Elasticsearch y MongoDB que contengan los datos que te interesa exponer.
![]() | ODBParser |
ODBParser es una herramienta para buscar información personal identificable (PII) expuesta en bases de datos abiertas.
SOLO debe usarse para identificar PII expuesta y advertir a los propietarios de servidores sobre el mantenimiento irresponsable de bases de datos
O para consultar bases de datos a las que tengas permiso de acceso.
¡POR FAVOR, USA DE FORMA RESPONSABLE!
Escribí esto porque quería crear una herramienta OSINT integral para buscar, analizar y examinar bases de datos abiertas con el fin de identificar filtraciones de PII en servidores de terceros. Parece que otras herramientas solo buscan bases de datos abiertas o las vuelcan una vez identificadas, y luego recopilan datos indiscriminadamente. Comenzó con una o dos funciones y se convirtió en lo que hay en este repositorio, por lo que el código no está tan limpio y bonito como podría ser.
Para identificar bases de datos abiertas puedes:
Opciones de volcado:
Postprocesamiento:
Otras características:
Consulta el archivo odbconfig.py para especificar tus parámetros, porque al final el objetivo es exponer los datos que TE interesan. Proporcioné algunos ejemplos en el archivo de configuración. ¡Juega con ellos!
Puedes:
Sugiero crear un entorno virtual para ODBParser para evitar problemas con versiones incorrectas de módulos. Nota: Probado SOLO con Python 3.7.3 y en Windows 10.
POR FAVOR, USA DE FORMA RESPONSABLE
Examples: python ODBParser.py -cn US -p 8080 -t users --elastic --shodan --csv --limit 100
python ODBParser.py -ip 192.168.2:8080 --mongo --ignorelogs --nosizelimits
Damage to-date: 0 servers parsed | 0 databases dumped | 0 records pulled
_____________________________________________________________________________
optional arguments:
-h, --help show this help message and exit
Query Options:
--shodan, -sh Add this flag if using Shodan. Specify ES or MDB w/
flags.
--binary, -be Add this flag if using BinaryEdge. Specify ES or MDB
w/ flags.
--ip , -ip Query one server. Add port like so '192.165.2.1:8080'
or will use default ports for each db type. Add ES or
MDB flags to specify parser.
--file , -f Load line-separated IPs from file. Add port or will
assume default ports for each db type. Add ES or MDB
flags to specify parser.
--paste, -v Query line-separated IPs from clipboard. Add port or
will assume default ports for each db type, e.g. 9200
for ES. Add ES or MDB flags to specify parser.
Shodan/BinaryEdge Options:
--limit , -l Max number of results per query. Default is
500.
--port , -p Filter by port.
--country , -cn Filter by country (two-letter country code).
--terms , -t Enter any additional query terms you want here, e.g.
'users'
Dump Options:
--mongo, -mdb Use for IP, Shodan, BinaryEdge & Paste methods to
specify parser.
--elastic, -es Use for IP, Shodan, BinaryEdge & Paste methods to
specify parser.
--properjson, -pj Add this flag if would like out put to be proper JSON
file. Default is one JSON string object per line.
--database , -db Specify database you want to grab. For MDB must be in
format format 'db:collection'. Use with IP arg & 'es'
or 'mdb' flag
--getall, -g Get all indices regardless of fields and
collection/index names (overrides selections in config
file).
--ignorelogs Connect to a server you've already checked out.
--nosizelimits, -n Dump index no matter how big it is. Default max doc
count is 800,000.
--csv Convert JSON dumps into CSV format on the fly. (Puts
JSON files in backup folder in case there is issue
with coversion)
CSV/Post-processing Options:
--convertToCSV , -c Convert JSON file or folder of JSON dumps to CSVs
after the fact. Enter full path or folder name in
current working directory
--dontflatten Use if run into memory issues converting JSON files to
CSV during post-processing.
--basic Use with --convertToCSV flag if your JSON dumps are
not true JSON files, but rather line separated JSON
objects that you got from other sources.
--dontclean, -dc Choose if want to keep useless data when convert to
CSV. See docs for more info.