javascript injection tutorial
¿Qué es la inyección de Javascript?
Javascript es una de las tecnologías más populares y se usa más ampliamente para páginas web y aplicaciones web.
Se puede utilizar para realizar diferentes funcionalidades de sitios web. Sin embargo, esta tecnología puede traer algunos problemas de seguridad, que el desarrollador y el evaluador deben tener en cuenta.
Javascript se puede usar no solo para buenos propósitos sino también para algunos ataques maliciosos. Uno de ellos es la inyección de JavaScript. La esencia de JS Injection es inyectar el código Javascript, que se ejecutará desde el lado del cliente.
En este tutorial, aprenderemos más sobre cómo verificar si la inyección de JavaScript es posible, cómo se puede realizar la inyección de JS y cuáles son las consecuencias que puede traer la inyección de JS.
Lo que vas a aprender:
- Riesgos de la inyección de JavaScript
- ¿Por qué es importante probar JS Injection?
- Comparación con otros ataques
- Comprobando la inyección de JavaScript
- Modificación de parámetros
- Modificación del diseño del sitio web
- Cómo probar la inyección de JavaScript
- Posible protección contra este ataque
- Conclusión
- Lectura recomendada
Riesgos de la inyección de JavaScript
JS Injection ofrece muchas posibilidades para que un usuario malintencionado modifique el diseño del sitio web, obtenga información del sitio web, cambie la información del sitio web que se muestra y manipule los parámetros (por ejemplo, cookies). Por lo tanto, esto puede ocasionar daños graves al sitio web, filtración de información e incluso piratería.
El objetivo principal de JS Injection es cambiar la apariencia del sitio web y manipular los parámetros. Las consecuencias de JS Injection pueden ser muy diferentes, desde dañar el diseño del sitio web hasta acceder a la cuenta de otra persona.
¿Por qué es importante probar JS Injection?
Muchos se preguntarían si las pruebas para JS Injection son realmente necesarias.
La comprobación de las vulnerabilidades de JS Injection es parte de las pruebas de seguridad. Las pruebas de seguridad generalmente se realizan solo si se incluyeron en la planificación del proyecto, ya que requiere tiempo, mucha atención y verificación de múltiples detalles.
He notado que durante la realización del proyecto es bastante común omitir las pruebas contra posibles ataques, incluida JS Injection. De esta forma, los equipos intentan ahorrar tiempo al proyecto. Sin embargo, esta práctica suele terminar con las quejas de los clientes.
Debe saberse que las pruebas de seguridad son muy recomendables incluso si no están incluidas en los planes del proyecto. Se debe realizar una verificación de los principales ataques posibles; al mismo tiempo, debe verificar las posibles vulnerabilidades de JS Injection.
Dejando Javascript simple Vulnerabilidades de inyección en el producto puede costar la calidad del producto y la reputación de la empresa. Siempre que he aprendido a realizar pruebas contra posibles ataques y, en general, pruebas de seguridad, nunca me salto esta parte de las pruebas. De esta manera, estoy más seguro de la calidad del producto.
Comparación con otros ataques
Cabe mencionar que JS Injection no es tan riesgoso como Inyección SQL , ya que se realiza en el lado del cliente y no llega a la base de datos del sistema como sucede durante el ataque de inyección SQL. Además, no es tan arriesgado como el ataque XSS.
Durante este ataque, a veces, solo se puede cambiar la apariencia del sitio web, mientras que el objetivo principal del ataque XSS es piratear los datos de inicio de sesión de otros.
Sin embargo, JS Injection también puede causar daños graves al sitio web. No solo puede destruir la apariencia del sitio web, sino que también puede convertirse en una buena base para piratear los datos de inicio de sesión de otras personas.
Comprobando la inyección de JavaScript
Cuando esté comenzando a probar con JS Injection, lo primero que debe hacer es verificar si JS Injection es posible o no. Verificar este tipo de posibilidad de inyección es muy fácil: cuando se navega al sitio web, debe ingresar el código de barras de la dirección del navegador como este:
javascript: alert ('¡Ejecutado!');

Si aparece una ventana emergente con el mensaje '¡Ejecutado!', El sitio web es vulnerable a la inyección de JS.

