A la hora de realizar una
auditoría web siempre tenemos que andar buscando si cada parámetro
que podemos modificar en las peticiones provoca cualquier cambio en
el resultado devuelto por el servidor, por poco perceptible que sea.
Es muy común que las
páginas web hoy día muestren las búsquedas más realizadas por sus
usuarios con la finalidad de proporcionar información que,
estadísticamente, será de utilidad para gran parte de los
visitantes. Lo que conviene tener en cuenta es que, si nosotros
conseguimos alterar las búsquedas más realizadas para incluir la
nuestra propia, podremos hacer que se muestre el texto que nosotros
queramos en la página principal (siempre teniendo en cuenta posibles
filtrados que realicen a los parámetros recibidos).
Para ello, la forma más
sencilla de llevarlo a cabo es realizar búsquedas con la inyección
XSS que queramos para que se realicen por parte de la aplicación web
los correspondientes INSERT en la base de datos para guardar registro
de todas las búsquedas realizadas hasta que detectemos que ya
aparece nuestro XSS en la página principal.
He realizado un pequeño
script en python que realiza justo lo comentado, le indicamos la url
que muestra las búsquedas mas realizadas y la expresión regular
para parsearlas, le indicamos la url utilizada para realizar las
búsquedas “legítimas” y le decimos el “tag” que queremos
inyectar.
Por ejemplo:
- URL del buscador: http://localhost/search.php?q=BÚSQUEDA
- URL que muestra las búsquedas más repetidas: http://localhost/show_searches.php
- Expresión regular para detectar dichas búsquedas más repetidas: tags = re.findall("<div class=\"mostsearched\"> (.+) <\/div>", html_response)
Para probarlo he “programado” dos sencillos php, por un lado el
php que muestra los resultados más comunes:
Script en php que muestra las búsquedas más típicas |
Lo sé, no tengo
desperdicio como diseñador web... :p
Por otro lado, está el
php que se encarga de guardar la “búsqueda” realizada (no
muestra ningún resultado, sólo hace el correspondiente INSERT en la
base de datos y lo muestra por pantalla).
Script en php para "buscar" y guardar registro de las búsquedas |
Eso sería la parte que
correspondería a la página web, algo austera pero funcional ;) .
Ahora bien, para inyectar
búsquedas con nuestro XSS he creado un script muy sencillo en python
que se encarga de realizar “búsquedas” hasta que detecta que el
XSS ha sido inyectado correctamente (por supuesto, hay que recordar
que si realizan algún tipo de filtrado el resultado no será el
esperado...).
topshearches-hijacker.py en acción |
En este caso vemos cómo
han sido necesarias 12 peticiones para colocar el tag con el XSS
entre los resultados más buscados y que, por tanto, sea mostrado en
la principal, logrando un XSS almacenado que podría afectar a un
gran número de visitantes.
Para todos aquellos que
os apetezca trastear con el script tenéis todo para descargar en
https://sites.google.com/site/navegandoentrecolisiones/home/scripts-python.
El script no es nada del otro mundo y necesitará cambios para que funcione en otro entorno, pero lo dejo a modo de PoC y por si le puede servir a alguien...
El script no es nada del otro mundo y necesitará cambios para que funcione en otro entorno, pero lo dejo a modo de PoC y por si le puede servir a alguien...
Nos vemos!
Este comentario ha sido eliminado por un administrador del blog.
ResponderEliminar