Encuentre y resuelva XSS en este código

-2

Necesito encontrar un XSS y proponer una solución en el siguiente código:

<form action="#" method="post">
<input type="hidden" name="id" value="<?=$id?>"><br>
<textarea name="body"><?=$text?></textarea><br>
<input type="submit" value="Send"><br>
</form><br>

Esto es parte de un tablero de mensajes. El envío almacenará el mensaje en una base de datos y luego habrá otra función que lee este DB y copia el contenido del registro sin sanearlo, por lo que todo lo que ponga en $ text será ejecutado, por lo tanto, vulnerable a XSS. Agregué antes de eso esta línea $text = htmlspecialchars($text); , pero no está escapando de la cadena, así que nuevamente el script se está ejecutando.

Además, el $ id también es vulnerable, ¿no es así? ¿Cómo podría explotarlo? Porque lo he estado intentando pero sin suerte.

    
pregunta yzT 23.05.2014 - 11:34
fuente

3 respuestas

0

Resultó que el único XSS que esperaba el entrenador era el $ id, que se resolvía fácilmente usando htmlspecialchars($id)

    
respondido por el yzT 03.06.2014 - 10:19
fuente
1

Como dijo @David_Houde, sin el código del lado del servidor no puedes descubrir cómo explotar la vulnerabilidad de XSS. Pero en caso de que no tenga idea del filtro utilizado en el lado del servidor (prueba de caja negra), puede intentar adivinarlo. Puede usar la Hoja de referencia de XSS Filter Evasion proporcionada por OWASP.

    
respondido por el TMR_OS 23.05.2014 - 15:48
fuente
-1

Por lo general, este problema se resuelve eliminando todas las secuencias de comandos y el HTML en su totalidad. En PHP (veo que usas una función de PHP) esto se hace a través de la función strip_tags . Esto puede eliminar también las etiquetas de formato deseables, por lo que si necesita un poco de formato de texto, debe reintroducirlas con algún tipo de marca (como usan los tableros StackExchange: negrita , cursiva y así sucesivamente), o mediante el uso de funciones más especializadas de eliminación de etiquetas.

Tenga en cuenta que algunas implementaciones de este tipo son defectuosas y, a su vez, pueden abusarse enviando, por ejemplo, etiquetas anidadas (por ejemplo, <<script>script> ) o secuencias UTF8 creadas. Es posible que desee probar la implementación elegida contra un conjunto de ataques conocidos.

    
respondido por el LSerni 23.05.2014 - 13:22
fuente

Lea otras preguntas en las etiquetas