Archivo

Archivo para la Categoría "herramientas"

Un 10 para OWASP ZAP (apología del software libre)

12/05/2012 3 comentarios

Quería dedicar una entrada a elogiar la estupenda respuesta del equipo de desarrollo de OWASP ZAP, y que sirva de ejemplo de cómo el software libre no supone un handicap para las empresas. Si bien yo recomiendo siempre que, si una empresa utiliza una herramienta de software libre como pieza clave de su trabajo diario, se involucre en el desarrollo o mantenimiento de la misma, el caso es que hay proyectos de software libre que tienen unos tiempos de respuesta mejores que muchas empresas de software.

ZAP PROXY

La historia es ésta. Esta semana he encontrado un bug en OWASP ZAP 1.4.0.1 mientras trabajaba que, por su gravedad, me llevó a reportarlo inmediatamente (una vez verificado). El problema en cuestión era que cuando el usuario modificaba un parámetro de una petición POST, la cabecera Content-Length no se actualizaba apropiadamente, por lo que el contenido de la petición llegaba cortado al servidor web, dando lugar a comportamientos más que extraños. El caso es que llevaba notando cosas raras unos días, pero coincidió con las pruebas de una nueva aplicación web, y al principio pensé que era la aplicación la que tenía un comportamiento anormal. La versión 1.4.0.1 se publicó el 9 de Abril de 2012, por lo que presumiblemente todos los usuarios de esa versión durante el último mes han estado padeciendo éste problema sin saberlo.

Pues bien, reporté el problema en el issue tracker de ZAP con el id 298 a la hora de la comida, y avisé al mismo tiempo a mis compañeros de trabajo, ya que se hacía conveniente revisar los resultados del trabajo de las últimas semanas. Volví a mi trabajo encadenando la versión gratuita de Burp con ZAP para evitar el bug. Mientras, recurrí a la guía de Taddong “Building OWASP ZAP with Eclipse (v2.0)” y comencé la descarga del IDE, Subversion para Windows, y todo lo necesario para echar un ojo e intentar averiguar dónde y cómo solucionar el problema. Sin embargo, apenas había terminado de montar el entorno y hacerme una idea rápida de cómo iban los módulos y clases cuando me llegó un correo de nuevo comentario en el hilo del tracker. ¡El parche había sido subido al repositorio y un .jar con el fallo corregido estaba disponible para la descarga en el hilo del problema! Tiempo total desde que reporté el fallo hasta que se subió la solución: ¡3 horas!

Por cierto, para aquellos que no lo sepan, ZAP no es Burp, pero se acerca muy rápido. En mi opinión, si Burp no se pode las pilas es probable que en el plazo de un año o dos ZAP sea mucho más útil para el pentester que Burp.

¡Salud!

Montar las Imágenes de exploit-exercises.com en VMware Fusion

Quería dejar un pequeño apunte para aquellos que estén interesados en probar los retos de exploit-exercises.com. Desde dicha web proporcionan tres máquinas virtuales con diferentes niveles de exploiting para practicar y mejorar las técnicas y conocimientos relativos: Nebula, Protostar y Fusion. El proyecto empezó hace tiempo, pero tanto Protostar como Fusion siguen en estado aplha/beta. Personalmente, preferí esperarme a que los entornos de pruebas fueran más estables para asegurarme de que los problemas que encuentre sean debidos al ejercicio en sí (y/o a mi torpeza) y no a posibles bugs. El primer entorno de pruebas, Nebula, va por la versión 4 y debería ser suficientemente estable, así que decidí bajarlo y echar un rato jugando con las pruebas.

En éste link dan instrucciones para importar las máquinas virtuales de pruebas que proveen en formato OVA (Open Virtualization Format). El problema es que no hay tutorial para VMware Fusion, y no carga OVAs directamente. No es que sea un proceso complicado, pero ahí va:

  1. Descargar OVFTool de la web de VWmare e instalar siguiendo el procedimiento habitual en OS X
  2. Descargar la imagen OVA de la web de exploit-exercises.com
  3. Desde una terminal, ejecutar los siguientes comandos:
ovftool-comandos

Convertir imagen con ovftool --lax origen.ova destino

Si os olvidáis de incluir el flag –lax dará un error relacionado con virtualbox-2.2 (que no nos incumbe) y finalizará. Cuando termine (tarda unos minutos), simplemente id a VMware Fusion, “Archivo->Abrir” y seleccionad la imagen que habéis creado.

WMware-abrir-nebula

Archivo->Abrir

Con esto debería bastar, podéis arrancar la máquina y entrar con usuario y password levelXX. Tenéis más información sobre el funcionamiento y los niveles de Nebula en la página oficial.

¡Salud!

Auditando WordPress con plecost

Esta semana he descubierto una nueva herramienta, aún en fase beta, para auditar websites basados en wordpress. Ha sido desarrollada por los chicos de iniqua.com recientemente para facilitarse la tarea de encontrar vulnerabilidades conocidas en plataformas wordpress. La funcionalidad incluye la identificación de la versión y de los plugins instalados, así como su versión y los CVEs asociados al mismo.

Orion:plecost-0.0.1-5beta Adrian$ ./plecost_0.0.1-5beta.py

// Plecost - Wordpress finger printer Tool - 0.0.1-5beta
//
// Developed by:
//        Francisco J. Gomez aka (ffranz@iniqua.com)
//        Daniel Garcia Garcia (dani@iniqua.com)
//
// Info: http://iniqua.com/labs/
// Bug report: plecost@iniqua.com

