XSS HTTP-POST Injector

Las vulnerabilidades XSS (Cross Site Scripting) siguen estando en el TOP de vulnerabilidades en Internet. Sin embargo, aún se sigue subestimando su nivel de impacto.

Al ser las vulnerabilidades XSS «reflejado» las que más se descubren y por tanto las que más salen a la luz, parece que se pierde el sentido íntegro de una inyección de código JS/HTML/etc. Ésto resta importancia al nivel de amenaza con respecto al total de posibilidades que permite el ataque. Si a eso sumamos que la gran mayoría se explotan en el lado del cliente, podemos intuir por qué no se toma más en cuenta éste tipo de «flag».

La pureza del acto de subvertir un protocolo certificado mundialmente como el HTTP sin dañar el sistema del objetivo, únicamente emitiendo un mensaje no esperado a un receptor humano y generalmente desde un emisor anónimo parece que se pierde.

Lo bueno que tiene la vulnerabilidad XSS es que es frecuente y no muy compleja de explotar.

El XSS «reflejado» es como un «graffiti de la red» puesto en un muro en mitad de la ciudad, muchas veces efímero. Sin embargo, el XSS «persistente» es como el graffiti que ves cuando pasas por debajo de los paneles de tráfico en las autovías, donde alguien se ha arriesgado para que perdure en el tiempo y por tanto su impacto sea mayor.

Ambos métodos y otros más (DOMXSs, Clickjacking, CSS inyection, AJAX, etc..) son las formas que toman la «pintada» y su mensaje para pasar a los albores de los archivos cyber-punk y que podremos visitar en un futuro, quedando como prueba de la contínua auditoría y «lulz» de los y las hacktivistas de todo el planeta y de sus intentos por cambiar las conciencias a través de una inyección de código. Será una hermosa forma de mostrar que hubo gente en la red que no se conformaba. Que no usaba el protocolo establecido. Que tenía una actitud.

Tal vez, del mismo modo, también se llenen los archivos privados de las corporaciones con informes que detallen como los XSS les afectan y como deben protegerse.

En la práctica, el método más usual es a través de HTTP GET donde es posible realizar inyecciones «inline» sobre parámetros de manera muy sencilla y visual. Del mismo modo se pueden «dorkear» enseguida los resultados de vulnerabilidades descubiertas sobre plataformas (CMS, etc) para crear así ataques más masivos y sofisticados, como por ejemplo, robos del historial de navegación o la recogida de los «keystrokes» de una o varias víctimas y todo eso, a partir de haber visitado un link.

Sin embargo, también existe el método HTTP POST y apenas se encuentran vulnerabilidades (o al menos de forma pública) que lo exploten. Quizás, ésto suceda por un principio muy básico basado en la pereza que produce rellenar formularios e ir comprobando resultados, también quizás sea porque se desconozca su frecuencia real.

Por otro lado, algunas herramientas comerciales existentes, a pesar de que afinan bastante bien con el método HTTP POST, siguen teniendo problemas a la hora de hacer «submit» y recoger los resultados de las inyecciones, lo cual genera multitud de falsos positivos.

Del mismo modo, herramientas libres como por ejemplo XSSer, aún tienen tareas por delante para llegar a tener un 100% de efectividad.

Ese momento en el que las herramientas automaticen de forma completa las inyecciones llegará, pero hasta entonces, debemos ir buscando soluciones que nos hagan su entendimiento y explotación más sencillas.

En internet hay cientos de miles de formularios de búsqueda, contacto, login, etc, con vulnerabilidades XSS a través del método POST que están esperando a ser reveladas. Para hacerlo y hasta tener nuevas noticias de éste tipo de practicas, existe código como el que se propone a continuación:

https://github.com/epsylon/xss-http-post-injector

XSS HTTP-POST Injector es una herramienta escrita en HTML+JS+PHP y publicada con licencia GPLv3. Se trata de un código muy sencillo de modificar, que nos permitirá adaptar los tipos de vectores de inyección y el código, a las necesidades del objetivo al que nos enfrentemos.

En muchas ocasiones, los profesionales de la seguridad, deben realizar informes y mostrar en ellos capturas con pruebas de concepto de que el XSS que han explotado es factible. Con ésta herramienta lo tendrán a su alcance. Por ejemplo, contiene una carpeta llamada /images/ con una imagen llamada: pwned.jpg que puede ser cambiada por una propia y de esta forma personalizar mejor tus inyecciones (firmas, reclamos, etc.)

Del mismo modo, tanto para entender como funciona la vulnerabilidad XSS en un formulario con POST, como para hacer pruebas de vectores de ataque, contiene un sencillo «sandbox» con una página de búsqueda vulnerable. De ésta forma podrás comprobar en local tus inyecciones antes de salir fuera ;-)

Pon los siguientes datos para hacer una prueba:

Target URL : sandbox/search.php
Vulnerability: search_text
Vector: ">

Y para lanzarlo;

1. Ejecuta un servidor web (ej: apache)
2. Haz accesible la herramienta via web (ej: /var/www)
3. Visita (ej: http://127.0.0.1/xss-http-post-injector/)

Recuerda, la herramienta está hecha con propósitos educacionales así que, dale duro a tu gobierno, banco o corporación más cercana, si tienes ocasión.

;-)

Happy cross hacking!

Compartir

3 Comentarios

  1. Buen articulo, como siempre un placer leer, un articulo cargado de de buenas razones para convertirse en un netrunner ;)

Deja una respuesta

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax