vulnerabilidad de XSS en el chat [cerrado]

1

Recientemente me convertí en el administrador de seguridad de un sitio web. No soy un maestro de la seguridad, pero tuve la oportunidad de entender cómo funciona la seguridad hoy en día.

El sitio web tiene una función de chat, y me preguntaba "¿Es este chat vulnerable al XSS?" Así que traté de ver qué caracteres se escapan porque, dado que el chat es un prefabricado, nadie puede decirme cómo funciona. Encontré que el < > se escapan, sin embargo puedo usar el comando: [img]www.anywbsite.com/image.jpg[/img] y mostrará una vista previa de la imagen en el chat.

De esta manera parece bastante seguro, el problema es que puedo poner cualquier URL, incluso las URL que no existen, siempre que tenga una "www" y una ".com" al final se ejecutará El comando.

Me estaba preguntando, ¿hay alguna forma de que pueda formar una url en un script? o algo por el estilo.

    
pregunta lohug 06.02.2017 - 08:09
fuente

3 respuestas

2

La especificación dice que el atributo src debe llevar a Contenido sin guiones y no interactivo, por lo que parece seguro dejar cualquier URI allí.

  

El atributo src debe estar presente y debe contener una URL válida que no esté vacía, potencialmente rodeada por espacios que hagan referencia a un recurso de imagen no interactivo, opcionalmente animado que no esté paginado ni programado.

Sin embargo, esto significa que puede insertar un URI en su propio sitio web y usarlo para rastrear un poco a los usuarios. Lo aseguraría con una lista blanca de dominios permitidos.

También, puede usarlo para falsificar la lectura humana del chat (por ejemplo: captura de pantalla de un chat donde el administrador está gritando, insértelo como la imagen y el chat puede parecer un administrador que grita). No conozco protección contra esto, pero la moderación humana (ya que es una "inyección de lectura humana").

Por último, para resumir el CSRF, no es un problema relacionado con el chat si se puede insertar una URL como http://targeted.com/doSomething?on=this_user : es un uso incorrecto del método HTTP GET por el sitio web targeted.com , no del chat.

Fuera del problema de los URI, escapar de < y > no es suficiente: las comillas también deben escaparse, siempre y cuando algunas otras entidades HTML (usando funciones integradas integradas como htmlentities para PHP). ¿Intentó insertar comillas dobles " o comillas simples ' o backticks '' 'o espacios para salir del valor del atributo src ?

    
respondido por el Xenos 06.02.2017 - 13:44
fuente
2

XSS

Si el chat es vulnerable a XSS o no, depende de lo que haga exactamente el software de chat con la cadena que colocaste en la etiqueta [img] . Presumiblemente, lo puso en el atributo src de una etiqueta HTML img . Por lo que sé, el control total del atributo src no le brinda la capacidad de ejecutar scripts, pero aún podría haber algunas cosas que podría intentar:

  • Si la URL no está correctamente filtrada o codificada, intente algo como www.doesnotexist.com" onerror="alert('XSS');" .com .
  • Si la URL no está citada, es posible que pueda sortear un filtro simplemente no utilizando ninguna cita.
  • Si la imagen está envuelta en una etiqueta a para que se pueda hacer clic, por lo que la URL termina también en un atributo href , podría intentar javascript:alert('XSS'); . No se cargará ninguna imagen, pero si el receptor la pulsa, se ejecutará el script. ( Editar: Acabo de notar el www.*.com requierment. No creo que puedas hacer que este punto funcione según esa regla).

Probablemente hay más cosas que puedes probar también. Inspeccione el HTML de salida del chat e intente diferentes entradas para tratar de averiguar qué está pasando detrás de las cortinas.

Otros problemas

Solo los mencionaré brevemente, ya que su pregunta es sobre XSS:

  • Privacidad. Esto podría usarse para obtener la IP de la persona con la que estás chateando. (Simplemente envíeles una URL a una imagen en un servidor que usted controla, luego verifique los registros).
  • CSRF. Consulte la respuesta de Rápli András . No estoy seguro de que me importe esto, ya que no es un problema con tu chat.
  • contraseña eliminada. Envíe una URL para una imagen protegida por autenticación básica, y el receptor recibirá una contraseña emergente. Se puede usar para engañar a las personas para que ingresen sus credenciales para el chat.
respondido por el Anders 06.02.2017 - 13:24
fuente
0
  

sin embargo, puedo usar el comando [img] www.anywbsite.com/image.jpg [/ img], y mostrará una vista previa de la imagen en el chat

Esto no es XSS, pero es una mala práctica y hace que su sitio web pueda participar en ataques CSRF.

Cuando una imagen se carga previamente, se envía una solicitud HTTP GET a esa URL, por lo que, como ejemplo de libro, un atacante podría intentar:

http://onlinebank.com/[email protected]&amount=2000&currency=USD

Una vez más, no es una vulnerabilidad en su sitio web, pero los atacantes pueden hacer que usted sea el origen de todas las solicitudes maliciosas maliciosas para el banco en línea vulnerable. Por lo tanto, recomiendo desactivar la función de precarga de imágenes, o hacer que se carguen las imágenes de su sitio web solamente.

Editar: también funciona con la URL de tu sitio web si no usas tokens csrf.

    
respondido por el Rápli András 06.02.2017 - 08:25
fuente

Lea otras preguntas en las etiquetas