Archivo de la categoría: eNYe Sec

Solucionario reto hacking enise

Como han quitado el reto no me acuerdo muy bien de algunas pruebas pero algunas soluciones serían:

Nivel 1-A

Había que saltarse la siguiente expresión regular: ^\-(?=.*d)(?=.*[a-z])(?=.*[A-Z]).{6,}

Una posible solución es: -o=o o=oo o=oO66

Para resolverlo yo cogí y lo dividí en 3 apartados (en una copia en local) y fui saltando uno a uno los filtros:

(?=.*d) -> se pasa con o=0

(?=.*[a-z]) -> se pasa con o=00

(?=.*[A-Z]).{6,} -> se pasa con o=oO66

Esta es una posible solución, pero hay muchísimas.

Nivel 1-B

Editando el fuente de la página vemos al final un comentario con un texto en base64: cDNwMXQwXzA=

Que en texto plano es: p3p1t0_0

Una web para convertir de base64 a ASCII es: http://home2.paulschou.net/tools/xlate/ aunque hay millones

Nivel 1-C

Yo la pasé con la siguiente inyección:

user: enise
pass: ‘ or ‘a’=’a

Nivel 2-A

Nos descargamos el ejecutable y con el PeID vemos que está empaquetado con UPX. Con el OllyDbg quitamos la protección de UPX usando el método de pushad / popad o cualquier otro método, ya que es una protección muy frágil y se puede saltar de muchas formas.

Una vez llegamos al OEP, buscamos en memoria la palabra INCORRECT y al lado está nuestra contraseña: Este3sTuP4$$!

Nivel 2-B

Este no lo pasé pero parece que habían dos carpetas ocultas: bin y log

Nivel 2-C

Yo la pasé con la siguiente inyección:

pass: ‘ or ‘a’=’a’#

Nivel 3-A

Yo la pasé con la siguiente inyección:

user: ‘ or 1=1 or ‘a’=’a
pass: xx

Nivel 3-B

Aquí había que programar. Si probamos todas las combinaciones por fuerza bruta no terminamos nunca así que acotamos aplicando ingeniería inversa, es decir:

^ es un XOR

<<< 8 desplaza 8 bits a la derecha y rellena con ceros a la izquierda

<<< 4 desplaza 4 bits a la derecha y rellena con ceros a la izquierda

Por tanto,

– nuestro valor final debe ser 436 (en hex = 1B4 y en binario = 110110100).

– al meter 4 bits (1 byte) a la derecha, como desconocemos el valor, tendríamos 16 combinaciones, de 0000 a 1111 en binario. Por tanto el resultado oscila entre 6976 y 6991.

– luego multiplicamos por 3 (siempre lo inverso que el javascript original) y por tant0 las combinaciones se disparan, ya que tenemos que multiplicar cada combinación anterior por 3.

– es decir, iria desde 6976*3 (20928) a 6991*3 (20973).

– después, al meter 8 bits (2 bytes) añadimos de 00 a FF, es decir, 256 combinaciones más.

– valor mínimo: 20928 = 51C0 (en hex) … por tanto 51C000 = 5357568 XOR 77886655 = 83211455.

– valor máximo: 20973 = 51ED (en hex) … por anto, 51EDFF = 5369343 XOR 77886655 = 83204416.

– el valor final está entre 83204416 y 83211455 = 7039 combinaciones posibles.

– dentro de estos valores probamos la contraseña si el resultado es 0.

El script  (en perl) que use es este:

#!/usr/bin/perl
use LWP::UserAgent;

my $p = 83204416;
my $res = 0;

while(1) {
 $res = $p ^ 77886655;
 $res = $res >> 8;
 $res = $res / 3;
 $res = $res >> 4;
 $res = $res ^ 436;
 enviar($p) if ($res eq 0);
 $p++;
}
sub enviar {
 my $dato = shift;
 my $cookie = "PHPSESSID=AQUI_MI_COOKIE";
 my $uri = "http://wargame.inteco.es/level3b.php";
 my $ua = LWP::UserAgent->new();

$ua->agent("Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008072820 Firefox/3.0.1");
 @header = ('User-Agent' => $useragent, 'Cookie' => $cookie,  'Connection' => 'keep-alive', 'Keep-Alive' => '300', Content =>  [ password => $dato ]);
 my $response = $ua->post($uri, @header);
}

Nivel 3-C

Este era un fichero Flash. Editando el fuente de la web vemos el fichero SWF. Lo descargamos y con una versión de pruebas de Shothink SWF lo abrimos y echamos un ojo al fuente.

Hay un user/pass para despistar pero al final tenemos un hash con nuestra clave. No pa recuerdo ahora mismo pero era algo así como palillos o alguna palabreja similar.

