Ir al contenido principal
Página

4.2.8 Lab - atacar una base de datos MySQL

Requisitos de finalización

Práctica de Laboratorio - Atacar una base de datos mySQL

Práctica de Laboratorio - Atacar una base de datos mySQL

Objetivos

En esta práctica de laboratorio verán un archivo PCAP de un ataque anterior a una base de datos SQL.

Parte 1: Abrir Wireshark y cargar el archivo PCAP.

Parte 2: Visualizar el ataque de inyección SQL.

Parte 3: El ataque de inyección SQL continúa...

Parte 4: El ataque de inyección SQL proporciona información del sistema.

Parte 5: El ataque de inyección SQL e información de tablas

Parte 6: El ataque de inyección SQL concluye.

Trasfondo/Situación

Los ataques de inyección SQL permiten que los hackers maliciosos escriban sentencias SQL en un sitio web y reciban una respuesta de la base de datos. Esto permite que los atacantes modifiquen los datos actuales de la base de datos, suplanten identidades y ejecuten malware variado.

Hemos creado un archivo PCAP para que vean un ataque anterior a una base de datos SQL. En esta práctica de laboratorio verán los ataques a la base de datos SQL y responderán las preguntas.

Recursos necesarios

= Máquina virtual Security Workstation

Instrucciones

Utilizará Wireshark, un analizador de paquetes de red común, para analizar el tráfico de red. Después de iniciar Wireshark, abrirá una captura de red ya guardada y verá un ataque de inyección SQL paso a paso contra una base de datos SQL.

Parte 1: Abrir Wireshark y cargar el archivo PCAP.

La aplicación Wireshark se puede abrir por medio de diversos métodos en una estación de trabajo de Linux.

a. Inicie la máquina virtual Security Workstation.

b.En el escritorio haga clic en Aplicaciones > CyberOPS > Wireshark y luego busque la aplicación Wireshark.

c. En la aplicación Wireshark, hagan clic en Open (Abrir) en el medio de la aplicación, en la sección Files (Archivos).

d. Vaya al directorio /home/analyst/ y busque lab. support.files. En el directorio lab.support .files abra el archivo SQL_Lab.pcap .

e. El archivo PCAP se abre dentro de Wireshark para mostrar el tráfico de red capturado. Este archivo de captura se extiende por un período de 8 minutos (441 segundos), la duración de este ataque de inyección SQL.

Captura de pantalla del archivo PCAP con el encabezado Tiempo y la última línea resaltados que indican 441 segundos totales

Pregunta:

En función de la información que aparece en pantalla, ¿cuáles son las dos direcciones IP involucradas en este ataque de inyección SQL?


Área de respuesta

Parte 2: Visualizar el ataque de inyección SQL.

En este paso visualizarán el comienzo de un ataque.

a. Dentro de la captura de Wireshark, haga clic derecho sobre la línea 13 y seleccione Follow > HTTP Stream (Seguir flujo de HTTP). Se eligió la línea 13 porque es una solicitud GET HTTP. Esto será muy útil para seguir el flujo de datos a medida que lo ven las capas de aplicación y se genera una prueba de consulta para la inyección SQL.

Captura de pantalla que muestra las opciones después de hacer clic derecho en la línea 13. Seguir > Se selecciona la secuencia HTTP.

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.

b.En el apartado Find (Encontrar) , escriba 1=1. Haga clic en Buscar siguiente.

Captura de pantalla que muestra cómo utilizar Buscar para buscar la cadena 1 = 1

c. El atacante ha ingresado una consulta (1=1) en 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.

Captura de pantalla de los resultados de introducir una consulta 1 = 1 en el objetivo 10.0.2.15. Se resalta la coincidencia de la consulta.

d. Cierre la ventana Follow HTTP Stream.

e. Haga clic en Clear display filter para mostrar toda la conversación de Wireshark.

Captura de pantalla de la opción Clear seleccionada en Wireshark.

Parte 3: El ataque de inyección SQL continúa...

En este paso visualizarán cómo prosigue un ataque.

