-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcsrf1.ff
18 lines (16 loc) · 4.59 KB
/
csrf1.ff
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<div id="csrf"><h2><span class="inlineHTML">CSRF</span>, el infravalorado.</h2>
<p>Cuando lees el <span class="inlineHTML">scope</span>(alcance) de muchos programas de bughunting, CSRF suele estar en la lista de fallos de seguridad sin importancia de muchos de ellos. Esto es una prueba ferrea del desconocimiento ante el potencial de este fallo de seguridad.</p>
<p>CSRF (Cross Site Request Forgery, en español Falsificación de Peticiones en Sitios Cruzados) es un fallo bastante propenso en páginas web. Lo situo en mi top 2 de fallos ordenados por frecuencia de aparición.</p>
<p>Este fallo se da cuando a través de una petición (un enlace, una imagen, un formulario...) puedes realizar acciones sobre la página o el servidor. Normalmente se puede realizar esta acción desde otra página web que no está relacionada con la página vulnerable, es decir, desde esta página puedo explotar el fallo de seguridad de otra página web como pueda ser google.</p>
<p>Usando la web de instagram como ejemplo hipotético: <span class="inlineHTML">https://www.instagram.com/nombreDeUsuario/</span>, ponte en el caso de que para borrar una cuenta se accediese al siguiente enlace: <span class="inlineHTML">https://www.instagram.com/NombreDeUsuario/miCuenta/Eliminar</span>, si tú accedes, te diría que tú no eres el propietario de la cuenta y por lo tanto no tienes los permisos para borrarla. PEEERO... Y que pasa si creo un enlace para que el dueño de la cuenta le haga click? <a href="https://www.instagram.com/NombreDeUsuario/miCuenta/Eliminar">Hazme click para ganar tu premio!</a></p>
<p>Es bastante peligroso verdad? Pero necesita que justo el dueño de la cuenta haga click en él. Puede que el usuario sea precavido y mire el enlace antes de pincharlo. PEEERO... Hay otras formas de explotar este fallo. Siendo las imágenes una de las mas peligrosas. Cuando se incluye una imagen en una página web, tu navegador sigue el enlace de la imagen automáticamente para descargar el contenido. Por ejemplo la siguiente imagen ha sido descargada de instagram cuando se cargó esta página web:
<img src="https://instagram.com/favicon.ico"></p>
<p>El código HTML de esta imagen es: <span class="inlineHTML"><img src="https://instagram.com/favicon.ico"></span> y de la misma forma que se manda una petición pidiendo la imagen, se puede mandar una petición a cualquier otro enlace:
<img src="https://www.instagram.com/NombreDeUsuario/miCuenta/Eliminar"></p>
<p>El código HTML de esta imagen es: <span class="inlineHTML"><img src="https://www.instagram.com/NombreDeUsuario/miCuenta/Eliminar"></span>. Si la página de instagram tuviese este fallo de seguridad, y yo supiese el nombre de tu cuenta de instagram, hace un buen rato que tu navegador habría borrado tu cuenta de instagram sin tú saberlo.</p>
<p>Sigue sin ser lo suficientemente peligroso? Cuando este fallo se combina con otras características de una web, que no necesariamente implican fallos de seguridad (como añadir imágenes de otros servicios) es posible atacar a practicamente TODOS los usuarios que visiten la web para realizar las acciones no protegidas a través de este fallo de seguridad.</p>
<p>Puede que el fallo esté infravalorado debido a que la versión más común (y descuidada) es el CSRF Logout con el que básicamente desloggeas al usuario afectado de su cuenta, lo cual implica molestias, perdidas pero no una grande afectación continua sobre la aplicación, porque algún usuario enviará un reporte del fallo y lo solucionarán sin mucho problema.</p>
<p>Esta mentalidad es erronea. Estos fallos pueden atacar absolutamente cualquier tipo de funcionalidad que la aplicación permita mediante una petición. Lo cual suele implicar que se pueden atacar una parte considerable de los usuarios de la aplicación simultaneamente.</p>
<p>Cuando se busca este fallo, la búsqueda suele ir enfocada a enlaces en la web que revelen estas funcionalidades, pero este fallo de seguridad no solo afecta a peticiones GET, si no que pueden automatizarse también el envío de peticiones POST (entre otros métodos) ya sea utilizando código javascript(XMLHTTPRequest, Fetch, Ajax...) o envio de formularios también con javascript, <span class="inlineHTML">formulario.submit();</span> que se puede realizar sin interacción por parte del usuario utilizando <span class="inlineHTML">setTimeout(form.submit(),1);</span>.</p>
<p>Este envio de formularios de forma autónoma es común en ataques encadenados para explotar múltiples XSS reflejados en distintas páginas. Un ataque avanzado que permite atacar múltiples servicios vulnerables simultaneamente o esconder la procedencia del ataque original.</p>
</div>