Está en la página 1de 30

Nro.

DD-106
Ethical Hacking y Analisis Forense Página 1/30
Código
:
Semestre
Tema: SQL Injection : VI
Grupo
: G-H
Lab.
Nota: Apellidos y Nombres: Nº : 10

Ethical Hacking y Analisis Forense


LABORATORIO N° 11

SQL Injection

CODIGO DEL CURSO:

Alumno(s) Nota
Ballon Cutimbo Flor

Fecha de
Nro. DD-106
Ethical Hacking y Analisis Forense Página 2/30
Código
:
Semestre
Tema: SQL Injection : VI
Grupo
: G-H
Lab.
Nota: Apellidos y Nombres: Nº : 10

entrega
Nro. DD-106
Ethical Hacking y Analisis Forense Página 3/30
Código
:
Semestre
Tema: SQL Injection : VI
Grupo
: G-H
Lab.
Nota: Apellidos y Nombres: Nº : 10

1. OBJETIVOS:
● Conocer la metodología SQL Injection
● Documentar la metodología de SQL Injection.

2.EQUIPOS:
● PC compatible con Windows XP.

3.Seguridad:

Advertencia:

No consumir alimentos ni bebidas durante el desarrollo de la


sesión del laboratorio.

El equipo que esta por utilizar, es susceptible a daño eléctrico


por mala manipulación y/o carga electroestática.

4.Documentación:
Desarrolle un check list de los puntos a revisar para una análisis de una página
web

Lista de verificación
Lista de comprobación…

CHECKLIST INYECCION SQL


✔ Supervisar las modificaciones automáticas en las aplicaciones.
✔ Usar declaraciones preparadas (consultas parametrizadas).
✔ Codificación hexadecimal de todas las entradas
✔ Asegurar que la aplicación no genere ningún mensaje de error externo.
✔ Limitar el tamaño de los campos
Instalar sistemas de detección de Intrusiones (IDS) o sistemas de
✔ prevención de instrucciones (IPS).
✔ Utilizar módulos mysqli o PDO.
✔ Prevenir manipulación de parámetros.
✔ Validación de entrada y aceptar solo caracteres de una lista permitida de
Nro. DD-106
Ethical Hacking y Analisis Forense Página 4/30
Código
:
Semestre
Tema: SQL Injection : VI
Grupo
: G-H
Lab.
Nota: Apellidos y Nombres: Nº : 10

valores seguros.
✔ Utilizar procedimientos almacenados.
✔ Controlar los valores de retorno de los métodos.
✔ Minimizar los desbordamientos de búfer.
Filtrar las entradas de usuario mediante listas blancas en vez de listas
✔ negras.
Minimizar los privilegios asignados a cada cuenta de base de datos en su
✔ entorno.
Utilice LIMIT y otros controles SQL dentro de las consultas para evitar la

fuga masiva de registros en caso de inyección SQL.
Utilizar una API segura, que evite el uso de un intérprete por completo y

proporcione una interfaz parametrizada.

Desarrolle las buenas prácticas a seguir para prevenir el ataque de SQL


Injection.

 Algunos detalles para la prevención de ataques de SQL injection


son:

● Revisión de código
Es un proceso de revisión manual o automatizada del código de una
aplicación web, con el objetivo de buscar problemas de seguridad.

Si se realiza un análisis de código utilizando herramientas


automatizadas con pruebas manuales el resultado en la detección de
errores es muy efectivo, el análisis manual tiene como objetivo
entender el contexto y lógica del código. Mientras que el análisis
automático aumenta la efectividad en revisión de tareas repetitivas
dentro del código, como determinar si se está siguiendo un estándar
de codificación por ejemplo.
Nro. DD-106
Ethical Hacking y Analisis Forense Página 5/30
Código
:
Semestre
Tema: SQL Injection : VI
Grupo
: G-H
Lab.
Nota: Apellidos y Nombres: Nº : 10

● Evitar usar variables en la URL

En lo posible se debe usar variables dentro de la página URL, o en


cookies haciendo que sea un poco más laborioso para el atacante
encontrar la variable e inyectar código.

● Sentencias preparadas

La mayoría de lenguaje de programación permite el uso de


sentencias preparadas en donde se crea la sentencia con parámetros
de ingreso y luego se asigna valora estos parámetros, el interprete
del lenguaje entiende que todo los caracteres que contiene el
parámetro debe ser tratado como uno solo, y coloca
automáticamente los caracteres de es-cape.

● Asignar mínimos privilegios al usuario que conectará con la


base de datos:

El usuario que utilicemos para conectarnos a la base de datos desde


