En esta serie, estamos analizando cómo proteger nuestros proyectos de WordPress desde XSS o secuencias de comandos entre sitios. En el primer artículo de la serie, definimos qué son realmente las secuencias de comandos entre sitios, cómo se entiende y por qué es peligroso..
También pasamos un tiempo discutiendo cómo esto afecta nuestros esfuerzos diarios de desarrollo de WordPress y qué podemos hacer al respecto. Aunque hay algunas funciones que WordPress tiene disponibles para ayudar a validar y sanear los datos, hay más trabajo que podemos hacer para asegurar nuestros proyectos..
En este artículo final, vamos a echar un vistazo a algunos consejos prácticos que podemos seguir y algunas pruebas que podemos administrar para asegurar nuestro trabajo contra los ataques XSS..
En términos generales, la forma en que prueba las vulnerabilidades de las secuencias de comandos entre sitios en su sitio es en cualquier lugar del sitio o la aplicación que acepte comentarios del usuario..
Obviamente, esto vendrá en forma de campos de entrada, áreas de texto o similares..
Si el sitio no realiza el saneamiento y / o la validación adecuados, entonces normalmente tendrá éxito en encontrar exploits; sin embargo, si el sitio es administrando adecuadamente los datos entrantes, entonces es probable que no vea ningún resultado por sus esfuerzos.
Echemos un vistazo a varios casos que podemos administrar en nuestros propios sitios (o incluso en otros, aunque ese ¡bajo tu propio riesgo!).
Una de las primeras cosas que podemos hacer para localizar una vulnerabilidad es intentar inyectar algún código que determine si existe o no una vulnerabilidad.
El código en cuestión es el siguiente:
'; alert (String.fromCharCode (88,83,83)) //'; alert (String.fromCharCode (88,83,83)) // "; alert (String.fromCharCode (88,83,83)) / /";alert(String.fromCharCode(88,83,83))//-->"> '>
Coloque este código en cualquier campo de entrada y envíelo.
Si una vulnerabilidad hace existe, entonces se emitirá la palabra "XSS". Si no se devuelve, entonces es probable que estés a salvo (aunque esto no se puede garantizar al 100%); Sin embargo, si se genera, es probable que esto signifique que existe una vulnerabilidad que usted, o alguien más malicioso, puede explotar..
En el último artículo, discutimos la política del mismo origen que básicamente dicta que un sitio no debería poder solicitar activos de ningún dominio que no sea aquel en el que reside actualmente.
Para intentar ejecutar código desde un servidor remoto, o un servidor que está no parte del mismo origen - puede ejecutar el siguiente código:
">
Tenga en cuenta que el prefijo para el caso de prueba es no un error. Se requiere para probar realmente la vulnerabilidad.. Si realmente existe una vulnerabilidad, luego se mostrará una cookie del navegador del dominio remoto; de lo contrario, no verá nada o su consola puede devolver un mensaje sobre la política del mismo origen.
Atrezzo a Janne por esta táctica en particular..
Finalmente, una de las vulnerabilidades más conocidas es tratar de ejecutar código JavaScript dentro de un atributo de un 'img
etiqueta.
Por ejemplo, creando un elemento como:
Revelaría una vulnerabilidad que en realidad mostraría un diálogo de alerta con 'XSS' como mensaje en lugar de una imagen rota real.
Simple, ¿no es así? Sin embargo, solo se necesita una vulnerabilidad para exponer un exploit.
La cosa es que esto es. sólo la punta del iceberg en relación con las pruebas XSS. De hecho, se necesitaría un wiki completo para ayudar a documentar las diversas vulnerabilidades que existen.
De hecho, eso es exactamente lo que el Seguridad de aplicaciones web abiertas El proyecto se propuso hacer: documentar las diversas vulnerabilidades de XSS que existen y cómo probarlas. Puede visitar la lista completa, ver la definición de los ataques y cómo administrarlos..
¡Pero eso no es todo! A medida que surgen nuevas tecnologías, como HTML5, hay muchas cosas adicionales que debemos tener en cuenta.
Aunque puede parecer un poco extraño que un lenguaje de marcado pueda ser susceptible a ataques de scripts entre sitios, tiene sentido, especialmente considerando algunos de los atributos que permiten los elementos más nuevos..
Caso en punto:
formación
atributo que puede ejecutar JavaScriptenfocado
atributo que también puede ejecutar JavaScriptpóster
atributo que también puede ejecutar JavaScriptPor supuesto, no todos estos son aplicables a cada navegador, pero es importante saberlos para que pueda probarlos correctamente en los navegadores relevantes..
Dicho esto, puede encontrar una hoja de trucos HTML5 completa de vulnerabilidades conocidas y los navegadores relevantes en el sitio de seguridad HTML5.
Uno de los sitios de recursos XSS de mayor duración en la web es Ha.ckers.org y tienen una calculadora de hojas de trucos XSS especialmente útil.
En pocas palabras, además de ofrecer un diccionario de vulnerabilidades conocidas, su calculadora codificará automáticamente su XSS en varios tipos de codificación diferentes, como hexadecimal, decimal, Base64, etc., para que también pueda intentar inyectar aquellos traducciones a su aplicación.
Después de todo, la mitad de la seguridad es asegurarse de que todos los tipos de entrada se desinfecten, escapen y validen adecuadamente, no solo el caso base.
Obviamente, el campo de los scripts entre sitios está lleno de vulnerabilidades que no se limitan a un solo navegador, y mucho menos a una única versión del navegador. Afortunadamente, hay un montón de recursos, hojas de trucos, instrucciones y otros materiales educativos disponibles no solo para mantenernos al tanto de lo que existe, sino también de cómo podemos programar defensivamente en su contra..
Y aunque este artículo está específicamente dirigido a los desarrolladores de WordPress, las tácticas y técnicas trascienden a WordPress y son aplicables a cualquiera que esté creando aplicaciones web..
Finalmente, me gustaría agradecer a Janne Ahlberg por inspirar el contenido de esta serie. Es un especialista en seguridad que realiza una gran cantidad de trabajo XSS que reporta a Envato, por lo que si está interesado en este tema, especialmente en lo que respecta a la promoción de su trabajo en uno de los mercados de Envato, le recomiendo seguir su blog..