Herramienta para explotar bases de datos Firebase vulnerables/mal configuradas

Os escribo este post para compartir con vosotros una herramienta que he escrito. Se trata de un script en python que explota bases de datos Firebase vulnerables/mal configuradas. Me he inspirado en la investigación de appthority y el posterior artículo de thehackernews.

Mi script en python adopta un enfoque diferente al utilizado por los investigadores anteriormente citados: mediante la api (no oficial) de dnsdumpster y el escáner online disponible en pentest-tools se obtienen diversos subdominios de firebaseio.com asociados con sus correspondientes bases de datos. Algunas de estas bases de datos, quizás a propósito o quizás no, son accesibles sin requerir ningún tipo de autenticación, tal y como descubrieron en appthority.

Otra opción más interesante que he implementado es intentar escanear DBs de firebase mediante el recopilatorio del millón de sitios web más destacados de Alexa.
 
Requisitos (módulos python no-estándar):
Instalación:
git clone https://github.com/Turr0n/firebase.git
cd firebase
pip install -r requirements.txt
Uso:
 
python3 firebase.py [-h] [--dnsdumpster] [-d /path/to/file.htm] [-o results.json] [-l /path/to/file] [-c 100] [-p 4]

Argumentos:
    -h      Show the help message
    -d      Absolute path to the downloaded HTML file.
    -o      Output file name. Default: results.json
    -c      Crawl for domains in the top-1m by Alexa. Set how many domains to crawl, for example: 100. Up to 1000000
    -p      How many processes to execute. Default: 1
    -l      Path to a file containing the DBs to crawl. One DB name per line. This option can't be used with -d or -c
    --dnsdumpster       Use the DNSDumpster API to gather DBs
    --just-v    Ignore "non-vulnerable" DBs
    --amass Path of the output file of an amass scan ([-o] argument)

Ejemplos:

python3 firebase.py -p 4 -f results_1.json -c 150 --dnsdumpster 

Esto buscará los primeros 150 dominios en Alexa así como los DB proporcionados por DNSDumpster. Los resultados se guardarán en results_1.json y todo el script se ejecutará usando 4 procesos en paralelo.

El script creará un archivo json que contiene las bases de datos vulnerables compiladas y sus contenidos. Cada base de datos tiene un estado:
  •     -2: DB no existe
  •     -1: significa que no es vulnerable
  •     0: puede ser posible una mayor explotación
  •     1: vulnerable
Para obtener mejores resultados es recomendable irse a pentest-tools.com y en el escáner de subdominios introducir el siguiente dominio: firebaseio.com. Una vez que finaliza el escaneo, guardar el HTML de la página (CRL + S) y usar el argumento -d [ruta], esto permitirá que el script analice los subdominios descubiertos por ese servicio. Es posible que otros escáneres de subdominios sean compatibles.

Ahora demás soporta el escáner Amass de @caffix. Al ejecutar cualquier análisis con esa herramienta contra firebaseio.com utilizando el argumento -o, el script podrá tratar el archivo de salida y rastrear los DB descubiertos.Los DB de Firebase funcionan con esta estructura: https://[nombre de DB].firebaseio.com/. Si estás utilizando el argumento -l [ruta], el archivo suministrado debe contener un [nombre DB] por línea, por ejemplo:


airbnb
twitter
microsoft

Usando ese archivo buscará https://airbnb.firebaseio.com/.json, https://twitter.firebaseio.com/.json, https://microsoft.firebaseio.com/.json
 
Podéis encontrar el script y más detalles de su funcionamiento en mi Github: https://github.com/Turr0n/firebase

Contribución gracias a Francesc Herrera (Turr0n)
 
pd. Si también quieres compartir tu herramienta envianos un correo a hackplayers_at_ymail (con "y" griega) o contáctanos a través de cualquiera de nuestras RR.SS.

Comentarios