Jumat, 05 Mei 2017

Patching Vulnerable Website part 1 (Patching Sqli)


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 xcodedevilzc0deycl dan untuk exploitnya sendiri silahkan liat di exploit-dbinj3ct0r 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


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 :
$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 :
1
$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 :
//filter start here
$postid= $_GET['postid'];
$ip = GETENV("REMOTE_ADDR");
 
if ($postid < 0){
echo "Ayo mau ngapain ???
Ip ente $ip, udah di catet loh !!!


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


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


"
;
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 ???
Ip ente $ip, udah di catet loh !!!


"
;
exit;
}

script ini menyebabkan hanya input angka saja yang akan diproses

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


"
;
exit;
}


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

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


"
;
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 :

//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

Author:EXI2T CYBER TEAM :) @KATENBAD





0 komentar:

Posting Komentar

 
EXI2T CYBER TEAM © 2011 Templates | uzanc