XSS: Tipo de contenido: aplicación / json

4

Información de fondo
- La aplicación responde a la solicitud a una URL en particular con content-type: application/json

  • La respuesta JSON contiene un parámetro de la solicitud
  • Escapa de la cita con una barra inclinada
  • No hace una evaluación en respuesta
  • Responde a solicitudes que no tienen X-Requested-With: XMLHttpRequest (es decir, si pegas directamente la URL con parámetros en la barra de direcciones)

Pregunta:

¿Hay alguna manera de hacer un XSS exitoso en la aplicación?

Por favor, siéntase libre de editar la pregunta si no está clara

    
pregunta Sachin Kumar 16.04.2012 - 15:59
fuente

3 respuestas

4

XSS basado en Dom todavía es posible. En este caso, su JavaScript podría estar escribiendo una salida sin personalizar en la página.

Hay otros problemas de seguridad con este diseño.

Me aseguraría de que su API no responda a las solicitudes que carecen del encabezado X-Requested-With: XMLHttpRequest . Esto se debe a que todavía tiene que dirigirse a robo de datos json así como CSRF. Se debe tener en cuenta que tanto en el robo de datos json como en el csrf la solicitud no se realiza con un XHR, por lo que la verificación de X-Requested-With: XMLHttpRequest sería una defensa válida. Verificar el Referente HTTP también se puede usar para mitigar ambos ataques <. / p>

Si necesita autenticación para acceder a la totalidad o parte de esta API JSON, debe usar HTTPS o estará violando owasp a9

    
respondido por el rook 16.04.2012 - 17:28
fuente
3

Si puedo hacer algunas suposiciones (ver más abajo), esto parece estar bien en los navegadores modernos. No sé de ninguna vulnerabilidad de XSS.

Suposiciones:

  1. Los datos no confiables (del parámetro URL) solo se insertan en un contexto de valor JSON entre comillas, nunca en ningún otro lugar. No se inserta como un valor sin comillas. No se inserta en una clave.

  2. El servidor no realiza ningún efecto secundario u otras acciones cuando solicita los datos JSON. (Esto significa que no debe preocuparse por los ataques CSRF).

  3. No hay datos confidenciales en ninguna parte de esta estructura de datos JSON. (No es relevante para XSS, pero sí para el robo de datos JSON, como lo explica @Rook).

  4. La aplicación no tiene ninguna vulnerabilidad XSS del lado del cliente (también conocida como XSS basada en DOM).

respondido por el D.W. 16.04.2012 - 21:37
fuente
2

Una cosa en que pensar es que en IE el tipo de contenido puede y será ignorado si el navegador rastrea las primeras líneas de texto y determina que se vea como html. Nos topamos con esto todo el tiempo. Entonces, si, por ejemplo, tienes algunos json pero en esa respuesta puedo obtener etiquetas HTML. El navegador verá esto y dirá: Oh, ya veo, creo que esto debería ser HTML. En ese punto se ejecutaría la carga útil. Incluso si el tipo de contenido no era texto / html.

    
respondido por el tyweed 21.04.2012 - 19:56
fuente

Lea otras preguntas en las etiquetas