a.Dentro de la captura de Wireshark, haga clic derecho en la línea 19, y luego haga clic en Follow > HTTP Stream.

b.En el apartado Find (Encontrar) , escriba 1=1. Haga clic en Buscar siguiente.

c. 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:

Captura de pantalla de los resultados de la consulta

El nombre de la base de datos es dvwa y su respectivo usuario es root@localhost. También se muestran varias cuentas de usuario.

d. Cierre la ventana Follow HTTP Stream.

e.Haga clic en Clear display filter para mostrar toda la conversación de Wireshark.

Parte 4: El ataque de inyección SQL proporciona información del sistema.

El atacante prosigue y comienza a buscar información más específica.

a. Dentro de la captura de Wireshark, haga clic derecho sobre la línea 22 y seleccione Follow HTTP Stream (Seguir flujo de HTTP) . El tráfico de origen se muestra en rojo, y está enviando la solicitud GET al host 10.0.2.15. En color azul, el dispositivo de destino le está respondiendo al origen.

b.En el apartado Find (Encontrar) , escriba 1=1. Haga clic en Buscar siguiente.

c. 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. Observe que es el identificador de versión se encuentra al final del resultado justo antes de

Captura de pantalla de los resultados de la consulta

Pregunta:

¿Cuál es la versión?


Área de respuesta


d. Cierre la ventana Follow HTTP Stream.

e.Haga clic en Clear display filter para mostrar toda la conversación de Wireshark.


Parte 5: El ataque de inyección SQL e información de tablas


El atacante sabe que hay gran cantidad de tablas SQL repletas de información. Trata de encontrarlas.

a.Dentro de la captura de Wireshark, haga clic derecho en la línea 25, y luego seleccione Follow > HTTP Stream. El origen se muestra en rojo. Ha enviado una solicitud GET al host 10.0.2.15. En color azul, el dispositivo de destino le está respondiendo al origen.

b.En el apartado Find , escriba users. Haga clic en Buscarsiguiente.

c. 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.

Captura de pantalla de la salida de muchas tablas.

Pregunta:

¿Cuál sería el comando modificado de ( ?1' OR 1=1 UNION SELECT null, column_name FROM INFORMATION_SCHEMA.columns WHERE table_name='users')?


Área de respuesta


d. Cierre la ventana Follow HTTP Stream.

e.Haga clic en Clear display filter para mostrar toda la conversación de Wireshark.


Parte 6: El ataque de inyección SQL concluye.

El ataque finaliza con el mejor premio posible: hashes de contraseñas.

a. Dentro de la captura de Wireshark, haga clic derecho sobre la línea 28 y seleccione Follow HTTP Stream (Seguir flujo de HTTP) . El origen se muestra en rojo. Ha enviado una solicitud GET al host 10.0.2.15. En color azul, el dispositivo de destino le está respondiendo al origen.

b. Haga clic en Find y escriba 1 =1. Busquen esta entrada. Cuando se encuentre el texto, hagan clic en Cancel (Cancelar) en el cuadro de búsqueda de texto Find.

¡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 usuario y hashes de contraseñas!

Captura de pantalla de los resultados de la consulta

Pregunta:

¿Qué usuario tiene "8d3533d75ae2c3966d7e0d4fcc69216b" como hash de su contraseña?


Área de respuesta


c. Utilice un sitio web como https://crackstation.net/ para copiar el hash de la contraseña en el decodificador de hashes de contraseñas y comenzar a decodificarlo.

Pregunta:

¿Cuál es la contraseña en texto plano (plain-text)?


Área de respuesta

d. Cierre la ventana Follow HTTP Stream. Y cerrar todas las ventanas abiertas.

Preguntas de reflexión

1. ¿Cuál es el riesgo de hacer que las plataformas utilicen el lenguaje SQL?


Área de respuesta


2.Realice una búsqueda en internet sobre "Evitar ataques de inyección SQL". ¿Cuáles son 2 métodos o pasos que se pueden utilizar para evitar ataques de inyección SQL?


Área de respuesta



Fin del documento