Inyecciones CSS (CSSI): Explicación y PoC

    Las Inyecciones CSS (CSSI) son una forma de vulnerabilidad en sitios web que permite a un atacante insertar código CSS dañino en una página web. Esto sucede cuando una aplicación web utiliza entradas de usuario no confiables directamente en su código CSS sin verificarlas correctamente.

    El código CSS malicioso puede cambiar el aspecto y diseño de la página, lo que permite a los atacantes llevar a cabo acciones como suplantación de identidad o robo de información sensible.

    Estas inyecciones CSS pueden ser aprovechadas por los atacantes como un método para explotar vulnerabilidades de Cross-Site Scripting (XSS). Por ejemplo, si una aplicación web permite a los usuarios ingresar texto en un campo que se muestra en una página, un atacante podría insertar código JavaScript malicioso si el desarrollador de la aplicación no filtra y valida adecuadamente el texto ingresado.

    Si el código CSS insertado es lo suficientemente complejo, puede hacer que el navegador interprete el código como JavaScript. Esto significa que el código CSS malicioso puede inyectar código JavaScript en la página web, conocido como una inyección de JavaScript inducida por CSS (CSS-Induced JavaScript Injection).

    Una vez que el código JavaScript está presente en la página, el atacante puede utilizarlo para llevar a cabo un ataque de Cross-Site Scripting (XSS), lo que podría permitir robar credenciales de usuario o redirigirlos a páginas falsas, entre otros posibles ataques.

Para esta prueba de concepto utilizaremos el laboratorio de Sfk-Labs



PoC

    Cuando iniciamos la aplicación, podemos ver que hay un cuadro de texto que te permite escribir, en este caso el nombre de un color. 


    Ponemos cualquier color y nos mostrara el resultado en función del color que pongamos.


Si vemos el código fuente, vemos que se incorpora al código. 


    En este caso podríamos modificar el código en función a que le indiquemos al input de la entrada poniendo unas etiquetas script HTML. Como por ejemplo; 

blue;}</style><script>alert("CuriosidadesDeHackers")</script>

  Este código debería mostrar un cuadro de alerta o una ventana emergente que alerte el texto "CuriosidadesDeHackers". 


Y como vemos lo incluye en el código 


Este tipo de inyección lo podríamos derivar perfectamente a un Cross-Site Scripting(XSS)

    Os dejo un video realizando una prueba de concepto en el canal de YouTube





2 comentarios:

  1. Muy bueno!!! Fenomenal explicado. Gracias por compartir

    ResponderEliminar