XSS Dentro de un CSRF?

Iniciado por XDA, Septiembre 03, 2017, 09:58:22 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Septiembre 03, 2017, 09:58:22 PM Ultima modificación: Septiembre 03, 2017, 10:32:36 PM por xyz
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

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
Mi blog: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Si necesitas ayuda, no dudes en mandar MP

No tienes permitido ver los links. Registrarse o Entrar a mi 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

<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.


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



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
<?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
<?php
$pag = $_GET['page'];
if($pag=="index"){
echo"index";
}
elseif($pag!= ""){
$pagg=htmlspecialchars($pag, ENT_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).


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.



Mmmm pero para hacer CSRF no debes insertar HTML?


No tienes permitido ver los links. Registrarse o Entrar a mi 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.
RollthBuen hacker mejor No tienes permitido ver los links. Registrarse o Entrar a mi cuenta/No tienes permitido ver los links. Registrarse o Entrar a mi cuenta