Reto de hacking Enise

Sólo ha durado 2 días y ha sido algo chapucero (dado que el primer día fallaban 4 de las 9 pruebas y, esto hizo que perdiéramos mucho tiempo tratando de inyectar en páginas que no funcionaban … y al tratarse de un blind, ni te enterabas) pero, al final gané en la Modalidad A. Lo malo es que no puedo optar al premio ya que se me pasó la época universitaria jejeje.

Estimado señor,

Nos ponemos en contacto con usted como potencial ganador del concurso
Wargame celebrado en ENISE. Para poder nombrarle como ganador del evento
necesitamos que nos envíe a la mayor brevedad su nombre completo y
teléfono móvil, además de la acreditación de la matrícula en el último año
de carrera o FP de grado superior. En el momento en el que lo recibamos,
nos pondremos en contacto con usted.

Un saludo,

He de decir que si no llegan a fallar los 4 retos, el justo ganador habría sido RoMaN (el cual tampoco habría tenido premio, jejeje. Y bueno, aunque corto, ha sido divertido.

Muchas gracias a los organizadores por este reto (y la próxima vez, a ver si probamos los retos antes xDDD). Enhorabuena al ganador (el que sí que cumple los requisitos)

Solucionario al reto RootedCON’2010

Ya que Roman ha publicado en su web (http://www.rs-labs.com) los solucionarios al reto RootedCON’2010, he subido a mi web las soluciones que le mandé yo. Las podeis ver aquí: http://pepelux.org/download.php?f=papers/rootedctf_pepelux_es.pdf

Entre más de 1.000 participantes lo hemos terminado 18. La verdad es que ha sido duro, pues fueron 7 retos, 3 de los cuales tenían su miga. Tras 4 días pegado al ordenador, ha sido una experiencia muy buena ya que lo he pasado genial, además de aprender muchas cosas que he tenido que ir estudiando/repasando sobre la marcha.

He intentado escribir el solucionario lo más detallado posible para que se pueda seguir sin problemas, anotanto tanto las soluciones como los ‘malos caminos’ que seguí y los tropezones que me di por el camino.

Agradecer a Roman, a Dreyer y a todos los colaboradores y patrocinadores el excelente trabajo, que no ha defraudado en absoluto. Cada una de las pruebas ha sido un verdadero reto y ninguna de ellas ha defraudado. Además, se han pegado una currada impresionante y el resultado ha sido excelente. Espero que se animen y el año que viene hagan más retos.

A diferencia de otros retos, los datos eran reales, es decir, no se trataba de una simulación de una base de datos sino que había que hackear la base de datos en sí, accediendo al information_schema y teniendo que aplicar conocimientos bastante altos de MySQL, unidos a la perspicacia de cada uno.

Espero que os guste el solucionario. Un saludo

Joomla Scan en perl

Tras lanzar la versión 2.1 para windows de JoomlaScan he reescrito el código en perl. Ya está disponible en mi web la versión 1.1, que hace exactamente lo mismo sólo que permite usarlo tanto en Linux como en Windows.

Ante versiones nuevas o modificaciones en la base de datos, podeis hacer un update y se actualiza sólo.

Para descargarlo … click aquí: JoomlaScan v1.1 en perl

Joomla Scan v1.2

Acabo de subir a la web un nuevo programa que he terminado (tengo varios a medias siempre :)). Se trata de JoomlaScan, y lo que hace básicamente es analizar remotamente una web (Joomla, claro!) y detectar la versión que está corriendo. Salvo un par o tres de versiones que no saca exactas, el resto te da con exactitud la versión y revisión que usa, incluidas las betas de la 1.6. Además de esto también saca un listado con los componentes que usa.

Para la detección de versión de Joomla me he basaco en un genial script en perl de OWASP, cuyo proyecto se abandonó en diciembre del 2008 y, por lo cual sólo era capaz de detectar hasta la versión 1.5.12.

El método usado consiste en comprobar una serie de ficheros que varían de una versión a otra, así como otros que contienen el ID de la última revisión. En resumen, ralizando muchas verificaciones en varios ficheros se llega a acortar el margen entre versiones hasta dar con la exacta.

Además de eso, me he pegado la gran currada de introducir todos los avisos que hay en securityfocus y que hacen referencia a Joomla, de manera que tras detectar la versión, muestra un listado con los posibles bugs que afectan a esa versión o a cualquiera de los componentes instalados.

El programa al arrancarse comprueba si hay nuevas versiones o actualizaciones de la base de datos, de manera que cada vez que suba un nuevo bug se actualizará sólo.

Podeis descargarlo aquí: JoomlaScan

Aviso: Este programa no es para hackear nada sino para hacer un autoanálisis de nuestras webs en Joomla y no me hago responsable si alguien le da un mal uso …

Squipy 1.2 disponible

Ya está disponible la primera versión de Squipy. Como ya comenté, Squipy es un sencillo proxy que permite filtrar y modificar los datos que se envían desde el navegador hacia un servidor web. El interfaz está en castellano y en inglés y su manejo es muy sencillo. Además incorpora algunas herramientas adicionales.

La aplicación dispone de dos modalidades de navegación: por un lado, cuando el filtro de captura está desactivado, hay 10 listener que trabajan de forma asíncrona y permiten navegar sin ningún problema. Una vez activamos la depuración, se queda en un único listener que trabaja de forma síncrona y nos permite depurar y modificar datos.

Características principales:

  • El programa permite capturar y modificar los datos enviados a una web.
  • Dispone de conversión automática de GET a POST y viceversa.
  • Tiene un histórico de páginas capturadas donde almacena toda la información.
  • Incorpora un Spider.
  • Permite decodificar un __VIEWSTATE de páginas asp y aspx.
  • Los datos capturados se pueden formatear mostrándose coloreados para una mejor lectura.
  • Permite exportar las capturas en XML y HTML.

Seguir leyendo Squipy 1.2 disponible

eNYe Spider v1.2

Tras un año sin tocar este programa, he subido una nueva actualización en la que se solucionan varios problemas internos. Básicamente problemas de navegabilidad en ciertas webs. Hice estos cambios porque en Squipy he incorporado también un Spider … bueno, he integrado este Spider 🙂

Y como llevaba tiempo haciendo arreglos cada vez que me topaba con alguna web especial o que provocaba algún error, pues los he agrupado todos en el nuevo release.

El motivo por el que subí de la 1.0 a la 1.2 es porque tras crear la 1.1 arreglé un error jejeje .. pero la 1.1 nunca vio la luz.

Squipy está a punto de parir

Aprovechando que es fin de año y todo el mundo hace promesas, yo me he propuesto escribir más a menudo en el blog. Se que no lo lee ni dios, salvo la gente que llega directamente al POST del TPlus a preguntar una y otra vez lo mismo (esto es un infierno!!!!) pero escribiré para leerme yo mismo 🙂

Bueno, estas Navidades, además de inflarme a turrón de chocolate, he estado programando una pequeña aplicación a la que llamé Squipy. Se trata de un proxy, no para navegar a través de él con varios equipos, sino para analziar el comportamento de algunas páginas y modificar los datos que se mandan.

Algo similar a lo que hace Tamper Data o Paros o muchos otros pero personalizado a mi gusto … si es que soy algo maniático con las cosas, lo se!

El Tamper Data está muy bien para hacer un cambio o dos pero cuando son muchos te vuelves loco ya que hay que modificar cada paquete.

El Paros está también muy bien pero no me permite poner cambios generales y hay que modificar también cada paquete muchas veces.

La idea de hacer este programa surgio por varias deficiencias que vi en el Paros y que, a pesar de que otros programas si que lo tenían, eran algo complicados para lo que realmente necesito. Yo principalmente lo eché en falta en algunos detalles:

  • La opción de poder modificar el User-Agent de forma indefinida para entrar en la web móvil de Tuenti y subir fotos (ya que tiene un filtro por User-Agent)
  • La opción de convertir de forma automática las peticiones POST a GET o a la inversa, para probar inyecciones SQL por POST realizando los envíos cómodamente mediante GET
  • Poder modificar tanto los datos que se mandan al servidor como los que se reciben hacia el navegador
  • No tener que contar los bytes que envío en un POST tras una modificación, para ajustar el tamaño del paquete
  • No tener un bombardeo de peticiones para filtrar cuando activo el análisis (como ocurre con el Tamper Data) y poder analizar sólo una determinada URL o dentro de una URL sólo ciertos ficheros …

Squipy

Puedes descargar el manual que espero ir ampliándolo si incluyo nuevas funcionalidades. Es muy breve pero trae varias capturas en las que explica cada opción del programa.

En cuanto termine de testearla la subiré a la web. Si alguien tiene alguna sugerencia que me lo diga.

Traducciones de mis textos

He buscado en Google el título de los paper que he escrito y veo que hay gente que los ha traducido a otros idiomas. Los pongo aquí por si le interesa a alguien …

Jugando con los sockets (port scanning):

Español (by Pepelux)

Inglés (by Pepelux)

Portugués (by Th1nk3r)

Chino (by eAnGeL)

Vulnerabilidades web que permiten acceder al sistema:

Español (by Pepelux)

Inglés (by Pepelux)

Coreano (by bOBaNa)