Inyección de código JavaScript

Autor: | Última modificación: 3 de noviembre de 2023 | Tiempo de Lectura: 3 minutos
Temas en este post: ,

Algunos de nuestros reconocimientos:

Premios KeepCoding

¿Sabes qué es la inyección de código JavaScript y por qué representa un riesgo para los usuarios de aplicaciones web con vulnerabilidades?

El pentesting web es una tarea que consiste en ejecutar técnicas de hacking con el fin de encontrar fallos de seguridad en aplicaciones y determinar sus niveles de riesgo. Para ello, es necesario conocer cómo funcionan los principales ciberataques dirigidos a entornos web.

Una herramienta muy útil para familiarizarse con los ataques más comunes de la web es la lista de OWASP Top 10, que determina cuáles son los diez principales ciberataques usados por los hackers maliciosos para vulnerar aplicaciones web. Según esta lista (que fue actualizada por última vez en 2021) la inyección de código ocupa el tercer lugar.

La inyección de código es un tipo de ciberataque web que consiste en accionar comandos dentro de la aplicación, el servidor o el navegador de una víctima por medio de la explotación de una vulnerabilidad. Sin embargo, existen diferentes tipos de inyección de código, como:

En este post, hablaremos en particular sobre la inyección de código JavaScript y cuál es su impacto sobre sus víctimas. A continuación, te explicaremos en qué consiste esta técnica de hacking web y por qué es peligrosa para los usuarios de las aplicaciones web con fallos.

Inyección de código JavaScript

La inyección de código JavaScript sirve para ejecutar funciones dentro del navegador de la víctima por medio de una aplicación web que presente determinados fallos de seguridad. Sin importar el lenguaje de programación en el que haya sido desarrollada la aplicación, todos los navegadores son capaces de interpretar comandos de JavaScript. Por eso, este tipo de inyección afecta directamente a los clientes que ingresan en una aplicación vulnerada.

Cross-site scripting (XSS)

El método más común para hacer inyeccion de codigo JavaScript en el navegador de una víctima es el cross-site scripting (XSS). Este ciberataque consiste en ejecutar comandos en este lenguaje por medio de inputs del lado del cliente que no estén lo suficientemente validados.

🔴 ¿Quieres entrar de lleno a la Ciberseguridad? 🔴

Descubre el Ciberseguridad Full Stack Bootcamp de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp en Ciberseguridad por una semana

Es decir, las vulnerabilidades de XSS se basan en una falta de validación de los inputs de los usuarios y varían según donde se encuentren estas entradas. Por eso, existen tres tipos de XSS:

  • XSS reflejado: el payload se ejecuta por medio de un link en el navegador de la víctima.
  • XSS persistente: el payload se almacena en una página del sitio web y se ejecuta en el navegador de todo aquel que lo visite.
  • XSS basado en DOM: el payload se inyecta en el Document Object Model, una API que sirve para representar todos los objetos del sitio web en forma de árbol jerárquico en el lado del cliente.

Ejemplo de XSS

Un ejemplo de inyección de código JavaScript por medio de un ataque XSS puede ser visto en un entorno legal de práctica de hacking web, como DVWA. Esta aplicación, diseñada a propósito con vulnerabilidades, nos sirve para demostrar cómo se puede ejecutar código JavaScript por medio de un input sin validación:

Inyección de código JavaScript 1
javascript injection cheat sheet

En este caso, hemos puesto el siguiente código en la entrada, que le indica al navegador que muestre una alerta con el mensaje «ejemplo».

//inyeccion de codigo malicioso
<script>alert('ejemplo')</script>

Al enviar la petición, dado que DVWA es una aplicación vulnerable por defecto, se verá el siguiente resultado:

Inyección de código JavaScript 2

Del mismo modo, es posible ejecutar cualquier tipo de código en el navegador, como pedirle, por ejemplo, que enseñe el token de sesión del usuario, entre más acciones.

¿Cómo aprender más?

Ya hemos visto qué es la inyección de código JavaScript y cómo puede afectar a los usuarios una app con vulnerabilidades. Si quieres aprender mucho más sobre técnicas de hacking web, en KeepCoding tenemos un curso intensivo ideal para ti. Ingresa a nuestro Ciberseguridad Full Stack Bootcamp y conviértete en todo un especialista en tan solo 7 meses. ¡Pide ahora más información y da el paso que impulsará tu carrera!

[email protected]