Antiguo 02-abr-2006, 21:32   #1 (permalink)
Usuario activo
 
Avatar de imported_pesst
 
Fecha de Ingreso: marzo-2006
Ubicación: España
Mensajes: 344
imported_pesst sin puntos positivos o negativos
Enviar un mensaje por MSN a imported_pesst
Exclamation Avanzado: auditar agujeros de seguridad de servidores

¿Cómo descubrir vulnerabilidades de un servidor con un script tipo "fuzzer"?

No publicar fuera

[break= 1.-Introducción]
1.-Introducción

Los "Fuzzers" son herramientas que nos permiten auditar código y probar vulnerabilidades generales en sistemas informáticos.

Escribiremos varias funciones para un script PHPque nos poermitirá obtener los parámetros GET de cierta dirección (URL) para disparar códigos de error y asÃ# poder descubrir vulnerabilidades potenciales.

Es entonces cuando exploraremos las posibilidades de ampliar la funcionalidad para hacernos un más amplio instrumento de revisión de vulnerabilidades del servidor.

Código:
// malicious web requests
$vulnchars[0] = array("%00","%2527%252esasdf","%u0000", "%u5c00%u2700","/","../","./..././","/%2e/", "%2e","%5C","%s", "'","'''''","\"", "%%%%%%","!!!!!!!!!!!!!!!!!!","#", "%5C27","%%5C%56" , "\'", "\\",';',";a", "|", "\?>", "%a0");

// malicious sql requests
$vulnchars[1] = array(" OR 1=1", "' OR '!'='!");

// malicious xss requests  
$vulnchars[2] = array("javascript:alert(String.fromCharCode(65,66,67))", "<script>alert('cookies, yo: ' + document.cookie);</script>");
[break= 2.-Funcionamiento]
2.-Funcionamiento

EL fuzzer en cuestión trabaja tomando una URL y manipulando cada variable GET para hacer todas las posibles combinaciones de solicitudes con un array de caracteres maliciosos diseñados especÃ#ficamente para generar errores.

Consideremos los siguientes arrays, éstos contienen una amplia selección de solicitudes comunes que a menudo generan errores y que podrÃ#an abrir scripts asÃ# como agujeros de seguridad.

Entonces harÃ#amos todas las posibles combinaciones de solicitudes al servidor para analizar su salida. Una vez obtenida la salida, asignamos para los códigos de salida (de error) un conjunto de URL marcadas, para más tarde ser revisadas para auditar el servidor en sÃ#. Pondremos lso arrays que contienen una lista de errores comunes como lo son para: php, web y xss.

Código:
$flags[0] = array("<b>warning</b>:", "warning:", "<b>fatal error</b>", "failed to open stream:", "internal server error", "there was an error when processing this directive.", "http/1.1 400", "http/1.1 403", "http/1.1 500", "gateway error", "command not found", "file not found");
$flags[1] = array("[obdc", "mysql error", "you have an error in your sql syntax", "odbc drivers error", "[microsoft sql", );
$flags[2] = array("javascript:alert(string.fromcharcode(65,66,67))", "<script>alert('cookies, yo: ' + document.cookie);</script>");
Ahora que sabemos para qué tipo de solicitudes podemos obtener salidas de error, entonces podremos escribir código PHP que consultará al servidor HTTP cada una de nuestras solicitudes. En este ejemplo, tan sólo haremos solicitudes del tipo GET, pero podrÃ#a ser modificado para otro tipo del estilo.

Código:
function MakeRequest($url, $method="GET") {
  $url = str_replace(" ", "%20", $url);
  if ($method=="GET") {
    $host = substr($url, strpos($url, "://") + 3);$host=substr($host, 0,strpos($host, "/"));
  $request = substr($url, strpos($host, "/"));

  $fp = @fsockopen($host, 80, $errno, $errstr, 10);
  if (!$fp) {
     echo "    ERROR . $url $errstr ($errno)$newline";
  } else {
     $out  = "GET $request HTTP/1.1\r\n";
     $out .= "Host: $host\r\n";
     $out .= "Connection: Close\r\n\r\n";
     fwrite($fp, $out);
     while (!feof($fp)) {
         $buf.= fgets($fp);
     }
     fclose($fp);
    }
  } 
  return $buf;
}
Ahora podemos tomar los resultados del servidor HTTP para las solucitudes maliciosas en cuestión, necesitamos ejecutarlo en una función para asÃ# poder escanear los códigos de error listados anteriormente. La siguiente función devuelve true si "$result" obtiene algún resultado del array "$flags".

