El código que se muestra a continuación, es un ejemplo simplificado del comportamiento que ofrece en una de sus secciones, un -importante- diario español.
/* Para evitar problemas con los encodings */
header('Content-type: text/html; charset=utf-8;');
/* Mandar un error 404 si el parámetro return contiene la cadena <script, < script, etc. -> \s=espacio */
if ( preg_match('/<\s*script/', $_GET['return']) ) {
header("HTTP/1.0 404 Not Found");
echo 'Not found!';
exit();
}
?>
<html>
<head>
<title>Anti XSS Page :D</title>
</head>
<body>
<?php echo $_GET['return']; ?>
</body>
</html>
¿Qué tienen que hacer para ejecutar javascript en el código mostrado?
Off Topic: ¿Qué sugieren para de algún modo premiar a los que aporten en la resolución de estos quiz? -dinero no tengo :D.
14 replies on “Cuando los filtros no hacen lo que deberían”
¿Tal vez un javascript:tal() funcione?
En el feed se ve preg_match('/
Oops, en tu blog si funciona el filtro anti XSS. Aqui va lo mismo pero html-ok:
En el feed se ve preg_match('/<\s+script/', $_GET['return']). Ese + canta de lejos. Que sorpresa me he llevado al ver en la pagina un *.
PD: Para la proxima usare la vista previa.
Je je, lo del + lo acabo de corregir.
Por cierto, si quieres que enviar código usa los bloques [ code] [ /code] o [ php] [ /php] (sin los espacios).
URL:
http://example.com/foo.html:
[html]<script type="text/javascript">
alert(window.parent.document.title + ' is powned');
</script>[/code]
Imagino que habrá alguna solución más elegante pero es la primera que se me ha ocurrido que funcione.
Qué tal un iframe a una página con javascript? Es cutre pero funciona (habia enviado un comentario con el código de ejemplo pero tu wordpress se lo ha "comido")
Francesc, muy bien, esa es una de las tantas formas de saltar ese filtro.
Para enviar código, como dije en #3, puedes usar los bloques [ code][ /code], php, javascript, etc
y ¿Cual sería la solución? ¿Validar los tags iframe igual que script?
#7, normalmente se valida sólo los tags i atributos que quieres (como hace el autor de este blog con los comentarios).
Francesc, sobre el uso del iframe, lo que se puede hacer con esto es un poco más limitado que otros métodos, por ejm. no se puede acceder al documento que contiene al iframe si es que estos no pertenecen al mismo dominio.
Bien visto Alex, a ver qué tal este otro:
Jeje, se me olvidó poner el modificador
i
a la expresión regular.[...] Cuando los filtros no hacen lo que deberían [...]
y .. pasar por urlencode, hexadecimal y blablabla...
cualquier cosa equivalente , pero que no siga la sintaxis de anteponer la etiqueta script se la tragaría
+1