Docente: Víctor Araneda Serrano
Laboratorio N°15
“Ataques contra Aplicaciones Web”
Objetivo: Conocer las técnicas de Hacking más utilizadas en la industria para evaluar la seguridad de aplicaciones
web con herramientas Open Source.
Descripción de la Actividad:
La inyección de SQL es un tipo de ataque que se realiza en aplicaciones web vulnerables, donde se aplican funciones,
donde un sitio web con una vulnerabilidad en vez de responder con error, entrega información sobre la base de datos
en sí. En esta experiencia, el estudiante realizará en primera instancia un análisis a una captura de Wireshark donde
existió un ataque de inyección SQL y en la segunda parte generará la inyección de SQL y comandos a una página
web de pruebas para determinar este tipo de amenaza.
Instrucciones:
• Realizar la siguiente guía de laboratorio, realizando cada requerimiento paso a paso.
• Obtener capturas de pantallas, según los pasos en los cuales sean solicitados, en un documento Word.
• Responder las preguntas que sean solicitadas.
• Una vez finalizado el laboratorio, adjuntar el documento por la actividad, según lo indicado por el
docente.
Actividad a Realizar:
1.- La experiencia de laboratorio utilizará el siguiente diagrama de red.
2.- Antes de encender máquina virtual CyberOps Workstations, configurar el Adaptador de Red 1 en “Modo Puente”,
no olvidar renovar la dirección MAC, una vez efectuado esto proceder a iniciar la máquina virtual.
3.- Logearse en la máquina virtual, con el usuario analyst y contraseña cyberops
4.- En el escritorio, hacer clic en Applications > CyberOPS > Wireshark
5.- En la aplicación Wireshark, hacer clic en Open en el medio de la aplicación, en la sección Files.
6.- Dirigirse al directorio /home/analyst/ y seleccionar la carpeta lab.support.files. Dentro de la carpeta, abrir el
archivo SQL_Lab.pcap
7.- El archivo PCAP se abre dentro del Wireshark para mostrar el tráfico de red capturado. Este archivo de captura
se extiende por un periodo de 8 minutos (441 segundos), la duración de este ataque de inyección SQL.
• Según lo visto en su archivo PCAP. ¿Cuáles son las direcciones IPv4 que está involucradas en el ataque
de inyección SQL?
8.- Dentro de la captura de Wireshark, hacer clic derecho sobre la línea 13 y seleccionar la opción Follow HTTP
Stream (Seguir el flujo HTTP). Se elige este punto de partida porque es una solicitud GET HTTP.
9.- El tráfico de origen se muestra en rojo. El origen ha enviado una solicitud GET al host 10.0.2.15. En color azul
el dispositivo de destino le está respondiendo al origen.
10.- Hacer clic en Find y escribir 1=1 para buscar esta entrada. Cuando se encuentre el texto, hacer clic en Cancel
en el cuadro de texto Find.
11.- El atacante ha ingresado una consulta (1=1) es un cuadro de búsqueda de UserID en el destino 10.0.2.15 para
ver si la aplicación es vulnerable a la inyección SQL. En lugar de responder con un mensaje de falla en el inicio de
sesión, la aplicación respondió con un registro de la base de datos. El atacante ha verificado que puede ingresar un
comando SQL y que la base de datos le responderá. La cadena de búsqueda 1=1 crea una sentencia SQL que siempre
será verdadera. En el ejemplo no importa lo que se haya ingresado en el campo, siempre será verdadera.
12.- Procedemos a cerrar la ventana Follow HTTP Stream. Luego hacer clic en Clear para ver toda la conversación
de Wireshark.
13.- Dentro de la captura de Wireshark, hacer clic sobre la línea 19, y seleccionar Follow HTTP Stream. Luego
hacer clic en Find y escribir 1=1, buscar esa entrada, y cuando se haya localizado, hacer clic en Cancel en el cuadro
de búsqueda de texto Find.
14.- El atacante ha ingresado una consulta (1’ or 1=1 union select database (), user()#) en un cuadro de búsqueda
de ID de usuario en el destino 10.0.2.15. En lugar de responder con un mensaje de falla en el inicio de sesión, la
aplicación respondió con la siguiente información:
15.- Dentro de la información que se puede ver es el nombre de la base de datos que es dvwa y su usuario es
dvwa@localhost, además de visualizar varias cuentas de usuarios.
16.- Cerrar la ventana de Follow HTTP Stream, hacer clic en Clear para mostrar toda la conversación de Wireshark.
17.- Dentro de la captura de Wireshark, hacer clic derecho sobre la línea 22, y seleccionar Follow HTTP Stream.
Luego hacer clic en Find e introducir 1=1. Cuando encuentre el texto, hacer clic en Cancel en el cuadro de búsqueda
de texto Find.
18.- El atacante ha ingresado una consulta (1’ or 1=1 union select null, version ()#) en un cuadro de búsqueda de
ID de usuario en el destino 10.0.2.15 para localizar el identificador de la versión.
• Según en el Flujo HTTP, ¿Cuál es la versión del sistema operativo?
19.- Cerrar la ventana Follow HTTP Stream. Hacer clic en Clear para mostrar toda la conversación del Wireshark.
20.- Dentro de la captura de Wireshark, hacer clic sobre la línea 25, seleccionar Follow HTTP Stream. Hacer clic
en Find y escribir users. Buscar la entrada que se muestra a continuación.
21.- El atacante ha ingresado una consulta (1’ or 1=1 union select null, table_name from
information_schema.tables#) en un cuadro de búsqueda de ID de usuario en el destino 10.0.2.15 para ver todas las
tablas de la base de datos. Esto proporciona una enorme salida de muchas tablas, ya que el atacante especificó “null”
sin más especificaciones.
• El comando modificado 1’ OR 1=1 UNION SELECT null, column_name FROM
INFORMATION_SCHEMA.columns WHERE tables_name=’user’) ¿Qué realiza el comando
modificado?
22.- Cerrar la ventana Follow HTTP Stream. Hacer clic en Clear para mostrar toda la conversación de Wireshark.
23.- Dentro de la captura de Wireshark, hacer clic sobre la línea 28 y seleccionar Follow HTTP Stream. Hacer clic
en Find y escribir 1=1. Buscar la entrada. Cuando se encuentre el texto, hacer clic en Cancel en el cuadro de
búsqueda de texto Find.
24.- El atacante ha ingresado una consulta (1’ or 1=1 union select user, password from users#) en un cuadro de
búsqueda de ID de usuario en el destino 10.0.2.15 para obtener nombres de usuarios y hash de contraseñas.
25.- Realizar los siguientes análisis que se solicitan a continuación:
• ¿Qué usuario tiene 8d3533d75ae2c3966d7e0d4fcc69216b como hash de contraseña?
• Abrir la página web https://crackstation.net/ para copiar el hash de la contraseña en el decodificador
de hash de contraseñas. ¿Cuál es la contraseña en texto plano?
• ¿Cuál es el riesgo de hacer que las plataformas utilice el lenguaje SQL?
26.- Cerrar máquina virtual CyberOps Workstations.
27.- Antes de encender máquina virtual Metasploitable, cambiar el adaptador de red 1, a adaptado “Modo Puente”,
no olvidar de renovar la dirección MAC, para luego proceder al encendido de la misma.
28.- Cuando se haya encendido su máquina virtual, comprobar que haya recibido IPv4 del segmento del laboratorio.
29.- En su equipo base, abrir un navegador web y digitar la IPv4 entregada y dvwa, utilizando la siguiente sintaxis
de conexión: http://ipmetasploitable/dvwa El usuario es admin y la contraseña es password
30.- Vamos a modificar el nivel de seguridad de DVWA, para lo cual, seleccione DVWA Security , dentro de esa
opción, seleccionar nivel de seguridad Low y finalmente clic en Submit
31.- Ahora hacer clic en SQL Injection e ingrese los siguientes parámetros en la opción User ID
• Ingrese el parámetro 1’=’1’or’1. ¿Qué respuesta obtuvo?
• Ingrese el parámetro 3’ and 1=1 # ¿Qué respuesta obtuvo?
• Ingrese el parámetro 4’ and 1=1 # ¿Qué respuesta obtuvo?
• Ingrese el parámetro 5’ and 1=1 # ¿Qué respuesta obtuvo?
• Ingrese el parámetro 1’ and 1=0 union select null, database()# ¿Qué resultado obtuvo?
• Todo lo anterior debe ser apoyado mediante capturas de pantallas.
32.- Modifique el nivel de DVWA a nivel de seguridad medio, utilizando el procedimiento explicado en pasos
anteriores, e intente colocar algunos de los parámetros anteriormente descritos.
• ¿Qué se puede concluir del resultado obtenido con los parámetros anteriores?
• Ingrese el parámetro 1 UNION ALL SELECT first_name, password from dvwa.users; ¿Qué resultado
obtuvo?. Apoyar respuesta con captura de pantalla.
33.- Volver a modificar el nivel de DVWA a nivel de seguridad bajo, utilizando el procedimiento anterior.
34.- Ahora en SQL Injection, ingrese los siguientes comandos:
• Ingrese el parámetro 1’ and 1=0 union select null, database()# ¿Qué resultado obtuvo?
• Ingrese el parámetro 1 UNION ALL SELECT first_name, password from dvwa.users; ¿Qué resultado
obtuvo?
• Todo lo anterior debe ser apoyado mediante captura de pantallas.
35.- Hacer clic en la opción de XSS Reflect
36.- En el recuadro de la aplicación, realizar lo siguiente:
• Ingresar su nombre, ¿Qué resultado obtuvo?
37.- Ahora ingresar el siguiente frame en el recuadro del XSS, <iframe src="http://www.duoc.cl"></iframe>
• Genere una captura de pantalla con el resultado obtenido.
38.- Ahora ingresar a la opción de XSS Store
39.- Escriba en el campo Name un titulo que desee, en Mesagge escribir el frame <iframe
src="http://www.duoc.cl"></iframe>, una vez terminado clic en Sign Guestbook
• Genere una captura de pantalla con el resultado obtenido.
40.- Finalmente, hacer clic en la opción de Command Execution
41.- Escriba en el recuadro la dirección IPv4 8.8.8.8
• Genere una captura de pantalla con el resultado obtenido
42.- Para concluir, ingrese los siguientes comandos, y observe los resultados obtenidos. Todos los comandos
ingresados deben tener una captura de pantalla con el resultado obtenido.
• Ingrese el comando 1|ls -la, indique cuál es el resultado.
• Ingrese el comando 1|whoami, indique cuál es el resultado.
• Ingrese el comando 1|uname -a, indique cuál es el resultado.
• Ingrese el comando 1|cat /etc/passwd, indique cuál es el resultado.
• Ingrese el comando 1|pf -ef | grep ftp, indique cuál es el resultado.
• Ingrese el comando 1| hostname, indique cuál es el resultado.