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
You are not allowed to view links.
You are not allowed to view links.
Register or Login or You are not allowed to view links.
Register or Login
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).
You are not allowed to view links.
You are not allowed to view links.
Register or Login or You are not allowed to view links.
Register or Login
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.