Cara Sederhana Mencegah Serangan SQL Injection Get Parameter ID dengan Web Server Apache di GNU/Linux


Assalamualaikum Wr.Wb...
dengan diberikan nikmat dan rezeki dari Allah SWT, saya Mr.GagalTotal666 akan
berbagi kepada anda yaitu tentang cara sederhana mencegah serangan SQL Injection
Get Parameter ID dengan web server Apache di GNU/Linux.

sedikit penjelasan SQL Injection

SQL injection adalah suatu jenis aksi hacking pada keamanan komputer di mana
seorang penyerang atau attacker bisa mendapatkan akses ke basis data di dalam sistem dengan
memanfaatkan sebuah celah keamanan yang terjadi dalam lapisan basis data sebuah
aplikasi yang tidak diproteksi dengan baik.

Cara yang digunakan oleh penyerang atau attacker sebenarnya sangat sederhana,
yaitu attacker berusaha memasukkan query yang tidak valid ke melalui field input string
ataupun melalui URL. Mengingat sederhananya teknik ini ada beberapa programmer
yang terkadang mengabaikannya.

Contoh sederhana cara kerja SQL Injection

Pada umumnya sintak SQL yang sering dipakai pada proses developer atau pembuatan
sebuah aplikasi adalah sintak yang termasuk dalam kategori perintah
DML(Data Manipualtion Language) yakni INSERT, UPDATE dan DELETE.

Contoh misalnya sebuah web dengan URL seperti ini :
$ http://127.0.0.1/latihan-crud/edit.php?id=8

perintah untuk menampilkan record SQL dari skema URL seperti di atas biasanya
adalah contoh seperti ini
$ "SELECT * FROM namatable WHERE id='$id'";
contoh penulisan sintak PHP akan menjadi seperti ini :
$sql = "SELECT * FROM mahasiswa WHERE id='$id'";

pada proses eksekusi normal sintak tersebut, database server akan memberikan balikan
hasil sesuai yang parameter yang dikirimkan. Namun bila memodifikasi parameter yang
dikirim melalu url dengan sebuah karakter khusus yaitu single quote ( ‘ )

contoh seperti ini
$ http://127.0.0.1/latihan-crud/edit.php?id=8'
$ http://127.0.0.1/latihan-crud/edit.php?id=8%27
maka SQL query tersebut tidak akan bisa di eksekusi dan database server akan memberikan
balikan berupa pesan error sintak SQL, contoh seperti ini
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''8''' at line 1
atau juga
#1064 - You have an error in your SQL syntax;
check the manual that corresponds to yourMySQL server version for the right syntax to use near ''' at line 1

Dan hal ini lah yang mejadi celah sebuah situs dan dengan mudah di eksploitasi
dengan metode SQL Injection. Apa lagi jika dengan menggunakan tools SQL ijection
seperti SQLMap, BlindSQL dan lain-lain... yang mempermudah kerjaan si attacker.

contoh poc pada SQLMap, seperti ini
$ sqlmap -u "http://127.0.0.1/latihan-crud/edit.php?id=8" --dbs
Parameter: id (GET)
    Type: error-based
    Title: MySQL >= 5.0 AND error-based - WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)
    Payload: id=8' AND (SELECT 7571 FROM(SELECT COUNT(*),CONCAT(0x716b627871,(SELECT (ELT(7571=7571,1))),0x7170787871,FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.PLUGINS GROUP BY x)a) AND 'EMoC'='EMoC
    Type: AND/OR time-based blind
    Title: MySQL >= 5.0.12 AND time-based blind
    Payload: id=8' AND SLEEP(5) AND 'kYrE'='kYrE
    Type: UNION query
    Title: Generic UNION query (NULL) - 5 columns
    Payload: id=-8192' UNION ALL SELECT CONCAT(0x716b627871,0x544570576f56634257434c6e516c575976496150554d584450747a587a46694845414c4a6d65584d,0x7170787871),NULL,NULL,NULL,NULL-- JynT

oke langsung saja cara mengamankan dari serangan SQL Injection

ada beberapa cara yang bisa dilakukan untuk mengatasi serangan SQL injection,
kita bisa membuat script anti SQL injection dengan memanfaatkan fungsi bawan
dari PHP dan MySQL yaitu mysql_real_escape atau mysql_real_escape_string
kalau dengan PHP 5 ke atas contoh PHP 7 mysqli_real_escape_string.

cara penggunaanya adalah sebagai berikut :
$id = mysqli_real_escape_string($koneksi,$_GET['id']);

maka akan tidak ada pesan sintak SQL lagi jika sudah di patch
contoh seperti ini


dan jika si attacker menginject lagi maka tidak bisa
contoh dengan SQLMAP


oke mungkin itu saja mengenai cara sederhana mencegah serangan SQL Injection
kalau ada kesalahan dan kekurangan nya mohon berikan masukan nya ya ^_^

Video tutorial


sekian dan semoga bermanfaat...

Wasalamualaikum Wr.Wb...
Previous
Next Post »