miércoles, 25 de noviembre de 2015

xssFinder.py: Haciendo nuestra herramienta de auditoría web III

Tercera entrada y última centrada en los XSS. En este caso combinaremos las dos entradas previas (Cross Site Scripting tanto en los parámetros de la url y en los formularios de la página) y además, el script buscará automáticamente todas las url del dominio que encuentre por las páginas para analizarlas.

El código, como en anteriores entradas está disponible en el repositorio git de 0verl0ad:
https://github.com/0verl0ad/pyJuanker/blob/master/scripts/xssFinder.py

Sobré su análisis:


Esta función llamada getUrls es original de la aplicación comHunter que vimos en una entrada anterior. Su funcionamiento es recorrer todas las páginas del dominio e ir almacenando las url pertenecientes a éste que encuentre.

Siguiendo con el código nos encontramos con la función findXss:


Esta función se encarga de buscar XSS para cada url que haya encontrado previamente el script. Su funcionamiento se explicó en la entrada xssUrl.py: Haciendo nuestra herramienta de auditoría web II.

El resto de la función corresponde a la parte de buscar XSS en los formularios de la página visto en la entrada bxf.py: Haciendo nuestra herramienta de auditoría web I:


Con todo esto unimos los scripts de las entradas anteriores y recorremos el dominio buscando XSS. Se podría optimizar mediante hilos o similar o incluyendo listados de payloads más grandes, pero esto ya es tarea para otra ocasión :D.


Con esto cerramos la herramienta para buscar XSS, en futuras entradas veremos como encontrar otro tipo de vulnerabilidades.

Nos leemos en "breve",


5 0verl0ad Labs: noviembre 2015 Tercera entrada y última centrada en los XSS. En este caso combinaremos las dos entradas previas (Cross Site Scripting tanto en los parámetr...

martes, 24 de noviembre de 2015

xssUrl.py: Haciendo nuestra herramienta de auditoría web II

En la entrada anterior veíamos como probar patrones de XSS sobre todos los formularios de una página con python. A lo largo de esta entrada utilizaremos un procedimiento similar para detectar este tipo de vulnerabilidades en las url de las páginas.

Antes de empezar, el código se encuentra disponible en el repositorio git de pyJuanker:
https://github.com/0verl0ad/pyJuanker/blob/master/scripts/xssUrl.py
 A continuación, como en otras entregas, desglosaremos el código para ver su funcionamiento:


Las primeras líneas, como en el anterior script, corresponden a los parámetros de entrada como son la url y, de forma opcional, un diccionario con payloads para explotar un XSS.

En las siguientes líneas (22-24) se desglosa la dirección pasada por parámetro mediante el módulo urlparse que permite desglosar las url de forma fácil.

Siguiendo con el código:


Recorremos el listado de payloads disponibles y asignamos el valor de cada uno a cada parámetro del campo query de la url. Dicho campo lo obtenemos del desglose de la url realizado con urlparse:

Desglose de la url mediante urlparse extraído de su documentación.
A continuación, mediante el módulo request se realiza una petición get a la url objetivo con los payload del diccionario.
Como en el script de la anterior entrada, si la página resultante contiene el payload es posible que haya una vulnerabilidad XSS.


Un ejemplo de su uso:


En cuanto a las desventajas del script, adolece de las mismas que el anterior (bxf.py), pero basta para entender el funcionamiento básico de una herramienta de este tipo.


Con todo esto me despido, nos leemos en breve ;)




5 0verl0ad Labs: noviembre 2015 En la entrada anterior veíamos como probar patrones de XSS sobre todos los formularios de una página con python. A lo largo de esta entrada...

miércoles, 18 de noviembre de 2015

bxf.py: Haciendo nuestra herramienta de auditoría web I

En esta serie de posts vamos a hacer nuestra "herramienta de auditoría web automatizada". Veremos como mediante python podemos escribir herramientas que, aunque simples, pueden servirnos de base para otras más complejas centradas en la auditoría web.

En esta primera entrada dedicada a los XSS, veremos como detectarlos en los formularios de una página. Para ello tenemos el script bxf.py disponible en el github de 0verl0ad:

