Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
ODBParser — Herramienta OSINT para buscar, analizar y volcar solo los directorios abiertos de Elasticsearch y MongoDB que contengan los datos que te interesa exponer. | Kitploit
Herramientas/GitHubGitHub/citcheese/odbparser
OSINT (Inteligencia de Fuentes Abiertas)Escáneres de VulnerabilidadesExfiltración de DatosRecopilación de InformaciónSeguridad de Bases de Datos
GitHubcitcheese/odbparser

ODBParser

Herramienta OSINT para buscar, analizar y volcar solo los directorios abiertos de Elasticsearch y MongoDB que contengan los datos que te interesa exponer.

Ver Repositorio
4776hace 6 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

ODBParser

TL;DR

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!

¿Qué es esto?

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.

Características

Para identificar bases de datos abiertas puedes:

  • consultar Shodan y BinaryEdge usando todos los parámetros posibles (filtrar por país, número de puerto, lo que sea)
  • especificar una única dirección IP
  • cargar un archivo con una lista de direcciones IP
  • pegar una lista de direcciones IP desde el portapapeles

Opciones de volcado:

  • analiza todas las bases de datos/colecciones para identificar los datos que especifiques
  • captura todo lo alojado en el servidor
  • captura solo un índice/colección
  • Usa Ctrl+C para omitir el volcado de un índice en particular

Postprocesamiento:

  • convierte volcados JSON a CSV
  • elimina columnas inútiles del CSV

Otras características:

  • mantiene un registro de todas las direcciones IP y bases de datos que has consultado, junto con información sobre cada servidor.
  • mantiene un archivo de estadísticas con el número de IPs consultadas, bases de datos analizadas y registros volcados.
  • convierte volcados JSON que ya tengas a CSV
  • para cada base de datos cuyo número total de registros supere tu límite, el script creará una entrada en un archivo especial junto con 5 registros de muestra para que puedas revisar y decidir si vale la pena capturar la base de datos.
  • La salida predeterminada es un archivo JSON separado por líneas, con un objeto JSON en cada línea. Puedes elegir que genere un archivo JSON "correcto" usando la bandera "properjson".
  • Puedes convertir los archivos a CSV sobre la marcha o convertir solo ciertos archivos después de que finalice la ejecución (recomiendo esto último). Los archivos JSON convertidos se moverán a una carpeta llamada "JSON backups" en el mismo directorio. NOTA: Al convertir a CSV, el script elimina filas duplicadas exactas y elimina columnas y filas donde todos los valores son NaN, porque eso es lo que quería hacer. Si prefieres una copia exacta del archivo JSON, siéntete libre de editar la función.
  • Solo Windows Si el script devuelve una gran cantidad de índices que contienen el campo que te interesa, el script listará los nombres de las bases de datos, hará una pausa y te dará diez segundos para decidir si quieres continuar y extraer todos los datos de cada índice. He descubierto que si se devuelven demasiadas bases de datos incluso después de haber especificado los campos deseados, es probable que los datos sean falsos o registros inútiles, y normalmente puedes determinarlo por el nombre. Si no actúas en 10 segundos, el script procederá a volcar todos los índices.
  • Como habrás notado, muchas personas han estado escaneando bases de datos MongoDB y secuestrándolas, a menudo cambiando su nombre a algo como "TO_RESTORE_EMAIL_XXXRESTORE.COM". El scraper de MongoDB ignorará todas las bases de datos y colecciones que hayan sido comprometidas, verificando el nombre de la base de datos/colección contra una lista de cadenas que indican compromiso.
  • El script es bastante verboso (quizás demasiado), pero me gusta ver lo que está pasando. Si prefieres, puedes silenciar las declaraciones print.

Personalización

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:

  • especificar qué nombres de índices o colecciones deseas recopilar indicando subcadenas en el archivo de configuración. Por ejemplo, si tienes el término "cliente", el script extraerá el índice llamado "clientes" o "cliente_datos". Recomiendo mantener estas listas en blanco, ya que nunca sabes cómo se llamarán las bases de datos que te interesan, y en su lugar especificar los campos que te importan.
  • especificar qué campos te interesan: si solo quieres capturar índices de ES que tengan "email" en el nombre de un campo, por ejemplo "user_emails", puedes hacerlo. Si quieres asegurarte de que el índice tenga al menos 2 campos que te interesen, también puedes hacerlo. O si simplemente quieres capturar todo sin importar qué campos haya, también puedes hacerlo.
  • especificar qué índices NO deseas, por ejemplo, nombres de índices del sistema y otros que se usan generalmente para registro básico. Se proporcionan ejemplos en el archivo de configuración.
  • anular la configuración y capturar todo en un servidor.
  • especificar la salida (por defecto es JSON, puedes elegir CSV).
  • establecer el tamaño mínimo y máximo de la base de datos que el script volcará por defecto, y puedes establecer una bandera para anular el máximo de documentos caso por caso.

Instalación y Requisitos

  • Clona o descarga en tu máquina.
  • Obtén claves API para Shodan y/o BinaryEdge.
  • Configura los parámetros en el archivo ODBconfig.py.
  • Instala los requisitos desde el archivo.

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

Próximos Pasos y Problemas Conocidos

  • limpiar un poco más el código
  • aplicarle multi-hilo a varios procesos
  • expandir a otros tipos de bases de datos
  • agregar otros motores de búsqueda de directorios abiertos (Zoomeye, etc.)
  • no se puede desplazar más allá de la primera página para ciertas instancias de ES debido a la forma en que funciona ES <2.0. ¡Agradezco cualquier ayuda! Creo que lo arreglé. Abre un issue si recibes errores de scrollid

Uso

root@kitploit:~
    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.
Descargar herramienta