Sebagai seorang programmer seharusnya kita tidak boleh mengabaikan
sekecil apapun celah keamanan baik itu xss maupun yang lainnya. Pada
sharing kali ini saya akan bahas masalah Session Fixation. apa itu
session fixation? bagaimana cara pencegahannya.
Session Fixation merupakan metode penyerangan dengan cara memaksa target
menggunakan session yang kita ingini, faktor resiko yang ditimbulkan
akan lebih bahaya dari pada Session Hijacking (mencuri session).
Seperti apa resiko session fixation? logikanya sederhana sekali, karena
session kita yang dipakai target, jadi apa yang terjadi pada target akan
terjadi pada kita. Misal target melakukan login sebagai admin, maka
kita pun ikut login menjadi admin. Resiko lain yang ditimbulkan yaitu
SEMUA orang yang mengakses web target akan menjadi admin juga. wwkwkkwkw
Untuk lebih memahaminya mari kita praktekan, sediakan Apache+PHP nya
(XAMPP juga boleh), dan dua buah browser (firefox, opera, chrome juga
boleh). Firefox kita gunakan sebagai browser untuk attacker, dan
chrome/opera untuk admin.
Simpan kode dibawah ini kedalam servernya:
"
<?php
/**
* @author JasmanXcrew
* @copyright ExploreCrew 2015
* @author Www.ExploreCrew.Org
*/
session_start();
//save commentif(isset($_POST['comment'])) {
file_put_contents(time().'.json',json_encode($_POST));
}
if(@$_SESSION['admin'] == true) {
echo 'Welcome admin';
} else {
if(isset($_POST['login'])) {
if(($_POST['password'] == 'xcrew') && ($_POST['email'] == 'blueboyz@explorecrew.org')) {
$_SESSION['admin'] = true;
}
}
echo '<form method="post" action="">';
echo '<fieldset>';
echo '<legend>Form Login</legend>';
echo '<div><label>Username</label><input type="text" name="email" /></div>';
echo '<div><label>Password</label><input type="password" name="password" /></div>';
echo '<input type="submit" name="login" />';
echo '</fieldset>';
echo '</form>';
}
echo '<form method="post" action="">';
echo '<fieldset>';
echo '<legend>Comment</legend>';
echo '<div><label>Name</label><input type="text" name="name" /></div>';
echo '<div><label>Comment</label><textarea name="comment"></textarea></div>';
echo '<input type="submit" name="comment" />';
echo '</fieldset>';
echo '</form>';
foreach(glob("*.json") as $filename) {
$comment = json_decode(file_get_contents($filename));
echo '<hr/>';
echo '<h4>'.$comment->name.'</h4>';
echo '<p>'.$comment->comment.'</p>';
}
?> "
Sekarang kita bertindak sebagai attacker, sebagai seorang attacker tentu kita akan mencoba mencari celah2 yang ada pada web target, tentu kita tes xss pada komentar. pada contoh tsb ada xss.
perhatikan kode berikut ini:
" <script>document.cookie="PHPSESSID=paksa-admin-pake-ini-session";</script> "
Text Di atas Kirimkan pada komentar
Jadi jika ada user lain memiliki akun premium/gold kita akan mendapatkannya juga.
Sekarang kita coba login pake browser opera/chrome..., ok,, setelah itu coba refresh halaman firefox??? apa yang terjadi? kenapa bisa terjadi?? itu lah yang disebut dengan Session FIxation..
Pencegahannya jangan biarkan ada XSS dan selalu regenerate session jika digunakan pada browser/ip yang berbeda.
1 comments:
Post a Comment