Senin, 15 Juli 2013

Patch SQL

BIASAKAN UNTUK MEMBACA !!

Sebelumnya mari kita liat pengertian mysql injection secara umum :
SQL injection adalah sebuah aksi hacking yang dilakukan di aplikasi client dengan cara memodifikasi perintah SQL yang ada di memori aplikasi client dan juga merupakan teknik mengeksploitasi web aplikasi yang didalamnya menggunakan database untuk penyimpanan data.
Para pemula biasanya lebih senang mengexploitasi mysql v.5 dari pada v.4 . mysql v.5 support terhadap information_schema yang memudahkan attacker untuk melancarkan serangan injeksi. Bahkan dengan beberapa sql scanner tools para lamer dan scriptkiddies dengan begitu mudahnya dapat melakukan serangan – serangan.

Contoh Serangan SQL ., missalkan saya ambil contoh SQL V.5

Code:
http://localhost/cobain/injector/index.php?id=-4+union+select+1,@@version,3,4,5--

[Image: 6_zpsa23ad91b.jpg]

Pada kesempatan kali ini saya hanya akan mencoba melakukan pencegahan dengan predefined atau PHP Superglobal . $_SERVER['REQUEST_URI'] yang menangkap nilai pada URL.

buat file php baru dengan nama antisqli.php lalu masukkan script berikut.

Code:
<?php
if (strlen($_SERVER['REQUEST_URI']) > 255 || strpos($_SERVER['REQUEST_URI'], "concat") || strpos($_SERVER['REQUEST_URI'], "union") || strpos($_SERVER['REQUEST_URI'], "base64")) {
echo "Maaf Bro... Apa tuh? Mau Nakal Yah :p";
@header("HTTP/1.1 414 Request-URI Too Long");
@header("Status: 414 Request-URI Too Long");
@header("Connection: Close");
@exit;
}
?>

Setelah itu kita melakukan include pada index.php di dalam folder injector tadi.

Code:
<?php
    include 'library/config.php';
    include 'library/opendb.php';
    include 'antisqli.php';
    ?>

Di bagian paling atas tinggal tambahkan aja include ‘antisqli.php’;. Setelah itu buka link yang tadi kita sisipkan perintah SQL dan apa yang terjadi?
[Image: 7.jpg]

Keren kan? Oke kita lihat lagi antisqli.php – nya…

Code:
if (strlen($_SERVER['REQUEST_URI']) > 255 || strpos($_SERVER['REQUEST_URI'], "concat") || strpos($_SERVER['REQUEST_URI'], "union") || strpos($_SERVER['REQUEST_URI'], "base64"))

Jika variabel di URL lebih dari 255 atau (tanda || dibaca atau) ada kata “concat“, “union” dan “base64“.

Code:
echo "Maaf Bro... Apa tuh? Mau Nakal Yah ";
@header("HTTP/1.1 414 Request-URI Too Long");
@header("Status: 414 Request-URI Too Long");
@header("Connection: Close");
@exit;

Maka akan muncul pesan “Maaf Bro… Apa tuh? Mau Nakal Yah ?
kemudian dilanjutkan dibawahnya.

Nah gak hanya cuman union / concat kan jika kita melakukan SQL Injection. Ada select, @@version dan lain – lain. Kan kalian yang lebih jago kalo soal beginian., Nantinya kalian tinggal tambahkan aja menjadi.

Code:
strpos($_SERVER['REQUEST_URI'], "concat")

Jangan lupa tanda || (atau) penggunaan stripos (case insensitive).

Code:
if (strlen($_SERVER['REQUEST_URI']) > 255 || stripos($_SERVER['REQUEST_URI'], "concat") || stripos($_SERVER['REQUEST_URI'], "union") || stripos($_SERVER['REQUEST_URI'], "base64")) {

Atau menggunakan preg_match:
Code:
<?php
$berbahaya = array("union", "concat", "base64");

$gabungsemua = implode("|",$berbahaya);
if((strlen($_SERVER['REQUEST_URI']) > 255) || (preg_match("/".$gabungsemua."/i",$_SERVER['REQUEST_URI']))){
echo "Maaf Bro... Apa tuh? Mau Nakal Yah";
@header("HTTP/1.1 414 Request-URI Too Long");
@header("Status: 414 Request-URI Too Long");
@header("Connection: Close");
@exit;
?>

Sekarang union,UNIon,unIoN dan variasi – variasi yang lain pasti gak akan berhasil…

0 komentar:

Posting Komentar