php - tutorial - ¿Ejemplos de XSS que puedo usar para probar la entrada de mi página?
tipos de vulnerabilidades xss (4)
Es muy bueno usar algunas de las herramientas automatizadas, sin embargo, no obtendrá ninguna información o experiencia de ellas.
El punto del ataque XSS es ejecutar javascript en una ventana del navegador, que no es proporcionada por el sitio. Entonces, primero debe ver en qué contexto se imprimen los datos proporcionados por el usuario en el sitio web; podría estar dentro del bloque de código <script></script>
, podría estar dentro del bloque <style></style>
, podría usarse como un atributo de un elemento <input type="text" value="USER DATA" />
o por ejemplo en un <textarea>
. Dependiendo de eso, verás qué sintaxis usarás para escapar del contexto (o usarlo); por ejemplo, si está dentro de las etiquetas <script>
, podría ser suficiente para cerrar la parétesis de una función y terminar la línea con un punto y coma, de modo que la inyección final se verá como ); alert(555);
); alert(555);
. Si los datos suministrados se utilizan como un atributo html, la inyección podría parecer " onclick="alert(1)"
lo que provocará la ejecución de js si hace clic en el elemento (esta área es rica para jugar, especialmente con html5). Lo importante es que el contexto de xss es tan importante como cualquier función de filtrado / sanatización que pueda existir y, a menudo, puede haber pequeños matices que la herramienta automatizada no detectará. Como puede ver arriba, incluso sin comillas y etiquetas html , en un número limitado de circunstancias, es posible que pueda omitir los filtros y ejecutar js.
También debe considerarse la codificación del navegador, por ejemplo, puede omitir los filtros si el navegador de destino tiene la codificación utf7 (y codifica la inyección de esa manera). La evasión de filtros es una historia completamente diferente, sin embargo, las funciones actuales de PHP son bastante a prueba de balas, si se usan correctamente.
También aquí hay una lista suficientemente larga de vectores XSS
Como una última cosa, aquí hay un ejemplo real de una cadena XSS que se encontró en un sitio, y le garantizo que ni un solo escáner habría encontrado eso (había varios filtros y listas negras de palabras, la página permitía insertar elementos básicos). formato html para personalizar su página de perfil):
<a href="Boom"><font color=a"onmouseover=alert(document.cookie);"> XSS-Try ME</span></font>
He tenido problemas con XSS. Específicamente, tuve una alerta individual de inyección JS que muestra que mi entrada tenía vulnerabilidades. He investigado sobre XSS y he encontrado ejemplos, pero por alguna razón no puedo hacer que funcionen.
¿Puedo obtener ejemplos de XSS que puedo incluir en mi entrada y cuando lo devuelvo al usuario, veo algún tipo de cambio, como una alerta, para saber que es vulnerable?
Estoy usando PHP y voy a implementar htmlspecialchars () pero primero estoy tratando de reproducir estas vulnerabilidades.
¡Gracias!
Las pruebas ad hoc están bien, sin embargo, también recomiendo probar una herramienta de análisis de vulnerabilidades de aplicaciones web para asegurarse de que no se haya perdido nada.
acunetix es bastante bueno y tiene una versión de prueba gratuita de su aplicación:
http://www.acunetix.com/websitesecurity/xss.htm
(Tenga en cuenta que no tengo ninguna afiliación con esta empresa, sin embargo, he usado el producto para probar mis propias aplicaciones).
Por ejemplo:
<script>alert("XSS")</script>
"><b>Bold</b>
''><u>Underlined</u>
Puedes usar este complemento de Firefox:
XSS-Me es la herramienta Exploit-Me utilizada para probar la creación de secuencias de comandos entre sitios (XSS) reflejada. NO prueba actualmente para XSS almacenado.
La herramienta funciona al enviar sus formularios HTML y al sustituir el valor del formulario por cadenas que son representativas de un ataque XSS. Si la página HTML resultante establece un valor de JavaScript específico (document.vulnerable = true), la herramienta marca la página como vulnerable a la cadena XSS dada. La herramienta no intenta comprometer la seguridad del sistema dado. Busca posibles puntos de entrada para un ataque contra el sistema. La herramienta no realiza análisis de puertos, rastreo de paquetes, piratería de contraseñas ni ataques de cortafuegos.
Puede pensar que el trabajo realizado por la herramienta es el mismo que los evaluadores de control de calidad para el sitio al ingresar manualmente todas estas cadenas en los campos del formulario.