Patching Vulnerable Website part 1 (Patching Sqli)

Ok all kembali lagi bersama saya, ngak terasa neh udah lama banget neh ngak ngeupdate blog karena sibuk ngerjain laporan pkl, huft😦 Kok ane malah curhat pula ya, ok back to topic pada tutorial kali ini saya akan membahas cara patching sql injection. Untuk melakukan patching bug sql injection kita mesti berkenalan dulu sama si sql injection.

Sql Injection adalah salah satu teknik penyerangan ke sebuah web dengan cara memasukkan perintah sql ke url target sehingga attacker bisa memperoleh informasi penting dari website tersebut. Seperti nama user, password, email, dan masih banyak lagi informasi yg bisa didapatkan tergantung kreativitas attacker😉 Untuk informasi lebih lanjut tentang sql injection silahkan di cari ke forum – forum hacking seperti xcode, devilzc0de, ycl dan untuk exploitnya sendiri silahkan liat di exploit-db, inj3ct0r dll.

Ane rasa basa – basinya dah cukup, saatnya beraksi. Sekarang saatnya belajar patching, kita akan menggunakan file latihan dari ebook php ilmuwebsite. Untuk file latihannya silahkan di download disini kalau mau download ebooknya disini. Ekstrak filenya ke direktori C:\xampp\htdocs, kalau udah diekstrak export file database.sql kemudian edit file config.php, sesuaikan dengan pengaturan kamu sendiri. Nah sekarang persiapannya udah selesai, coba buka webnya melalui url http://localhost/vid.tutor/ neh screenshotnya :

Nah bagian vulnerablenya ada di http://localhost/vid.tutor/view.php?postid=1, untuk mengecek ada tidaknya bug sqli pada sebuah website caranya cukup menambahkan single quote(‘) pada akhir url sekarang kita coba tambahkan sehingga urlnya menjadi http://localhost/vid.tutor/view.php?postid=1%27 tuh erronya keluar

Sekarang ane coba scan bug tadi dengan havij, dan ternyata hasilnya menyatakan website ini positif vuln terhadap sqli, jiakaka kayak ada yg hamil aja pake kata positif segala😀

Seperti yang kita ketahui bugnya ada di http://localhost/vid.tutor/view.php?postid=1, lebih tepatnya yg menyebabkan ini semua terjadi adalah file view.php dan string postid, sekarang kita coba buka file ini dengan text editor, bisa notepad, wordpad, atau kalau ane sih sukanya pake notepad++ just info😉 hehehehe. Ini dia sebagian isi dari filenya :

<?php
$artikel = "select * from tbl_artikel where id_artikel = $_GET[postid]";
$artikel_query = mysql_query($artikel);
while ($post = mysql_fetch_array($artikel_query))
{
$id = $post['id_artikel'];
$tanggalpublish = $post['tanggal_publish'];
$penulis = $post['penulis'];
$judulberita = $post['judul_berita'];
$isiberita = nl2br($post['isi_berita']);
$status = $post['status'];
?>

Bugnya ada di script bagian ini :

$artikel = "select * from tbl_artikel where id_artikel = $_GET[postid]";

tidak adanya filter di $_GET[postid] menyebabkan web ini vulnerable. Oke script penyebab ini semua telah kita temukan, sekarang saatnya patching. Tambahkan script ini diatas script vulnerable diatas :

<?php
//filter start here
$postid= $_GET['postid'];
$ip = GETENV("REMOTE_ADDR");

if ($postid < 0){
echo "Ayo mau ngapain ??? <br> Ip ente $ip, udah di catet loh !!!<br><br><br>";
exit;
}

if (!preg_match("/^[0-9]+$/", $postid)) {
echo "Ayo mau ngapain ??? <br> Ip ente $ip, udah di catet loh !!!<br><br><br>";
exit;
}

if (strlen($postid)>3){
echo "Ayo mau ngapain ??? <br> Ip ente $ip, udah di catet loh !!!<br><br><br>";
exit;
}
//filter end here
?>

Lalu ganti script ini $artikel = “select * from tbl_artikel where id_artikel = $_GET[postid]”; menjadi $artikel = “select * from tbl_artikel where id_artikel = $postid”; Untuk script lengkapnya sudah saya masukkan di dalam file latihan ini dengan nama patched.php, sekarang coba buka lagi page vulnerable dan tambahkan single quote(‘) dan tarra proses patching telah berhasil😉

Berikut ini adalah penjelasan dari script patching diatas :

script ini menyebabkan tidak boleh adanya input minus (-) di url

if ($postid < 0){
echo "Ayo mau ngapain ??? <br> Ip ente $ip, udah di catet loh !!!<br><br><br>";
exit;
}

script ini menyebabkan hanya input angka saja yang akan diproses

if (!preg_match("/^[0-9]+$/", $postid)) {
echo "Ayo mau ngapain ??? <br> Ip ente $ip, udah di catet loh !!!<br><br><br>";
exit;
}

dan yang terakhir, script ini hanya membatasi input angka sampai 3 saja

if (strlen($postid)>3){
echo "Ayo mau ngapain ??? <br> Ip ente $ip, udah di catet loh !!!<br><br><br>";
exit;
}

Berikut ini adalah proses patching yg sangat simple yaitu dengan menggunakan fungsi absolute integer, dimana script ini hanya akan mengolah input yg berupa angka saja. tambahkan script ini diatas script yg vulnerable :

<?php
//filter start here
$postid = abs((int) $_GET['postid']);
//filter end here
?>

Lalu ganti script ini $artikel = “select * from tbl_artikel where id_artikel = $_GET[postid]”; menjadi $artikel = “select * from tbl_artikel where id_artikel = $postid”; Untuk script lengkapnya sudah saya masukkan di dalam file latihan ini dengan nama patched2.php

Ok sekianlah postingan kali ini, di postingan saya selanjutnya saya akan membahas patching website yg memiliki vulnerable di bagian session. Last word good bye all😀

 

3 comments on “Patching Vulnerable Website part 1 (Patching Sqli)

  1. Pingback: Patching Vulnerable Site part 2 (Patching Session) « My Life is My Freedom

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s