Seguridad AJAX

Javascript y XML asíncronos (AJAX) es una de las últimas técnicas utilizadas para desarrollar aplicaciones web con el fin de brindar una experiencia de usuario rica. Dado que es una nueva tecnología, hay muchos problemas de seguridad que aún no se han establecido y a continuación se muestran los pocos problemas de seguridad en AJAX.

  • La superficie de ataque es mayor ya que hay más entradas que asegurar.

  • También expone las funciones internas de las aplicaciones.

  • No proteger la información y las sesiones de autenticación.

  • Existe una línea muy estrecha entre el lado del cliente y el lado del servidor, por lo que existen posibilidades de cometer errores de seguridad.

Ejemplo

Aquí hay un ejemplo de seguridad AJAX:

En 2006, un gusano infectó el servicio de correo de Yahoo utilizando XSS y AJAX que aprovechó una vulnerabilidad en el manejo de eventos de carga de Yahoo Mail. Cuando se abrió un correo electrónico infectado, el gusano ejecutó su JavaScript, enviando una copia a todos los contactos de Yahoo del usuario infectado.

Las manos en

Step 1- Necesitamos intentar agregar más recompensas a su conjunto permitido de recompensas mediante la inyección de XML. A continuación se muestra la instantánea del escenario.

Step 2- Asegúrese de que interceptamos tanto la solicitud como la respuesta utilizando Burp Suite. Configuración de la misma que se muestra a continuación.

Step 3- Ingrese el número de cuenta como se indica en el escenario. Podremos obtener una lista de todas las recompensas para las que somos elegibles. Somos elegibles para 3 recompensas de 5.

Step 4- Ahora hagamos clic en 'Enviar' y veamos qué obtenemos en el XML de respuesta. Como se muestra a continuación, las tres recompensas que somos elegibles se nos pasan como XML.

Step 5 - Ahora editemos esos XML y agreguemos las otras dos recompensas también.

Step 6- Ahora todas las recompensas se mostrarán al usuario para que las seleccione. Seleccione los que agregamos y haga clic en 'Enviar'.

Step 7 - Aparece el siguiente mensaje que dice: "* Felicitaciones. Ha completado con éxito esta lección".

Mecanismos preventivos

Lado del cliente -

  • Utilice .innerText en lugar de .innerHtml.
  • No use eval.
  • No confíe en la lógica del cliente para la seguridad.
  • Evite escribir código de serialización.
  • Evite crear XML de forma dinámica.
  • Nunca transmita secretos al cliente.
  • No realice el cifrado en el código del lado del cliente.
  • No ejecute lógica que afecte a la seguridad en el lado del cliente.

Lado del servidor -

  • Utilice protección CSRF.
  • Evite escribir código de serialización.
  • Los usuarios pueden llamar a los servicios directamente.
  • Evite construir XML a mano, use el marco.
  • Evite construir JSON a mano, use un marco existente.