¿Cómo detectar XSS en HTTP / 1.1 GET peticiones? Una solicitud puede ser maliciosa y quiero saber cómo detectar si la solicitud GET a un servidor está intentando hacer XSS mi sitio web.
¿Cómo detectar XSS en HTTP / 1.1 GET peticiones? Una solicitud puede ser maliciosa y quiero saber cómo detectar si la solicitud GET a un servidor está intentando hacer XSS mi sitio web.
No solo debes protegerte de XSS al escanear las solicitudes HTTP de ataques. Tal exploración nunca estará completa, y siempre habrá algunos trucos inteligentes que se deslizan a través de la red. Su primera línea de defensa debe ser siempre desinfectar adecuadamente los datos que no sean de confianza, para no crear vulnerabilidades de XSS en primer lugar.
Para saber cómo hacerlo, consulte OWASP truco truco sobre el tema. Si es posible, le recomendaría que establezca el encabezado Política de seguridad del contenido estrictamente, como Esto te dará una defensa sólida en los navegadores modernos. Incluso tiene una directiva de informes que le indicará al navegador que le informe sobre los intentos de ataques.
Dicho esto, para una defensa en profundidad puede ser bueno analizar también las solicitudes HTTP para filtrar cualquier ataque XSS que puedas detectar. La mayoría de los firewalls de aplicaciones web , como Naxsi para Nginx, lo hará. Recomiendo usar un WAF existente aquí y no intentar rodar el tuyo, no hay una expresión regular que atrape todos los ataques XSS.
Entonces, ¿cómo lo hace Naxsi? Según ellos mismos :
Este módulo, de manera predeterminada, lee un pequeño subconjunto de reglas simples (y legibles) que contienen el 99% de los patrones conocidos involucrados en las vulnerabilidades de los sitios web. Por ejemplo,
<
,|
odrop
no deben formar parte de un URI.Siendo muy simples, esos patrones pueden coincidir con las consultas legítimas, es deber del administrador de Naxsi agregar reglas específicas que incluirán en la lista blanca esos comportamientos legítimos.
Por cierto, no es solo la solicitud GET la que debe preocuparse, sino también la POST o cualquier otro método HTTP. Los vectores de ataque XSS pueden estar en cualquier lugar: en la URL, en los registros, en los datos de POST, en el encabezado del agente de usuario, etc., etc.
Para ser breve, te recomiendo descargar Arachni de here , inicie arachni_web (la WebUI) y abra la URL que se mostrará antes. Podrá probar cualquier sitio web para detectar muchos problemas existentes, incluido XSS. Encuentro a Arachni muy útil.
ACTUALIZADO: si Arachni encontrará algún problema, le brindará instrucciones detalladas sobre cómo reproducir el ataque XSS en el ejemplo de alguna página de su sitio. Verá la solicitud GET o POST exacta que Arachni envía al servidor y la respuesta. Por ejemplo, encontré una URL con el formulario de búsqueda (no en mi sitio web de causa) donde existe un campo <input>
. Uno y escriba en la entrada el texto ; /bin/cat /etc/passwd ;
y el formulario mostrará el contenido de /etc/passwd
. Todo el mundo puede reproducir el problema directamente en el navegador web sin Arachni. Encuentro este ejemplo práctico mucho mejor mientras que la descripción teórica común de las formas de ataques XSS.
Lea otras preguntas en las etiquetas web-application webserver xss