Web Hacking dengan XSS Session Fixation

session fixationAwesome Tech – Sebagai seorang web programmer ada banyak hal-hal kecil yang harus diperhatikan apalagi soal masalah keamanan, baik itu sekedar XSS maupun SQLi. Pada artikel kali ini saya akan membahas tentang penyerangan XSS menggunakan tehnik Session Fixation.

Sebenarnya apasih Session Fixation ?? menurut pengertian yang banyak beredar di Internet 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).

Lalu resiko yang ditimbulkan oleh serangan ini 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.

Agar lebih paham dam mengerti tentang serangan ini langsung saja kita pratekan, pertama siapkan dulu alat-alatnya:

  1. Install dulu webserver Apache+PHP atau XAMPP
  2. Siapkan browser Firefox dan Chrome atau browser lain juga boleh Firefox kita gunakan sebagai browser untuk attacker, dan Chrome untuk admin
  3. Buat file tesxss.php (nama file bebas asal *.php) pada folder Htdocs webserver lalu buka file dengan notepad dan copy paste code PHP dibawah ini :
<?php
session_start();

//save comment
if(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'] == 'master') && ($_POST['email'] == 'cyber666@wordpress.com')) {
            $_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 '

'.$comment->comment.'

';
}

?>

Jangan lupa untuk menjalankan script tersebut dengan cara buka Firefox dan klik localhost/tesxss.php . Kalau sudah lancar sekarang kita lanjut kescript untuk attackernya. Sebagai seorang attacker tentu kita akan mencoba mencari celah-celah yang ada pada web target, tentu kita tes xss pada komentar. pada contoh tsb ada xss.

<script>document.cookie="PHPSESSID=paksa-admin-pake-ini-session";</script>

masukan kode diatas ke kolom komentar.
itu artinya set cookies PHPSESSID, itu merupakan default session PHP. pada cookies hijacking kita mengambil cookies tersebut namun pada fixation kita men-set cookies tersebut. sehingga semua pengunjung web memiliki cookies yang sama.
Jadi jika ada user lain memiliki akun premium/gold kita akan mendapatkannya juga.
Sekarang coba buka crhome dan login username: cyber666@wordpress.com dan password: master Setelah berhasil login sekarang coba refresh halaman pada Firefox dan perhatikan apa yang terjadi. Anda juga akan ikut login sebagai admin, itu lah yang disebut dengan Session FIxation

Ada beberapa cara untuk mencegah serangan ini :

  1. Selalu regenerate session jika digunakan pada browser/ip yang berbeda.
  2. Jangan biarkan ada celah XSS atau Purified setiap content yang akan ditampilkan pada halaman depan.

Oke demikian artikel dari saya kali ini, mohon maaf jika ada salah-salah kata and have a nice day

sumber artikel : http://devilzc0de.org/forum/thread-23346.html

sumber gambar : google

Leave a comment