SQL INJECTION
Disusun Oleh :
NAMA : FEBRIAN DAFFA EKA PUTRA
NO URUT : 11
JURUSAN : TEKNIK KOMPUTER DAN JARINGAN 1
SQLMap
Kali ini kita akan membahas tutorial hacing dengan teknik SQL Injection menggunakan
tool SQLMap untuk melakukan hacking atau serangan pada website berbasis data dengan tujuan
untuk menemukan kerentanan keamanan pada website tersebut.
1.1 Apa Itu SQLMap
SQLMap adalah salah satu tool otomatis untuk melakukan SQL Injection
yang paling populer dan hebat. Dengan url http request yang rentan, sqlmap dapat
mengeksploitasi remote database dan melakukan hacking seperti mengekstrak
nama database, tabel, kolom, semua data dalam tabel, dll. Bahkan dapat membaca
dan menulis file pada remote sistem file pada kondisi tertentu. Ditulis dalam
bahasa python dan merupakan salah satu alat hacking yang paling hebat. SQLMap
adalah SQL Injection metasploit.
1. SQLMap
Kali ini kita akan membahas tutorial hacing dengan teknik SQL Injection
menggunakan tool SQLMap untuk melakukan hacking atau serangan pada website berbasis
data dengan tujuan untuk menemukan kerentanan keamanan pada website tersebut.
Apa Itu SQLMap
SQLMap adalah salah satu tool otomatis untuk melakukan SQL Injection yang paling
populer dan hebat. Dengan url http request yang rentan, sqlmap dapat mengeksploitasi remote
database dan melakukan hacking seperti mengekstrak nama database, tabel, kolom, semua data
dalam tabel, dll. Bahkan dapat membaca dan menulis file pada remote sistem file pada kondisi
tertentu. Ditulis dalam bahasa python dan merupakan salah satu alat hacking yang paling hebat.
SQLMap adalah SQL Injection metasploit.
SQLMap disertakan dalam beberapa distro linux pen testing seperti kali linux, backtrack,
backbox dll. Pada distro lain bisa diunduh dari url berikut. http://sqlmap.org. Karena ditulis
dalam bahasa python, maka anda harus menginstal python di sistem anda terlebih dahulu. Di
ubuntu install python dari synaptic. Pada windows install activestate python.
Untuk daftar pilihan dan parameter yang bisa digunakan dengan perintah sqlmap, silahkan
periksa dokumentasi sqlmap di https://github.com/sqlmapproject/sqlmap/wiki/Usage. Pada
tutorial ini kita akan belajar bagaimana menggunakan sqlmap untuk exploit aplikasi web yang
rentan dan melihat apa yang bisa dilakukan dengan SQLMap.
Untuk memahami tutorial SQL Injection ini Anda harus memiliki pengetahuan
menyeluruh tentang bagaimana aplikasi web berbasis database bekerja. Misalnya aplikasi web
yang dibuat dengan PHP + MySQL.
Vulnerable URL
Misalkan ada sebuah aplikasi website memiliki URL sebagai berikut:
http://www.website.com/index.php?id=51
URL ini rentan terhadap serangan SQL Injection karena pengembang situs tersebut tidak benar-
benar mengamankan parameter id. Hal ini bisa saja diuji coba dengan mencoba membuka url
tersebut
http://www.website.com/index.php?id=51'
Kita hanya menambahkan satu kutipan pada parameter id. Jika url ini melempar kesalahan atau
bereaksi dengan cara yang tidak normal maka jelas bahwa database telah mendapat kutipan
tunggal yang tak terduga sehingga aplikasinya tidak mampu mengamankannya dengan benar.
Jadi dalam hal ini parameter input "id" ini rentan terhadap sql injection.
.......
Bagaimana Selanjutnya ?
Jalankan query sql yang bervariasi
Ini mungkin hal termudah untuk dilakukan pada server yang rentan terhadap sql
injection. Parameter --sql-query dapat digunakan untuk menentukan query sql yang akan
dijalankan. Hal yang menarik adalah membuat pengguna di tabel pengguna atau yang serupa.
Atau mungkin mengubah / memodifikasi isi halaman cms dll.
Parameter lain - shell-shell akan memberikan shell sql seperti antarmuka untuk
menjalankan query secara interaktif.
Masuk ke panel admin dan mainkan
Jika situs web menjalankan beberapa jenis cms kustom atau yang serupa yang memiliki
panel admin, maka akan memungkinan anda untuk masuk ke dalam asalkan Anda dapat
memecahkan kata sandi yang diambil di database dump. Kata kunci yang sederhana dan pendek
dapat dipecahkan hanya dengan brute forcing atau google.com.
Periksa apakah panel admin mengizinkan untuk mengupload beberapa file. Jika file php tertentu
dapat diunggah maka akan jauh lebih menyenangkan. File php dapat berisi aplikasi pemanggilan
shell_exec, system, exec atau passthru dan itu akan memungkinkan untuk mengeksekusi perintah
sistem sekehendak anda. Skrip shell web PHP bisa diunggah untuk melakukan hal yang sama.
Shell di remote OS
Ini adalah hal yang harus dilakukan untuk mengambil alih server. Namun perhatikan
bahwa itu tidak semudah dan sepele seperti trik yang ditunjukkan di atas. Sqlmap dilengkapi
dengan parameter call --os-shell yang bisa digunakan untuk mencoba shell pada sistem remote,
namun memiliki banyak keterbatasan tersendiri. Menurut manual sqlmap
It is possible to run arbitrary commands on the database server's underlying operating system
when the back-end database management system is either MySQL, PostgreSQL or Microsoft
SQL Server, and the session user has the needed privileges to abuse database specific
functionalities and architectural weaknesses.
Memungkinkan untuk menjalankan perintah tertentu pada sistem operasi database server
yang mendasar ketika sistem manajemen basis data back-end baik MySQL, PostgreSQL atau
Microsoft SQL Server, dan session user memiliki privilege yang diperlukan untuk
menyalahgunakan fungsionalitas spesifik database dan kelemahan arsitektur.
Privilege yang paling penting yang dibutuhkan oleh pengguna database saat ini adalah
menulis file melalui fungsi database. Ini tidak ada dalam kebanyakan kasus. Oleh karena itu
teknik ini tidak akan bekerja dalam banyak kasus.
Catatan
1. Terkadang sqlmap tidak dapat terhubung ke url sama sekali. Ini terlihat saat stuck pada
tugas pertama "testing connection to the target url". Dalam kasus tersebut, sangat
membantu untuk menggunakan opsi "-random-agent". Hal ini membuat sqlmap
menggunakan signature user agent yang valid seperti yang dikirim oleh browser seperti
chrome atau firefox.
2. Untuk url yang tidak dalam bentuk param = nilai , sqlmap tidak bisa secara otomatis tahu
dimana harus diinjeksi.
Misalnya url mvc seperti http://www.site.com/class_name/method/43/80.
Dalam kasus tersebut sqlmap perlu diberi tahu titik injeksi yang ditandai oleh *
http://www.site.com/class_name/method/43*/80
Perintah di atas akan memberitahu sqlmap untuk melakukan injection pada titik yang
ditandai oleh *
3. Bila menggunakan form yang mengirimkan data melalui metode post maka sqlmap harus
disediakan data post pada opsi "--data". Untuk informasi lebih lanjut, lihat tutorial ini
tentang Penggunaan SQLMap pada form.
2. jSQL Injection
jSQL Injection adalah aplikasi ringan yang digunakan untuk mencari informasi database
dari server yang jauh. jSQL Injection adalah aplikasi gratis, open source dan cross-platform
untuk Windows, Linux dan Mac OS X dengan Java dari versi 8 hingga 15. jSQL Injection juga
merupakan bagian dari distribusi pengujian penetrasi resmi Kali Linux dan disertakan dalam
berbagai distribusi lain seperti Pentest Box, Parrot Security OS, ArchStrike dan BlackArch
Linux.
Integrasi Berkelanjutan
Perangkat lunak ini dikembangkan menggunakan libralies open source seperti Spring,
Spock dan Hibernate dan diuji menggunakan platform integrasi berkelanjutan seperti Travis CI
dan Github Actions. Uji non-regresi dijalankan terhadap database docker dan dalam memori dan
GUI diuji pada layar VNC di cloud pada platform CI. Kemudian pemeriksaan kualitas disimpan
pada platform kualitas kode.
+---+ +-----------------------------------------------------------------------+
| | | JUNIT TEST FRAMEWORK |
| | +-----------------|-------------------------------------|---------------+
| D | +-----------------v-------------------+ +--------------v---------------+
| O | | INJECTION MODEL <--+ GUI |
| C | +-----------------|-------------------+ +------------------------------+
| K | +-----------------v-----------------------------------------------------+
| E | | SPRING API |
| R | +---|---------|----------|----------|------|------|-------|--------|----+
| | +---v---------v----------v----------v------v------v-------v--------v----+
| | | MYSQL | POSTGRES | SQL SERVER | CUBRID | H2 | DERBY | HSQLDB | SQLITE |
+---+ +-----------------------------------------------------------------------+