https://github.com/0verl0ad/pyJuanker/blob/master/scripts/bxf.py
Empezando con el código:



 vemos que utiliza la librería mechanize de python (rama 2.7.x, no lo he probado con python 3) que permite desde este lenguaje emular un navegador web.

A la declaración de éstas (las librerías) le siguen los parámetros de uso, siendo la url objetivo el primero y el segundo, un diccionario de payloads para probarlos en todos los formularios (éste es opcional).

Los siguientes parámetros que aparecen son para configurar mechanize para que funcione correctamente en la mayoría de páginas.

Siguiendo con el código:



A partir de la línea 43 se recorre el listado de payloads proporcionado y va rellenando cada campo de texto de los formularios para después proceder a enviarlos.

Acto seguido comprueba si el payload está contenido en la página respuesta para ver si el formulario es vulnerable a un XSS.


El problema de este método es que producirá bastantes falsos positivos, pero como aproximación y como base de scripts más complejos cumple su cometido.


Para su uso he utilizado el diccionario de payloads que ofrece un plugin de ZAP disponible en:
https://github.com/zaproxy/zap-extensions/blob/master/src/org/zaproxy/zap/extension/fuzzdb/files/fuzzers/fuzzdb-1.09/attack-payloads/xss/xss-rsnake.txt 



Con el diccionario en nuestro poder, basta con ejecutar el script con:
python bxf.py "http://xxx.com" xss-rsnake.txt
donde http://xxx.com es la url objetivo y xss-rsnake.txt es el archivo de payloads.

La salida resultante:


Al detectar un posible formulario vulnerable se muestran información sobre éste y el payload utilizado para explotarlo (el script para una vez detecta un payload vulnerable, es decir, no prueba toda la lista si ya tiene un posible positivo).


Con todo esto me despido, nos leemos en breve ;)


5 0verl0ad Labs: noviembre 2015 En esta serie de posts vamos a hacer nuestra "herramienta de auditoría web automatizada". Veremos como mediante python podemos esc...

martes, 17 de noviembre de 2015

Reto #1: Deep Derp

¡Saludos!

Dejo por aquí un pequeño reto que hice el otro día. Para superarlo, deberéis de encontrar un flag (viene denotado por el clásico flag{ AQUI EL FLAG }, por lo que cuando lo tengais será fácil saberlo).

El reto realmente se compone de varias fases, todo comienza a partir de un PCAP. Tiene partes de forense de redes, web, crypto y lenguaje esotéricos. Aunque, pese a que tenga componentes de todas esas áreas, no se trata de un reto de seguridad como tal.

Si encontrais el flag, enviadmelo por mensaje privado a mi tuiter: @TheXC3LL. El write up de quien resuelva el reto lo publicaré aquí. Invitaré a una copa a quien lo resuelva primero en el Cybercamp ;)
El plazo es hasta el 25 de este mes. Si nadie lo resuelve, publicaré la solución en el blog de Ka0labs.

Let's Play: https://mega.nz/#!PBUzSBQB!AC5-0_ZWsnwizEshzgnql3QutGaLrodS74_KO4_UdW4

 Byt3z!
5 0verl0ad Labs: noviembre 2015 ¡Saludos! Dejo por aquí un pequeño reto que hice el otro día. Para superarlo, deberéis de encontrar un flag (viene denotado por el clásico...

viernes, 13 de noviembre de 2015

Charla -> Vigila la seguridad de tu web con ZAP


Hace un par de meses di una charla en el grupo de PHP Valencia (buena gente todos, nadie me insulto al acabar) sobre OWASP ZAP.

El contenido de ésta, es un breve repaso por el OWASP TOP 10  repasando, a modo de introducción,  las vulnerabilidades más comunes y peligrosas en el ámbito web. El grueso de la charla lo compone una introducción a la herramienta para mostrar todas las posibilidades que esta ofrece.

La charla la tenéis disponible aquí:





Nos leemos en breve ;)


5 0verl0ad Labs: noviembre 2015 Hace un par de meses di una charla en el grupo de PHP Valencia (buena gente todos, nadie me insulto al acabar) sobre OWASP ZAP . El co...
< >