Selasa, 06 Desember 2011

Cara Lain Cegah SQL Injection

SQL Injection gak habis – habis. Setiap hari ada aja situs yang jadi korban. Entah emang karena adminnya gak ngerti atau apa saya gak tau. Padahal tutorial untuk bagaimana melakukan dan mencegahnya dah banyak banget beredar di internet.

Emang agak susah sih apalagi kalo yang model Blind SQL Injection dan beberapa variasi yang banyak banget. Sedangkan kita tahu, beberapa CMS terkenal pun sering jadi korban.

Sebagai contoh saya pengguna Wordpress. Aman gak Wordpress itu? Ya menurut saya sih oke – oke aja cuman bagaimana dengan pluginnya? Facebook pun banyak kasusnya yang ternyata kelemahannya berada pada Aplikasi – aplikasinya, mungkin game atau apapun itu.

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

Penasaran? Kita praktek aja. Ehmm, karena saya males buat contoh web yang vulnerable kita akan mencoba contoh script yang di buat oleh Om EVA-00 (kemana aja lo Bro?) yang juga sekalian dia menuliskan tutorial bagaimana melakukan Dasar SQL Injection.

[Image: 1.jpg]

[Image: downloand22.gif]

Setelah download, buka folder injector lalu ekstrak folder xyb_injector.sql.gz.

Buka phpMyAdmin dan buat database "inject" dan import database yang tadi telah kita ekstrak.

[Image: 2.jpg]

[Image: 3.jpg]

Dan hasilnya kayak gini nanti…

[Image: 4.jpg]

Kembali ke folder injector, buka folder library dan edit file config.php. Masukkan username, password, host dari phpmyadmin dan nama database di dalamnya…

Code:

Selesai dan jalankan contoh webnya…

[Image: 5.jpg]

Sampai sini kalian bebas belajar dah bagaimana dasar-dasar SQL Injection dan tutorialnya ada di dalam

ebook

Kita hanya stop sampai disini aja…

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

[Image: 6.jpg]

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

Code:
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:

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 :P";
@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). Oke sekian dulu tutorial dari saya, semoga berguna dan mohon maaf jika tutorial ini tergolong newbie banget dan sederhana. Ingat hal besar dimulai dari yang sederhana dulu. Ketemu lagi di tutorial berikutnya…



souce code

0 komentar:

Posting Komentar

Featured

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Best WordPress Web Hosting