Código:
function TestResult ($result) {
  global $flags;
  $result = strtolower($result);
  for ($i=0;$i < count($flags);$i++) {
    for ($o=0;$o < count($flags);$o++) {
      if (!(strpos($result, $flags[$i][$o]) === false)) {
        return 1;
      }
    }
  }
  return 0;
}
[break= 3.-El script PHP completo]
3.-El script PHP completo

Ahora que tenemos todas las piezas que necesitamos, es el momento de escribir código para tenerlo todo junto. El siguiente código usa el array "$lists" para contener todas las URLs a probar. En primer lugar analiza la URL para cada uno de los parámetros GET, y empieza a iterar probando con todas las posibles combinaciones de URL. Pasa por cada variable GET e intenta con cada uno de los caracteres malicioso mientras está usando el valor por defecto de todos los demás parámetros GET. EL número total de solicitudas podrÃ#a ser alrededor de (N elevado a N) para cada URL que se encuentra en $list donde N es el número de parámetros GET para cada URL. Es estonces cuando "MakesRequest" ("hace_solicitud") para cada una de las URL y manda los resultados a "TestResult" ("resultado_del_test"), anunciando (si se diera el caso) para cada resultado con el código de error de "$flag".

Código:
for ($inc=0;$inc<count($list);$inc++) {
	  if ($localonly == true AND (substr($list[$inc], 0, 17) != "http://localhost/" AND substr($list[$inc], 0, 17) != "http://127.0.0.1/")) die("This script can only be tested against localhost."); 
	  // SetUpParameters parses and stores each GET paramater from a URL into the array $get and $getvalues
	  $url = SetUpParameters($list[$inc]);
	  if (trim($url) != "") { 
	  echo "$newline$url$newline";
      // go through each kind of vulnerability we are testing
	  for ($vulni=0;$vulni<count($vulnchars);$vulni++) {
		switch ($vulni) {
		  case 0: echo "  * General web vulnerabilities$newline"; break;
		  case 1: echo "  * SQL vulnerabilities$newline"; break;
		  case 2: echo "  * XSS vulnerabilities$newline"; break;
		}
		// go through each GET parameter in the URL
		for ($o=0;$o < count($get);$o++) {
		  for ($i=0;$i<count($vulnchars[$vulni]);$i++) {
			// generate url from list of vulnerable characters
			$whichparam = $get[$o];
			$testing = $url . "?";
			// put together the default values for all the other parameters in the script
			for ($z=0;$z<count($get);$z++) {
			  if ($get[$z] != $whichparam) $testing.="&".$get[$z]."=".$getvalue[$z];
			}
			$testing .= "&" . $whichparam . "=" . $vulnchars[$vulni][$i];
		  
			$fun = MakeRequest($testing);
			if ($parseforlinks == true) ParseForLinks($fun);
			$error = TestResult($fun);
			if ($error != 0) 
			  echo "    FLAG! .. $testing$newline";
	  		if ($error == 0 and $verbose == true)
		  	  echo "    OK    .. $testing $newline";
		    }
		  }
	    }
	  }
}
-------------------------------------------------------------------------------------------------

Traducido a sangre por Pesst, para webhostingforo.com :o
Archivos Adjuntos
Tipo de Archivo: zip agujeros servers.zip (53,8 KB (Kilobytes), 7 visitas)
imported_pesst está desconectado  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Comparte en Facebook!Spurl este mensaje!Reddit!Menea este mensaje!Wong este mensaje!Agrega a Bitacoras!Agrega a MySpace!Agrega a Twitter!Agrega a FriendFeed!Agrega a LinkedIn!Agrega a Ping.fm!Agrega a Wikio!Agrega a Netvibes!
Antiguo 02-abr-2006, 21:47   #2 (permalink)
Usuario activo
 
Fecha de Ingreso: marzo-2006
Mensajes: 10
Superjose sin puntos positivos o negativos
Predeterminado

Hay muchos traductores online, lo del inglés no pasa na... =P
Superjose está desconectado  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Comparte en Facebook!Spurl este mensaje!Reddit!Menea este mensaje!Wong este mensaje!Agrega a Bitacoras!Agrega a MySpace!Agrega a Twitter!Agrega a FriendFeed!Agrega a LinkedIn!Agrega a Ping.fm!Agrega a Wikio!Agrega a Netvibes!
Antiguo 02-abr-2006, 23:34   #3 (permalink)
Usuario activo
 
Avatar de iRRa
 
