Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: XDA en Septiembre 03, 2017, 09:58:22 PM

Título: XSS Dentro de un CSRF?
Publicado por: XDA en Septiembre 03, 2017, 09:58:22 PM
Actualmente estoy entendiendo el tema de CSRF pero es posible juntarlo con un XSS? Podria ser una peticion POST? un token podria ayudar a mitigar?


Gracias saludos
Título: Re:XSS Dentro de un CSRF?
Publicado por: sadfud en Septiembre 03, 2017, 10:29:03 PM
La parte de el CSRF via POST, si, si puedes hacerlo. Para mitigar el csrf puedes usar un token, si. La parte del XSS no entiendo a que te refieres
Título: Re:XSS Dentro de un CSRF?
Publicado por: ANTRAX en Septiembre 03, 2017, 10:38:55 PM
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Actualmente estoy entendiendo el tema de CSRF pero es posible juntarlo con un XSS? Podria ser una peticion POST? un token podria ayudar a mitigar?


Gracias saludos

Hola, Si. Si puede haber un XSS dentro de un CSRF. De hecho el XSS no es mas que poder insertar HTML o Javascript en una web, y el CSRF también, solo que está más orientado a engañar al navegador de la víctima.

Existen varias formas de solucionar la vulnerabilidad, las más usadas es por medio de:

Conhtmlentities() todos los caracteres que tienen equivalente HTML son convertidos  y de esta forma no deja ni abrir ni cerrar etiquetas HTML. Para aplicarlo al formulario del libro de visitas, simplemente debemos modificar las líneas en donde se pasan las variables $nombre y $comentario, dejándolos de la siguiente forma:
Código (html5) [Seleccionar]

<div>'.htmlentities($nombre).', publicado el '.$fecha.'</div>
<div>'.htmlentities($comentario).'</div>


Una vez modificado, los scripts ya no se ejecutaran en el navegador y nos mostrara correctamente el texto ingresado.

(https://lh5.googleusercontent.com/-nAzNbFKRf3E/VBXbo6-jUyI/AAAAAAAAB94/tKmFyDLoEas/w421-h416-no/27.png)

De la misma manera,  solucionaremos la vulnerabilidad en el archivo buscador.php

(https://lh5.googleusercontent.com/-eaEpjaT8A18/VBXbpWkGqiI/AAAAAAAAB90/UXwwwLawNPo/w615-h23-no/28.png)

(https://lh6.googleusercontent.com/-5WzXSC1txLM/VBXbpVaNjdI/AAAAAAAAB98/CUhNLDul0n8/w482-h133-no/29.png)

La otra forma es con htmlspecialchars(), la cual convierte caracteres especiales en entidades HTML y realiza las siguientes conversiones:

•   '"' (comillas dobles) se convierte en '&quot;' cuando ENT_NOQUOTESno está establecido.
•   "'" (comilla simple) se convierte en ''' (o &apos;) sólo cuando ENT_QUOTESestá establecido.
•   '<' (menor que) se convierte en '&lt;'
•   '>' (mayor que) se convierte en '&gt;'
•   '&' (et) se convierte en '&amp;'

Suponiendo que se tiene el siguiente código vulnerable:

Código (php) [Seleccionar]
<?php
$pag 
$_GET['page'];
if(
$pag=="index"){
echo"index";
}
elseif(
$pag!= ""){
echo
"Error: ".$pag." No existe.";
}
?>


Se aplica de la siguiente forma:

Código (php) [Seleccionar]
<?php
$pag 
$_GET['page'];
if(
$pag=="index"){
echo"index";
}
elseif(
$pag!= ""){
$pagg=htmlspecialchars($pagENT_QUOTES);
echo
"Error: ".$pagg." No existe.";
}
?>


Ambas son similares htmlspecialchars() convierte caracteres que se usan para trabajar con HTML (<, >, ", ' y &), htmlentities() traduce todos aquellos que tengan un equivalente a HTML además de los mencionados antes (Por Ejemplo: vocales acentuadas).
Título: Re:XSS Dentro de un CSRF?
Publicado por: blackdrake en Septiembre 04, 2017, 07:07:16 AM
Buenas,

Realmente no, te explico:

- CSRF vía POST, si

- Un token puede mitigar el CSRF? Si, siempre que esté bien implementado.

Ahora viene el juego, si la aplicación también tiene XSS, puedes utilizar ese XSS para "capturar" el token anti-csrf y poder realizar el CSRF :P

Nota: Un CSRF no se fixea igual que un XSS, son vulnerabilidades diferentes.

Un saludo.
Título: Re:XSS Dentro de un CSRF?
Publicado por: ANTRAX en Septiembre 04, 2017, 09:56:47 AM
Mmmm pero para hacer CSRF no debes insertar HTML?
Título: Re:XSS Dentro de un CSRF?
Publicado por: rollth en Septiembre 04, 2017, 10:31:14 AM
No tienes permitido ver enlaces. Registrate o Entra a tu cuenta
Mmmm pero para hacer CSRF no debes insertar HTML?

CSRF es para llevar acabo acciones como si se tratase de otro usuario, se puede hacer de varias formas.

- A través de una url.
- A través de una url insertada en un tag de imagen.
- A través de un metodo POST.

Yo no entiendo bien a que se refiere con la pregunta.

Podrías juntarlo con una XSS en caso de que la acción que hagas también tenga un XSS.
Otra forma de juntarlo sería cuando a través de una XSS puedes saltarte un tocken CSRF para llevar a cabo una acción que en principio no sería vulnerable.

Saludos.