Luego, en la barra de direcciones del sitio web, puede probar varios comandos de Javascript.
Cabe mencionar que JS Injection no solo es posible desde la barra de direcciones del sitio web. Hay varios otros elementos del sitio web que pueden ser vulnerables a JS Injection. Lo más importante es conocer exactamente las partes del sitio web que pueden verse afectadas por la inyección de JavaScript y cómo comprobarlo.
Los objetivos típicos de JS Injection son:
- Varios foros
- Campos de comentarios del artículo
- Libros de visitas
- Cualquier otro formulario donde se pueda insertar texto.
Para probar si este ataque es posible para el formulario de guardado de texto, a pesar de proporcionar texto normal, escriba el código Javascript como se menciona a continuación y guarde el texto en el formulario y actualice la página.
javascript: alert ('¡Ejecutado!');
Si en la página recién abierta incluye un cuadro de texto con el mensaje '¡Ejecutado!', Entonces este tipo de ataque de inyección es posible para el formulario probado.
Si de ambas formas aparece un cuadro de texto con el mensaje, puede intentar romper el sitio web con métodos de inyección JS más complicados. Luego puede probar diferentes tipos de inyección: modificación de parámetros o modificación de diseño.
Por supuesto, la modificación de parámetros se considera más riesgosa que la modificación del diseño. Por lo tanto, durante las pruebas se debe prestar más atención a la modificación de los parámetros.
Además, debe tenerse en cuenta que las partes del sitio web más vulnerables para la inyección de JavaScript son los campos de entrada, donde se guarda cualquier tipo de datos.
Modificación de parámetros
Como se mencionó anteriormente, uno de los posibles daños de la inyección de JavaScript es la modificación de parámetros.
Durante este ataque de inyección, un usuario malintencionado puede obtener información de parámetros o cambiar cualquier valor de parámetro( Ejemplo ,configuración de cookies). Esto puede generar riesgos bastante graves, ya que un usuario malintencionado puede obtener contenido confidencial. Este tipo de inyección se puede realizar utilizando algunos comandos de Javascript.
Recordemos que el comando de Javascript que devuelve la cookie de sesión actual está escrito en consecuencia:
javascript: alerta (document.cookie);
Ingresado en la barra de URL del navegador, devolverá una ventana emergente con las cookies de la sesión actual.

Si el sitio web utiliza cookies, podemos leer información como la identificación de la sesión del servidor u otros datos del usuario almacenados en las cookies.
Cabe mencionar que en lugar de alert () se puede utilizar cualquier otra función de Javascript.
Por ejemplo ,si hemos encontrado un sitio web vulnerable, que almacena el ID de sesión en el parámetro de cookie 'session_id'. Entonces podemos escribir una función, que cambie la identificación de la sesión actual:
javascript: void (document.cookie = “session_id =<>“);
De esta forma, se cambiará el valor de la identificación de la sesión. Además, también es posible cualquier otra forma de cambiar los parámetros.
Por ejemplo, un usuario malintencionado desea iniciar sesión como otras personas. Para realizar el inicio de sesión, el usuario malintencionado primero cambiará la configuración de las cookies de autorización a verdadera. Si la configuración de las cookies no se establece como 'verdadera', el valor de la cookie se puede devolver como 'indefinido'.
algoritmo de ordenación por inserción c ++
Para cambiar esos valores de cookies, un usuario malintencionado actuará de acuerdo con el comando de Javascript de la barra de URL dentro del navegador:
javascript: void (document.cookie = 'autorización = verdadero');

En el resultado, el parámetro de cookies actual autorización = falso se cambiará a autorización = verdadero. De esta forma, un usuario malintencionado podrá acceder al contenido sensible.
Además, hay que mencionar que a veces el código Javascript devuelve información bastante sensible.
javascript: alerta (document.cookie);
Por ejemplo, Si el desarrollador de un sitio web no fue lo suficientemente cauteloso, también puede devolver nombres y valores de parámetros de nombre de usuario y contraseña. Luego, dicha información se puede utilizar para piratear el sitio web o simplemente cambiar el valor del parámetro sensible.
Por ejemplo, con el siguiente código podemos cambiar el valor del nombre de usuario:
javascript: void (document.cookie = ”username = otherUser”);
De esta forma también se puede modificar el valor de cualquier otro parámetro.
Modificación del diseño del sitio web
Javascript también se puede utilizar para modificar el formulario de cualquier sitio web y, en general, el diseño del sitio web.
Por ejemplo, con Javascript puede cambiar cualquier información que se muestre en el sitio web:
- Texto mostrado.
- Antecedentes del sitio web.
- Aspecto del formulario del sitio web.
- Aspecto de la ventana emergente.
- La apariencia de cualquier otro elemento del sitio web.
Por ejemplo, para cambiar la dirección de correo electrónico que se muestra en el sitio web, se debe usar el comando de Javascript apropiado:
javascript: void (document.forms (0) .email.value =”test@test.com”) ;