Fecha de Ingreso: noviembre-2005
Ubicación: Cadiz, Andalucía (España)
Mensajes: 409
iRRa sin puntos positivos o negativos
Enviar un mensaje por MSN a iRRa
Predeterminado

PodrÃ#as currartelo, traducirlo y subirlo aquÃ# como tutorial?
__________________
.:: Todo el Rock de la provincia de Cádiz ::.

iRRa está desconectado  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Comparte en Facebook!Spurl este mensaje!Reddit!Menea este mensaje!Wong este mensaje!Agrega a Bitacoras!Agrega a MySpace!Agrega a Twitter!Agrega a FriendFeed!Agrega a LinkedIn!Agrega a Ping.fm!Agrega a Wikio!Agrega a Netvibes!
Antiguo 03-abr-2006, 10:51   #4 (permalink)
Usuario activo
 
Avatar de imported_pesst
 
Fecha de Ingreso: marzo-2006
Ubicación: España
Mensajes: 344
imported_pesst sin puntos positivos o negativos
Enviar un mensaje por MSN a imported_pesst
Predeterminado

Seguro que no soy el único q sabe traducirlo al inglés... si veo q se interesa la gente lo haré, ¿xq no lo haces tú? =P

Salu2.
imported_pesst está desconectado  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Comparte en Facebook!Spurl este mensaje!Reddit!Menea este mensaje!Wong este mensaje!Agrega a Bitacoras!Agrega a MySpace!Agrega a Twitter!Agrega a FriendFeed!Agrega a LinkedIn!Agrega a Ping.fm!Agrega a Wikio!Agrega a Netvibes!
Antiguo 03-abr-2006, 11:41   #5 (permalink)
Usuario activo
 
Avatar de iRRa
 
Fecha de Ingreso: noviembre-2005
Ubicación: Cadiz, Andalucía (España)
Mensajes: 409
iRRa sin puntos positivos o negativos
Enviar un mensaje por MSN a iRRa
Predeterminado

Porque ya que colaboras con el foro (un foro de habla hispana) con un tutorial, que menos que lo saques del zip de donde te lo han pasado y te lo curres poniendolo en español.

Un saludo
__________________
.:: Todo el Rock de la provincia de Cádiz ::.

iRRa está desconectado  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Comparte en Facebook!Spurl este mensaje!Reddit!Menea este mensaje!Wong este mensaje!Agrega a Bitacoras!Agrega a MySpace!Agrega a Twitter!Agrega a FriendFeed!Agrega a LinkedIn!Agrega a Ping.fm!Agrega a Wikio!Agrega a Netvibes!
Antiguo 03-abr-2006, 12:01   #6 (permalink)
Usuario activo
 
Avatar de imported_pesst
 
Fecha de Ingreso: marzo-2006
Ubicación: España
Mensajes: 344
imported_pesst sin puntos positivos o negativos
Enviar un mensaje por MSN a imported_pesst
Predeterminado

Ya me he dejado los riñones en poner el tutorial de RAID y de IPv6, te lo aseguro, no me pongas a traducir, pillate un traductor online y lo ves tú mismo.

Salu2.
imported_pesst está desconectado  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Comparte en Facebook!Spurl este mensaje!Reddit!Menea este mensaje!Wong este mensaje!Agrega a Bitacoras!Agrega a MySpace!Agrega a Twitter!Agrega a FriendFeed!Agrega a LinkedIn!Agrega a Ping.fm!Agrega a Wikio!Agrega a Netvibes!
Antiguo 03-abr-2006, 12:10   #7 (permalink)
Usuario activo
 
Avatar de iRRa
 
Fecha de Ingreso: noviembre-2005
Ubicación: Cadiz, Andalucía (España)
Mensajes: 409
iRRa sin puntos positivos o negativos
Enviar un mensaje por MSN a iRRa
Predeterminado

has leido las normas de usuarios? http://www.webhostingforo.com/showth...t=1332&garpg=3
El punto numero 11, por eso te lo dije, podrÃ#as pillar el traductor online y colgarlo asi en condiciones Pero bueno az lo que tu veas... pero para el proximo ya lo sabes. Es muy facil cojer información y postearlo asÃ#
__________________
.:: Todo el Rock de la provincia de Cádiz ::.

iRRa está desconectado  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Comparte en Facebook!Spurl este mensaje!Reddit!Menea este mensaje!Wong este mensaje!Agrega a Bitacoras!Agrega a MySpace!Agrega a Twitter!Agrega a FriendFeed!Agrega a LinkedIn!Agrega a Ping.fm!Agrega a Wikio!Agrega a Netvibes!
Antiguo 03-abr-2006, 12:12   #8 (permalink)
Usuario activo
 
