Underc0de

[In]Seguridad Informática => Bugs y Exploits => Pentesting => Mensaje iniciado por: arthusu en Septiembre 30, 2018, 12:47:32 PM

Título: Como saltar CSP (Content Security Policy)
Publicado por: arthusu en Septiembre 30, 2018, 12:47:32 PM
Introduccion

La política de seguridad de contenido (CSP) es un estándar de seguridad informática introducido para evitar la secuencia de comandos (XSS), clickjacking y otros ataques de inyección de código resultantes de la ejecución de código malicioso en el contexto confiable de la pagina web.

Detectando CSP

(https://1.bp.blogspot.com/-ATwO4s-aHqQ/W6B_9Qm-OKI/AAAAAAAAGuk/9V8kcZJqXWgOa7FVqy3KZmZApD5bBMOuACLcBGAs/s320/Screenshot_253.png)


Primeramente vemos una URL que puede ser posiblemente atacada por XSS. Y hacemos la prueba:

(https://1.bp.blogspot.com/-SBcRpqnryY8/W6B_eITtr3I/AAAAAAAAGuU/pecYSYjLAO0n2lqp5Qo1psH-OyEGhAP3wCLcBGAs/s400/Screenshot_254.png)


Vemos como se inyecta nuestro codigo pero no se ejecuta entonces, vamos al apartado de Network de nuestro inspeccionador de elementos y vemos lo siguiente:

(https://1.bp.blogspot.com/-dnGBi204Avk/W6B_sEYipMI/AAAAAAAAGuY/zfRlRT2rB0InmN1D_o6uQY2puxnh9Dh_ACLcBGAs/s400/Screenshot_252.png)

Un mensaje de error que nos indica claramente como content security police nos esta bloqueando y que solo permite ejecutar scripts del mismo dominio.

Atacar!

El siguiente paso es buscar alguna parte donde se refleje nuestro XSS ya sea un alert, prompt, confirm, etc... puede llegar a ser una imagen, un archivo js, etc...

Primero hay que ver cuales son los dominios que permite para ello vamos hacemos una peticion y vemos la respuesta:

(https://2.bp.blogspot.com/-mb8ovaLE-Mw/W6CAqdaTRJI/AAAAAAAAGuw/ydnp0-_fTZMqsEy9x9u0mMOi0zkFhhJbwCLcBGAs/s400/Screenshot_255.png)


Vemos claramente como se puede solamente inyectar script que sean del mismo dominio. Ejemplo de un vector:

<script src="http://pentesterlab.com/arthusublog.js?var=alert(1);" />

Donde alert(1) se refleja en el JS.

(https://1.bp.blogspot.com/-oyXboSoGFH0/W6CCObA7JxI/AAAAAAAAGu8/0wtzAeecUX4k7NJA0azmUOoYX4sp9SdxQCLcBGAs/s400/Screenshot_257.png)


Inyectando el vector en donde se encuentra el XSS podemos realizar el bypass:

(https://2.bp.blogspot.com/-NTFPXdN0NZs/W6CCWTsXrAI/AAAAAAAAGvA/rG_IictrBE4eqeTqT6c5MUTuDe2nO0LRQCLcBGAs/s400/Screenshot_256.png)