Sólo estoy probando un ataque de inyección XSS básico. Dadas las imágenes a continuación, ¿parece que este sitio web es vulnerable a XSS?
¿La lista blanca de personajes sigue siendo la mejor práctica contra los ataques XSS?
En sus capturas de pantalla, esta página no parece ser vulnerable a XSS.
La forma correcta de evitar XSS es mediante codificación de salida . Si un usuario escribe <script>
y la página coloca <script>
en la fuente HTML, es vulnerable a XSS. Si en cambio codifica esa entrada del usuario y coloca <script>
en la fuente HTML, no se interpreta como HTML sino como el texto <script>
.
Parece que su sitio realiza esta codificación dos veces en lugar de una, y esto hace que se muestre el código HTML codificado en los campos de texto.
El ejemplo dentro de la pregunta parece mostrar que están impidiendo que las etiquetas se usen al apuntarlas. P.ej. <script>
se convierte en <script>
. Sin embargo, si UTF lo codifica y luego SQL lo codifica en otra cosa, no es técnicamente seguro. Por lo tanto, se puede usar un tipo diferente de método de inyección, que es un inyección SQL y se puede explotar con valores hexadecimales, como se muestra a continuación:
Primero, elige algo para codificar:
Estosecodificaráparaformaresto:
Luegopuedesllevaracaboelataque:
AquíhayunejemplodeestodeOWASP,cuandosepruebaunaposibleinyección:
Selectuserfromuserswherename=unhex('726F6F74')
Aquísemuestra'raíz'comoelvalorhexadecimal726F6F74
Sources:
HTML.Encode():
Inyección SQL: enlace
Ejemplo 1 de OWASP: enlace
Evasión de OWASP: enlace
Puede encontrar otro ejemplo aquí: enlace
Lea otras preguntas en las etiquetas web-application xss