Avatar de imported_pesst
 
Fecha de Ingreso: marzo-2006
Ubicación: España
Mensajes: 344
imported_pesst sin puntos positivos o negativos
Enviar un mensaje por MSN a imported_pesst
Predeterminado

Ok, me dejaré los riñones en traducirlo, lo editaré.

PD: kién me mandará meterme en estos fregaos? xS

salu2.
imported_pesst está desconectado  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Comparte en Facebook!Spurl este mensaje!Reddit!Menea este mensaje!Wong este mensaje!Agrega a Bitacoras!Agrega a MySpace!Agrega a Twitter!Agrega a FriendFeed!Agrega a LinkedIn!Agrega a Ping.fm!Agrega a Wikio!Agrega a Netvibes!
Antiguo 03-abr-2006, 12:17   #9 (permalink)
Usuario activo
 
Avatar de iRRa
 
Fecha de Ingreso: noviembre-2005
Ubicación: Cadiz, Andalucía (España)
Mensajes: 409
iRRa sin puntos positivos o negativos
Enviar un mensaje por MSN a iRRa
Predeterminado

Muchas gracias Te lo agradecerán muchos.

Saludos
__________________
.:: Todo el Rock de la provincia de Cádiz ::.

iRRa está desconectado  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Comparte en Facebook!Spurl este mensaje!Reddit!Menea este mensaje!Wong este mensaje!Agrega a Bitacoras!Agrega a MySpace!Agrega a Twitter!Agrega a FriendFeed!Agrega a LinkedIn!Agrega a Ping.fm!Agrega a Wikio!Agrega a Netvibes!
Tema Cerrado

Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los Códigos BB están Activado
Las Caritas están Activado
[IMG] está Activado
El Código HTML está Desactivado
Trackbacks are Activado
Pingbacks are Activado
Refbacks are Activado


Temas Similares
Tema Autor Foro Respuestas Último mensaje
Actualización de Windows corrige 21 errores y agujeros de seguridad Feeder Anuncios y noticias publicitarias 0 15-jun-2006 01:00
Mozilla, perforado por agujeros de seguridad Feeder Anuncios y noticias publicitarias 0 19-abr-2006 22:00
Detectan nuevos agujeros de seguridad en Internet Explorer Feeder Anuncios y noticias publicitarias 1 17-abr-2006 12:34
GuÃ#a de Seguridad y Optimización de servidores web 800-HELP.com Servidores Dedicados y VPS 1 15-ene-2006 18:17
Consideraciones de seguridad en Servidores Web 800-HELP.com Asuntos Técnicos, Seguridad y Configuración 0 22-dic-2005 21:43

Alojamiento web, Hosting Reseller, Servidores Dedicados - All in Hosting


Rioserver
Web hosting y dominios
Planes de hosting desde 2.90 USD
Soporte 24/7

www.rioserver.com

Infranetworking.com
Hosting PHP-MySQL
desde $3,5 dólares al mes!
Servidores Dedicados Hosting Reseller
www.infranetworking.com

LomaHost Web Hosting
Web Hosting y registro de dominios
en Argentina y Latinoamérica
Hosting cPanel + Fantastico en Español

www.lomahost.com

Dominios gratis
Nuevos dominios gratuitos .ok.pe
Con Redirección o DNS
¡tú escoges!

www.ok.pe



La franja horaria es GMT +1. Ahora son las 05:10.

     ComunidadHosting  

La comunidad dedicada al web hosting más grande en nuestro idioma.

Para anunciar en ComunidadHosting, o para información general, por favor utiliza el formulario de contacto.







Abserhosting, alojamiento web
Servidores dedicados, virtuales
y de juegos de ultima generación.
Dell alojados en España

www.abserhosting.com



Hosting Reseller En Marca Blanca
Tienda Automatizada. Administrado.
ILIMITADOS Dominios, Soporte 24/7
Precio Especial Registro de Dominios

www.singularweb.com



My Boricua Hosting LLC
Hosting, reseller, dominios
planes desde $0.95 mensual
My Boricua Hosting

www.myboricuahosting.com



Alojamiento dedicado administrado
Servidores virtuales y dedicados
totalmente administrados
a precios de servicio no manejado.

www.masquewebs.com




Desarrollado por: vBulletin® Versión 3.8.4
Derechos de Autor ©2000 - 2010, Jelsoft Enterprises Ltd.
Traducido por mcloud de vBhispano.com

Search Engine Friendly URLs by vBSEO 3.3.2