nuestro código debe tener los privilegios justos para realizar las
acciones que necesitemos. No utilizar nunca un usuario root con
acceso a todas las bases de datos ya que de esta forma estaremos
dando facilidades a los hackers para que puedan acceder a toda la
información.

● Escapar los caracteres especiales utilizados en las consultas


SQL:
Nro. DD-106
Ethical Hacking y Analisis Forense Página 6/30
Código
:
Semestre
Tema: SQL Injection : VI
Grupo
: G-H
Lab.
Nota: Apellidos y Nombres: Nº : 10

Al hablar de “escapar caracteres” estamos haciendo referencia a


añadir la barra invertida “\” delante de las cadenas utilizadas en las
consultas SQL para evitar que estas corrompan la consulta.

Algunos de estos caracteres especiales que es aconsejable escapar


son las comillas dobles (“), las comillas simples (‘) o los caracteres
\x00 o \x1a ya que son considerados como peligrosos pues pueden
ser utilizados durante los ataques.

Los distintos lenguajes de programación ofrecen mecanismos para


lograr escapar estos caracteres. En el caso de PHP podemos optar por
la función mysql_real_scape_string(), que toma como parámetro una
cadena y la modifica evitando todos los caracteres especiales,
devolviéndola totalmente segura para ser ejecutada dentro de la
instrucción SQL.

En lo posible en las páginas web se debe colocar en los input, cuadros


de lista, para que los usuarios solo puedan seleccionar datos
predefinidos, esto no es posible leer las variables de acuerdo al tipo
definido en la base de datos y enviar esto como un solo campo es
decir para campos tipo cadena se debe enviar entre comilla simple o
doble según el lenguaje de base de datos,asegurando que si existiera
dentro de una se-cuencia de caracteres estos símbolos se realice el
respectivo escape para que sea tomado co-mo parte de la cadena y no
de la sentencia.

● Utilice declaraciones preparadas:

Las declaraciones preparadas son una forma de realizar consultas a


bases de datos de manera más segura y confiable. La idea es que en
Nro. DD-106
Ethical Hacking y Analisis Forense Página 7/30
Código
:
Semestre
Tema: SQL Injection : VI
Grupo
: G-H
Lab.
Nota: Apellidos y Nombres: Nº : 10

lugar de enviar la consulta sin procesar a la base de datos, primero le


decimos a la base de datos la estructura de la consulta que
enviaremos. Esto es lo que queremos decir con "preparar" una
declaración.

Una vez que se prepara una declaración, pasamos la información


como entradas parametrizadas para que la base de datos pueda
"llenar los vacíos" conectando las entradas a la estructura de consulta
que enviamos antes. Esto elimina cualquier poder especial que
puedan tener las entradas, lo que hace que se traten como meras
variables (o cargas útiles, si se quiere) en todo el proceso.

https://www.owasp.org

5.Practica:
Abra la página http://35.153.255.120/ utilice el usuario: admin
password:contraseña, cambie el nivel dificultad a bajo, para ello haga clic en
DVWA Security > Security Level > Low.

Aplique la técnica de SQL Injection para poder tener control del formulario.

Esta vulnerabilidad consiste en inyectar código SQL invasor dentro del


código SQL programado con el objetivo de alterar la funcionalidad del
programa. Este tipo de intrusión normalmente es de carácter
malicioso y, por tanto, un problema de seguridad informática.

La intrusión se puede llevar a cabo al ejecutar un programa


vulnerable, ya sea, en ordenadores de escritorio o bien en sitios Web.

La vulnerabilidad se puede producir cuando el programador use


parámetros a ingresar por parte del usuario, para realizar una
Nro. DD-106
Ethical Hacking y Analisis Forense Página 8/30
Código
:
Semestre
Tema: SQL Injection : VI
Grupo
: G-H
Lab.
Nota: Apellidos y Nombres: Nº : 10

consultar de la base de datos. En esos parámetros es donde se puede


incluir el código SQL intruso para que sea ejecutado en dicha consulta.

El objetivo más común del código intruso es extraer toda la


información posible de la base de datos, aunque tienen más usos
como puede ser el iniciar sesión con la cuenta otro usuario, subir una
shell al servidor, etc.
Nro. DD-106
Ethical Hacking y Analisis Forense Página 9/30
Código
:
Semestre
Tema: SQL Injection : VI
Grupo
: G-H
Lab.
Nota: Apellidos y Nombres: Nº : 10

 Entramos a la opción “DVWA Security” y configuramos el nivel de las


