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
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:
<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 '"' cuando ENT_NOQUOTESno está establecido.
• "'" (comilla simple) se convierte en ''' (o ') sólo cuando ENT_QUOTESestá establecido.
• '<' (menor que) se convierte en '<'
• '>' (mayor que) se convierte en '>'
• '&' (et) se convierte en '&'
Suponiendo que se tiene el siguiente código vulnerable:
<?php
$pag = $_GET['page'];
if($pag=="index"){
echo"index";
}
elseif($pag!= ""){
echo"Error: ".$pag." No existe.";
}
?>
Se aplica de la siguiente forma:
<?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).
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.