También son posibles otras pocas manipulaciones complicadas con el diseño del sitio web. Con este ataque también podemos acceder y cambiar la clase CSS del sitio web.
Por ejemplo, si queremos cambiar la imagen de fondo del sitio web con JS Injection, entonces el comando debe ejecutarse en consecuencia:
javascript: void (documento. background-image: url ('otra-imagen.jpg');

Además, un usuario malintencionado puede escribir el código de inyección de Javascript que se menciona a continuación en el formulario de inserción de texto y guardarlo.
javascript: void (alert ('¡Hola!'));
Luego, cada vez que se abre una página, aparecerá un cuadro de texto con el mensaje '¡Hola!'.
El diseño del sitio web modificado con inyección de JavaScript es menos riesgoso que la modificación de parámetros. Sin embargo, si el diseño del sitio web se modifica de forma maliciosa, puede costar la reputación de la empresa.
Cómo probar la inyección de JavaScript
Puede probarse de las siguientes formas:
- A mano
- Con herramientas de prueba
- Con complementos de navegador
Las posibles vulnerabilidades de Javascript se pueden verificar manualmente si tiene un buen conocimiento de cómo se debe realizar. Además, se puede probar con varias herramientas de automatización.
Por ejemplo, Si ha automatizado sus pruebas a nivel de API con la herramienta SOAP UI, también es posible ejecutar pruebas de inyección de JavaScript con IU de SOAP .
Sin embargo, solo puedo comentar desde mi propia experiencia, que realmente debería haber tenido un buen conocimiento sobre la herramienta SOAP UI para probarla para JS Injection, ya que todos los pasos de prueba deben escribirse sin errores. Si algún paso de prueba está escrito incorrectamente, también puede causar resultados de prueba de seguridad incorrectos.
Además, puede encontrar varios complementos del navegador para verificar posibles ataques. Sin embargo, se recomienda no olvidar verificar este ataque manualmente, ya que generalmente arroja resultados más precisos.
Me gustaría decir que probar manualmente contra la inyección de JavaScript me hace sentir más seguro y seguro acerca de la seguridad del sitio web. De esta manera, puede estar seguro de que no se perdió ningún formulario durante la prueba y de que todos los resultados serán visibles para usted.
Para probar la inyección de Javascript, debe tener conocimientos generales sobre Javascript y saber qué partes del sitio web son más vulnerables. Además, debe recordar que el sitio web puede estar protegido contra JS Injection y mientras lo prueba debe intentar romper esta protección.
De esta manera, estará seguro de si la protección contra este ataque es lo suficientemente fuerte o no.
Posible protección contra este ataque
En primer lugar, para prevenir este ataque, se deben validar todas las entradas recibidas. La entrada debe validarse cada vez, y no solo cuando los datos se aceptan inicialmente.
Se recomienda no depender de la validación del lado del cliente. Además, se recomienda realizar una lógica importante en el lado del servidor.
Muchos intentan protegerse contra la inyección de Javascript cambiando las comillas al doble y el código Javascript no debe realizarse de esa manera.
Por ejemplo, si escribe en el campo de comentarios cualquier cosa con comillas ..., esas comillas se reemplazarán con doble -<>…<>. De esta forma no se ejecutará el código Javascript introducido.
He notado que reemplazar las comillas por comillas dobles es una práctica bastante común para evitar posibles ataques de inyección de JS. Sin embargo, hay algunas formas de codificar las comillas para realizar el código de inyección de JS. Por lo tanto, cambiar las comillas al doble no es una forma perfecta de protegerse contra este ataque.
Conclusión
Siempre hay que tener en cuenta que Javascript Injection es uno de los posibles ataques contra sitios web, ya que Javascript es una de las tecnologías más utilizadas para los sitios web. Por lo tanto, al probar sitios web o cualquier otra tecnología web, no debe olvidarse de realizar pruebas contra este ataque.
Al realizar pruebas de seguridad, no se debe olvidar JS Injection. Algunas personas consideran que esta prueba es un ataque menos riesgoso, ya que se realiza en el lado del cliente.
Sin embargo, es un enfoque incorrecto y siempre debemos recordar que la inyección de Javascript puede causar daños graves al sitio web, como la filtración de información confidencial, el cambio de parámetros o la piratería de las cuentas de los usuarios.
Por lo tanto, debemos considerar esto como una parte importante de las pruebas y es parte de la inversión para la reputación de la empresa y de un buen producto.
La prueba de JS Injection no es muy difícil. En primer lugar, debe tener conocimientos generales sobre Javascript y debe saber cómo verificar si este ataque es posible para la solución web actual o no.
Además, mientras realiza las pruebas, debe recordar que un sitio web puede tener protección contra este tipo de ataque, pero puede ser demasiado débil; también debe verificarse. Otra cosa importante para recordar es que existen diferentes tipos de ataques de inyección de Javascript y ninguno de ellos debe olvidarse para probarlo.
¿Ha realizado pruebas de inyección de Javascript? Estaremos encantados de saber de usted, no dude en compartir sus experiencias en la sección de comentarios a continuación.
Lectura recomendada
- Tutoriales detallados de Eclipse para principiantes
- Cómo configurar el marco de prueba de Node.js: Tutorial de Node.js
- Tutorial de inyección de HTML: tipos y prevención con ejemplos
- Tutorial de pruebas de inyección de SQL (ejemplo y prevención del ataque de inyección de SQL)
- Tutorial de reflexión de Java con ejemplos
- Tutorial de SVN: Gestión de código fuente con Subversion
- Tutorial de Python DateTime con ejemplos
- Tutorial de Tortoise SVN: Revisiones en el repositorio de código