pruebas como “Bajo”. Finalmente, presionamos el botón “Submit”
Nro. DD-106
Ethical Hacking y Analisis Forense Página 10/30
Código
:
Semestre
Tema: SQL Injection : VI
Grupo
: G-H
Lab.
Nota: Apellidos y Nombres: Nº : 10

 En el nivel de seguridad low el código fuente vulnerable es el que

se muestra a continuación:
Nro. DD-106
Ethical Hacking y Analisis Forense Página 11/30
Código
:
Semestre
Tema: SQL Injection : VI
Grupo
: G-H
Lab.
Nota: Apellidos y Nombres: Nº : 10

 DVWA muestra un formulario donde se podrá escribir el número


identificativo (ID) de un usuario de la base de datos, devolviendo el

script su nombre y apellidos.

 Una forma rápida y sencilla de ver si la página tiene una vulnerabilidad


del tipo SQL Injection es introducir una comilla simple, en el caso de
tener este tipo de vulnerabilidad va a devolver un error de SQL:
Nro. DD-106
Ethical Hacking y Analisis Forense Página 12/30
Código
:
Semestre
Tema: SQL Injection : VI
Grupo
: G-H
Lab.
Nota: Apellidos y Nombres: Nº : 10

 Se observa que el mensaje devuelto por el servidor es que hay un


error de sintaxis en la consulta de SQL, por lo tanto es vulnerable
y se puede proceder con una inyección.

 Para probar la vulnerabilidad de esta página probamos la inyección


con 1' OR 1=1--' donde nos mostrara todos los usuarios que hay en la
base de datos:
Nro. DD-106
Ethical Hacking y Analisis Forense Página 13/30
Código
:
Semestre
Tema: SQL Injection : VI
Grupo
: G-H
Lab.
Nota: Apellidos y Nombres: Nº : 10

Además es importante saber la versión de MySQL ya que se podría


facilitar la inyección. Cada versión tiene sus propias peculiaridades y
funciones. Por ejemplo, para observar la versión de la base de datos la
inyección sería la siguiente:

' union all select 1,@@VERSION-- '

La consulta nos indica que la version de MySQL es la 5.5.


Nro. DD-106
Ethical Hacking y Analisis Forense Página 14/30
Código
:
Semestre
Tema: SQL Injection : VI
Grupo
: G-H
Lab.
Nota: Apellidos y Nombres: Nº : 10

Abra la página http://35.153.255.120/ utilice el usuario: admin


password:contraseña, cambie el nivel dificultad a medio, para ello haga clic en
DVWA Security > Security Level > Medium.
Nro. DD-106
Ethical Hacking y Analisis Forense Página 15/30
Código
:
Semestre
Tema: SQL Injection : VI
Grupo
: G-H
Lab.
Nota: Apellidos y Nombres: Nº : 10

Aplique la técnica de SQL Injection para poder tener control del formulario.

 En el nivel de seguridad medium el código difiere del anterior en que


la ID es filtrada con la función mysql_real_scape_string(), para
escapar de los símbolos especiales \ x00, \ n, \ r ,, ', ", \ x1a, y al
mismo tiempo, se establece un formulario de selección desplegable
en la página principal.
Nro. DD-106
Ethical Hacking y Analisis Forense Página 16/30
Código
:
Semestre
Tema: SQL Injection : VI
Grupo
: G-H
Lab.
Nota: Apellidos y Nombres: Nº : 10

 En el nivel medio la aplicación es casi idéntica a la del nivel bajo


excepto que no podemos ingresar la identificación del usuario nosotros
mismos, tenemos que usar una lista desplegable.
Nro. DD-106
Ethical Hacking y Analisis Forense Página 17/30
Código
:
Semestre
Tema: SQL Injection : VI
Grupo
: G-H
Lab.
Nota: Apellidos y Nombres: Nº : 10

 Como hay un cuadro de entrada, usamos burpsuite para


capturar paquetes y modificar parámetros.

 Debido a que el nivel intermedio no puede transmitir dvwa y


usuarios en texto sin cifrar, se cambia a hexadecimal

 Para aprovechar la vulnerabilidad, podemos intentar omitir la


lista desplegable y modificar la solicitud enviada directamente
en Burp Suite. Para ello hacemos clic derecho sobre la solicitud
enviada en Proxy> Historial HTTP y enviamos la solicitud al
repetidor.
Nro. DD-106
Ethical Hacking y Analisis Forense Página 18/30
Código
:
Semestre
Tema: SQL Injection : VI
Grupo
: G-H
Lab.
Nota: Apellidos y Nombres: Nº : 10

A partir de ahí modificamos la solicitud para probar algunas


inyecciones. Podemos hacer clic derecho en el área de texto y
seleccionar URL encode as you type y dejamos que la aplicación
maneje la codificación de URL por nosotros. Probé la siguiente
inyección 1 OR 1 = 1#.

 El servidor ejecutó nuestra solicitud y seleccionó y mostró a cada