Usage: ./plecost_0.0.1-5beta.py [options] URL | [options] -G

Options:
    -G        : Google search mode
    -n        : Number of plugins to use (Default all - more than 7000).
    -c        : Check plugins only with CVE associated.
    -R file   : Reload plugin list. Use -n option to control the extension (This take several minutes)
    -o file   : Output file. (Default "output.txt")
    -i file   : Input plugin list. (Need to start the program)
    -s time   : Min sleep time between two probes. Time in milliseconds. (Default 10)
    -M time   : Max sleep time between two probes. Time in milliseconds. (Default 20)
    -h        : Display help. (More info: http://iniqua.com/labs/)

La he probado sobre un par de sitios diferentes, sin embargo al tratar de probarlo sobre este blog da un error (una excepción sin controlar) al no poder abrir la URL.

plecost en acción

plecost en acción

Me parece muy interesante la opción de buscar en google (-G) sitios con plugins que se sabe son vulnerables, si bien es cierto que podrían ofrecer algún modo de controlar el número de resultados de la búsqueda o de seleccionar de la lista uno o varios  plugins con alguna expresión regular o similar.

plecost google search

buscando en google con plecost

La herramienta es útil, aunque aún le quedan aspectos por pulir. Personalmente, echo en falta que tenga una opción de autoupdate, para descargarse una lista actualizada de plugins a testear y/o CVEs relevantes. Además, creo que sería más cómodo si aparte del número CVE mostrase el link al mismo. En general la aplicación no es demasiado rápida, quizá para la versión final incluyan threads que agilicen un poco la tarea de probar tantos plugins. Y, aunque es un detalle menor, de vez en cuando imprime algún salto de linea adicional al mostrar los resultados. No obstante, estaremos atentos a las mejoras que vayan haciendo y presentaremos la versión definitiva una vez esté lista.

<pre>Orion:plecost-0.0.1-5beta Adrian$ ./plecost_0.0.1-5beta.py -i wp_plugin_list.txt -n 50 www.iniqua.com
[*] Num of checks set at: 50

-------------------------------------------------
[*] Input plugin list set to: wp_plugin_list.txt
-------------------------------------------------

==> Results for: www.iniqua.com <==

[i] Wordpress version found:  10.0

[*] Search for installed plugins

Parece que la gente de iniqua sabe como evadir su propia herramienta ;)

[+] http://code.google.com/p/plecost/

Descubriendo usuarios a través de SMTP con smtpguess

Esta semana descubrí el pentest lab de heorot.net (en los foros tenéis las descargas y algo de documentación y pistas) y decidí probarlo. Dedicaremos otro post más adelante a ver la solución que hallé al nivel 1 del reto cuando lo complete definitivamente. No es que haga falta comerse mucho el coco para superar este primer nivel -no me gusta la forma que he hallado de superar algunas partes, pero ya lo comentaremos despacio en un post futuro-, pero su desarrollo ha dado lugar a una pequeña herramienta que pongo a vuestra disposición.

Llegado un punto del reto, resulta útil e interesante tratar de obtener los usuarios existentes en el sistema objetivo a través de SMTP. Partimos de una lista de usuarios que hemos recopilado -cada uno como ha podido/querido-. El proceso de enumeración a través de SMTP es sencillo, pero tedioso, por lo que decidí que podía automatizarlo de manera sencilla en python, y así nació smtpguess. De momento smtpguess funciona en python 2.6 -debería funcionar igual en 2.5 pero no en 3.x-, requiere que el servicio SMTP esté escuchando y que el puerto en el que lo haga no esté cerrado. Lo he liberado bajo GPLv2 y está disponible para su descarga desde aquí: https://sites.google.com/site/securityetalii/

La versión actual es la 0.1 y su funcionalidad aún no es completa -falta completar el soporte SSL por ejemplo-. Por ahora permite los métodos VRFY y RCPT TO para enumerar usuarios y funciona en un sólo thread. Aquí os dejo un ejemplo de uso:


adrian@Andromeda:~$ ./smtpguess.py
Missing Parameter!
smtpguess v0.1 by Adrián Bravo
Usage: ./smtpguess.py -h  [-p ] -m  -u  [-s] [-v]
where:
-h   -- Targets hostname
-p   -- SMTP server port
-m   -- Supported enumerating modes are verify and rcpt
-u   -- Path to the file containing user names to be tested
-v   -- Verbose: Shows the server responses
-s   -- Use SSL. NOT FULLY IMPLEMENTED IN THIS VERSION

Vamos a pedirle que se conecte a localhost, dejaremos el puerto sin especificar (por defecto es el 25) y le indicaremos que utilice el método RCPT TO, ya que normalmente el método VRFY está deshabilitado por los administradores.


adrian@Andromeda:~$ ./smtpguess.py -h localhost -m rcpt -u users.txt
Trying to connect to SMTP server...
Conection established successfully
Enumerating Users...
--------------------
--> root exists!
--> lp exists!
manolito doesnt exist : (
--> syslog exists!
antoñito doesnt exist : (
--> adrian exists!

Como podéis ver, ha encontrado varios nombres de usuario :) Ahora ya tenemos parte del trabajo, encontrar credenciales para alguno y a jugar. Y ya sabéis, si tenéis cualquier duda o sugerencia, poned un comentario.

Categorías:hacking, herramientas Etiquetas: , , ,
Seguir

Get every new post delivered to your Inbox.