Daniel Cabezas personal blog

Usando Firefox como framework para pen-testing



En mi nuevo trabajo, y durante los últimos meses, he venido realizando baterías de pruebas de intrusión de un nuevo tipo, para mí: auditorias de aplicación web.

Una de los problemas ante los que se enfrenta cualquier profesional que quiere realizar una evaluación de la seguridad es el conjunto de herramientas que existen para realizar pruebas específicas. ¿Se os ha ocurrido alguna vez pensar en como repetir 10000 veces una misma operación de loguearse y cerrar la sesión en una aplicación pero con un parámetro cambiado para hacer fuzzing? O ¿Como tener 4 proxys diferentes y cambiar entre ellos rápidamente, según el análisis, captura o modificación de los datos que queremos realizar? Vía un consejo de un colega de E&Y (muchas gracias, César), acabé echando un vistazo a la página de extensiones de Firefox. Y, para mi sopresa, existen un montón de herramientas de ayuda al programador que permiten realizar un montón de comprobaciones de debugging de código, pero que también sirven para un pen-testing. Al final, resulta que Firefox se puede "tunear" y convertirlo en un framework muy, muy completo para realizar pruebas de intrusión. Por si a alguien le pueden servir de ayuda, he hecho una lista de las extensiones más interesantes, y también de unas cuantas utilidades más que, aunque no sean extensiones para Firefox, pueden ayudar mucho a la hora de realizar pentest de aplicaciones web. 1. Mozilla Bookmarklets
La primera utilidad en una lista de programas indispensables para analizar información sobre páginas html, es una colección de scripts llamada Bookmarklets1, totalmente indispensable para analizar rápida y sencillamente multitud de aspectos de una página web. Incluye análisis de enlaces, imágenes, palabras clave, búsqueda en google de información relacionada, modificación de elementos de código ... Especialmente útil es el shell javascript, que nos permite evaluar funciones programadas en este lenguaje, dentro del contexto de la página analizada:

javascript shell

2. Sahi y Selenium IDE
Como no, cuantas más pruebas quieres hacer, más te sabe a poco todos los programas que tienes a mano. En una función de entrada de datos para el registro de una aplicación, ¿Como comprobar si las entradas de datos están sometidas a comprobaciones contra ataques de fuerza bruta? Google en mano, encontré dos posibilidades: la primera fue sahi2, un proxy hecho en JAVA que permite "grabar" en forma de macros sesiones interactivas con una página de usuario mediante la inyección de código javascript "al vuelo" en las páginas navegadas, y volver a ejecutar las mismas acciones realizadas al navegar en la página web. Soporta HTTPS y para mí se ha convertido en una herramienta muy útil, porque al utilizar javascript puro, lo podéis utilizar también para análisis de AJAX.

Sahi

Por otro lado tenéis el Selenium IDE3, un entorno de debug para páginas web bastante parecido al anterior. También permite grabar y repreoducir eventos en páginas web (hacer click, enviar formularios, etc.), con el añadido de que puede grabar las sesiones en formato de script de Ruby.

A pesar de tener menos macros, mi preferencia entre estas dos herramientas es sahi, por una simple razón: puedes programar bucles iterativos en el propio lenguaje Javascript en que realizas todas las funciones internas de los scripts de navegación, mientras que en Selenium hemos de hacer uso de alguno de los conectores sobre un lenguaje de programación externo, como JAVA, para proveer de controles de flujo sobre nuestras macros.

Nota: Un apunte interesante para los que uséis Sahi: mucho ojo al programar bucles "infinitos", porque os podéis encontrar con que la aplicación se os cuelgue sin parar. Esto ocurre si programáis una función como:

for (; ;) {
_setValue(_textbox("userName"), "user");
_setValue(_password("userPassword"), "pass");
'
'
'
}

Y esto se debe a que, por defecto, Sahi intenta cargar el listado entero de pasos a realizar y luego ejecutarlos. En cambio, probad:

while(_condition(1=1)){
_setValue(_textbox("userName"), "user");
_setValue(_password("userPassword"), "pass");
'
'
'
}
3. Cert Viewer4. Esta miniextensión nos añade un par de opciones de utilidad a la hora de examinar los certificados SSL/TLS de una página web. Básicamente, nos permite ver los certificados en formato PEM (Base64) y guardarlos a disco.