usuario.

1.Reto (6 puntos): A través de la herramienta SQLMap intente


tener acceso a la base de datos de la pagina Web.

● Sqlmap es una herramienta desarrollada en python para realizar


inyección de código sql automáticamente. Su objetivo es detectar y
aprovechar las vulnerabilidades de inyección SQL en aplicaciones
web. Una vez que se detecta una o más inyecciones SQL en el host de
destino, el usuario puede elegir entre una variedad de opciones entre
ellas, enumerar los usuarios, los hashes de contraseñas, los
Nro. DD-106
Ethical Hacking y Analisis Forense Página 19/30
Código
:
Semestre
Tema: SQL Injection : VI
Grupo
: G-H
Lab.
Nota: Apellidos y Nombres: Nº : 10

privilegios, las bases de datos, o todo el volcado de tablas / columnas


específicas del DBMS , ejecutar su propio SQL SELECT, leer archivos
específicos en el sistema de archivos y mucho más. SQLmap es muy
eficaz y proporciona muchas capacidades a los probadores de
penetración ayudándoles a ejecutar consultas automáticamente en la
base de datos en orden. para enumerar y extraer datos de él. Para
esta prueba usare sqlmap para explotar la vulnerabilidad de inyección
SQL en la DVWA (Damn Vulnerable Web Application).

 Mediante Kali Linux usare la herramienta sqlmap que viene ya


instalado:
Nro. DD-106
Ethical Hacking y Analisis Forense Página 20/30
Código
:
Semestre
Tema: SQL Injection : VI
Grupo
: G-H
Lab.
Nota: Apellidos y Nombres: Nº : 10

2. documente el proceso.

● Para esta prueba primero establecí el nivel de seguridad DVWA a un


nivel "low" para la perpetración del ataque en SQLmap.
Nro. DD-106
Ethical Hacking y Analisis Forense Página 21/30
Código
:
Semestre
Tema: SQL Injection : VI
Grupo
: G-H
Lab.
Nota: Apellidos y Nombres: Nº : 10

Para que el sqlmap haga el trabajo correctamente, necesitamos


especificar algunos parámetros. Primero que todo, debemos proporcionar
la URL exacta que queremos probar. El parámetro en el sqlmap que se
debe usar es el -u , asi que copie de la aplicación web la URL que vamos a
probar y pegarla en el sqlmap
Luego necesitamos especificar la cookie, usamos esta opción en los casos
en que la aplicación web requiera autenticación como DVWA, entonces
tomaremos la cookie que lo podemos extraer desde el codigo fuente de la
pagina y la pondremos en el sqlmap también.También pondremos el
parámetro –dbs que descubrirá las bases de datos que se están
ejecutando:
Nro. DD-106
Ethical Hacking y Analisis Forense Página 22/30
Código
:
Semestre
Tema: SQL Injection : VI
Grupo
: G-H
Lab.
Nota: Apellidos y Nombres: Nº : 10

Ahora podemos ver cuál fue el resultado de esta prueba:

 Entonces, sqlmap descubrió que la base de datos que se ejecuta detrás


de la aplicación es MySQL, el sistema operativo, la tecnología de la
aplicación web, la versión de MySQL y, por supuesto, el número y los
nombres de la base de datos que existe.
Nro. DD-106
Ethical Hacking y Analisis Forense Página 23/30
Código
:
Semestre
Tema: SQL Injection : VI
Grupo
: G-H
Lab.
Nota: Apellidos y Nombres: Nº : 10

 El siguiente comando que debemos utilizar es intentar hacer la huella


digital de la base de datos para saber la versión exacta, el parámetro -f
en sqlmap nos dará el siguiente resultado:
Nro. DD-106
Ethical Hacking y Analisis Forense Página 24/30
Código
:
Semestre
Tema: SQL Injection : VI
Grupo
: G-H
Lab.
Nota: Apellidos y Nombres: Nº : 10

 Conocer la versión exacta de la base de datos nos permitirá buscar las


vulnerabilidades comunes que puedan afectar a la base de datos.
También se puede recuperar la versión de la base de datos y desde el
banner con el parámetro -b .
Nro. DD-106
Ethical Hacking y Analisis Forense Página 25/30
Código
:
Semestre
Tema: SQL Injection : VI
Grupo
: G-H
Lab.
Nota: Apellidos y Nombres: Nº : 10

Luego lo que hice es darle los parámetros necesarios para descubrir lo


siguiente:

● El usuario actual
● El nombre de host
● Si el usuario actual es dba
● La base de datos actual

 Como podemos ver en la imagen hemos obtenido con éxito la


información que pedimos, ahora necesitamos encontrar los usuarios
y sus hashes de contraseña así como sus privilegios y roles que
tienen en la base de datos, esto es importante porque se puede usar
este tipo de información para acceder a la base de datos
directamente en caso de que se pueda descifrar los hash. SQLMap
también proporciona esta funcionalidad, pero en nuestro caso
SQLMap descubrió que para las cuentas root, guest y debian-sys-
maint no se ha establecido ninguna contraseña y la cuenta raíz tiene
privilegios administrativos.
Nro. DD-106
Ethical Hacking y Analisis Forense Página 26/30
Código
:
Semestre
Tema: SQL Injection : VI
Grupo
: G-H
Lab.
Nota: Apellidos y Nombres: Nº : 10
Nro. DD-106
Ethical Hacking y Analisis Forense Página 27/30
Código
:
Semestre
Tema: SQL Injection : VI
Grupo
: G-H
Lab.
Nota: Apellidos y Nombres: Nº : 10

 Luego de tener todas las cuentas de la base de datos a nuestra


disposición y el conocimiento de que estas cuentas se ejecutan con
privilegios de DBA,se proporcionará ser propietarios a la aplicación.
Para lograr esto necesitaremos extraer datos de la base de datos
dvwa. El sqlmap con el parámetro –tables puede enumerar las tablas
de todas las bases de datos que existen.

 La
base de
Nro. DD-106
Ethical Hacking y Analisis Forense Página 28/30
Código
:
Semestre
Tema: SQL Injection : VI
Grupo
: G-H
Lab.
Nota: Apellidos y Nombres: Nº : 10

datos dvwa como podemos ver en la salida anterior tiene solo dos
tablas: el libro de visitas y los usuarios. Intente enumerar las
columnas de estas tablas con el parámetro –columns en el sqlmap.

 La tabla interesante son los usuarios porque, como podemos ver en la


captura de pantalla, tiene una columna con el nombre contraseña que
puede contener hashes de contraseña o incluso mejores contraseñas
en formato de texto claro.
Nro. DD-106
Ethical Hacking y Analisis Forense Página 29/30
Código
:
Semestre
Tema: SQL Injection : VI
Grupo
: G-H
Lab.
Nota: Apellidos y Nombres: Nº : 10

 Como podemos ver en la imagen, sqlmap descubrió hashes de


contraseña en la contraseña de la columna y los descifró con éxito
mediante un ataque de diccionario. Ahora tenemos las contraseñas
junto con los nombres de usuario de los usuarios de DVWA, lo que
significa que la base de datos y la aplicación han sido comprometido
por completo.

Observaciones:
● Para poder realizar el ataque a través de la herramienta
SQLMAP,debía de primero obtener la url y el cookie de sesión de la
página para una mejor perpetración de la base de datos.
Nro. DD-106
Ethical Hacking y Analisis Forense Página 30/30
Código
:
Semestre
Tema: SQL Injection : VI
Grupo
: G-H
Lab.
Nota: Apellidos y Nombres: Nº : 10

● Pude reconocer mediante los códigos de inyección, diferentes


métodos para poder obtener la base de datos de la página , en el caso
de cuando la seguridad está en estado low .

● Era necesario configurar el Proxy del navegador (Firefox en mi caso) y


verificar que en Burpsuite este la dirección del localhost para que
haya comunicación entre los dos y se puedan obtener las solicitudes.

● En mi caso primero antes de poder explotar la vulnerabilidad ,me


asegure que la página si fuera vulnerable a este ataque de sql
injection, mediante la proporción de algún carácter que no
corresponda a un parámetro para la inyección.

Conclusiones:
● En este laboratorio pude conocer 1 tipo más de vulnerabilidad: SQL
injection, y explorar su funcionamiento a través de códigos y
aplicaciones nuevas, me permitió conocer más sus funcionalidades y
métodos para poder comprobar las vulnerabilidades que presentan.

● SQL Injection es una de las más peligrosas vulnerabilidades, ya que


pone en riesgo la privacidad de usuarios en bases de datos.

● La identificación de vulnerabilidades de inyección de SQL es


fundamental para garantizar la seguridad de las aplicaciones web.

● SQLmap es una herramienta gratuita y de código abierto que se


utiliza para detectar y aprovechar las vulnerabilidades de inyección
de SQL. Tiene una gran característica, que es el procesamiento
automatizado de detección y utilización (huellas dactilares de la
base de datos, acceso al sistema de archivos subyacente y
ejecución de comandos).

También podría gustarte