4. Usage Counter. Otro detalle de lo más nimio, y otra extensión que viene en nuestra ayuda. Cronometrar las sesiones. ¿Como sabemos si una aplicación impone timeouts de sesión, o si lo hace correctamente? Pues nada más sencillo que utilizar la extensión Usage Counter5 , que nos muestra un contador de tiempo de la sesión actual en Mozilla. Podemos personalizarlo para que cronometre las sesiones de diferentes pestañas por separado, según el dominio, y reiniciar el contador a 0 con dos simples clicks. Muy sencilla, y muy útil.



5. Fireencrypter. Esta si que es una extensión realmente útil. Fireencrypter6 nos da una cajita con mútiples pestañas que permiten probar desde el propio navegador muchas funciones de hashing y cifrado rápidamente. Incluye MD5, SHA1, SHA256, SHA384 y SHA512, perfecto para comprobar rápidamente si estamos ante un ID de sesión o un campo de base de datos que pueda contener hashes de passwords que se puedan "adivinar", por ejemplo.



6. My IP viewer y Torbutton: Dos extensiones para acceder rápidamente desde la barra de estado del navegador con un simple click: My IP viewer7 nos permite ver rápidamente la IP pública a través de la que estamos saliendo. Una extensión perfecta para comprobar si Torbutton8 está funcionando correctamente. Con torbutton podemos activar/desactivar el uso de un servidor SOCKS con el software tor de anonimato rápidamente. Cuando hemos de cambiarnos de IP rápidamente, o queremos ocultar nuestra dirección de origen, hacer un click es siempre más sencillo que estar continuamente cargando/descargando alguna conexión de VPN.



7. Foxyproxy. Esta es la utilidad que más uso a diario. Cuando tenemos varios proxys configurados para hacer diferentes pruebas (p.e. Paros , Sahi, el proxy de la empresa, ...) es muy pesado tener que ir cambiando de uno a otro en las opciones, cambiando dirección y puerto. Además, a veces para una IP o un tipo de archivo en concreto podemos querer inspeccionar el tráfico con un proxy en particular, mientras que las imágenes u otros tipos de archivo y otras páginas pasen por otro canal. Pues justo para esos casos está la extensión foxyproxy10, con la que no solo se pueden configurar diferentex proxys para ir cambiando entre ellos rápidamente, sino también combinar varios proxys a la vez, mediante regexp o listas específicas de que dominios deben ir por un proxy o por otro. En mi caso, en que la salida a Internet de mi trabajo va a través de un proxy, un programa así se hace imprescindible.



Otras utilidades:

Tan solo añadir una herramienta más, que aunque se escapa un poco del tema del artículo, es igualmente útil. Para los usuarios del Internet Explorer que quieran cambiar rápidamente de proxy, existe una pequeña utilidad análoga a FoxyProxy, es el IE Proxy Changer, que viene incluído en la instalación del Proxy para pruebas de intrusión Snark11.

Y poco más, espero que a alguien le sea de utilidad. Iba a añadir un par de utilidades más, para el manejo y modificación de cookies, pero en la guía de pruebas Owasp están explicadas en más detalle, así que os dejo un enlace.

Referencias:

Bookmarklets: http://www.squarefree.com/bookmarklets/
Sahi : http://sahi.co.in/ .
Selenium IDE: http://www.openqa.org/selenium-ide/
Paros: http://www.parosproxy.org/download.shtml
Keyscrambler: https://addons.mozilla.org/en-US/firefox/addon/3383
Add N Edit Cookies: https://addons.mozilla.org/es-ES/firefox/addon/573
Cert Viewer Plus: https://addons.mozilla.org/es-ES/firefox/addon/1964
CookieSwap: https://addons.mozilla.org/es-ES/firefox/addon/3255
Fire Encrypter: https://addons.mozilla.org/es-ES/firefox/addon/3208
FoxyProxy: http://foxyproxy.mozdev.org/
Header Spy: https://addons.mozilla.org/es-ES/firefox/addon/4276
JSView: https://addons.mozilla.org/es-ES/firefox/addon/2076
My IP viewer: https://addons.mozilla.org/es-ES/firefox/addon/4316
Torbutton: https://addons.mozilla.org/es-ES/firefox/addon/2275
Tamper Data: https://addons.mozilla.org/es-ES/firefox/addon/966
Usage Counter: https://addons.mozilla.org/es-ES/firefox/addon/3482
Snark: http://snark.sourceforge.net/
jopi - clock 19:51:37 - Friday, 25.05.07 - seguridad - 4283x - pencil permalink
Karma points: -2. Do you like this article? [yes/no]

RSS 2.0 feed, Trackback, print preview, email this article