1
SQL inyección
Edwin Antonio Mex Chan
Universidad Tecnológica Metropolitana
Ciberseguridad
Alejandro Concha Uicab
02 de febrero de 2023
2
Tabla de contenido
Introduccion ............................................................................................................ 3
Demostracion ......................................................................................................... 4
Sql injection ............................................................................................................ 8
Sin proxy ............................................................................................................. 8
Herramienta Burpsuite .......................................................................................11
Conclusión ........................................................................................................... 15
3
Introduccion
La técnica de SQL Injection es un tipo de ataque a aplicaciones web que explota
una vulnerabilidad de seguridad en la forma en que se construyen las consultas SQL. La
técnica consiste en insertar código malicioso en los parámetros de entrada de una
consulta SQL, con el objetivo de obtener información confidencial o realizar acciones no
autorizadas en la base de datos.
En la mayoría de los casos, el ataque de SQL Injection se realiza mediante la
manipulación de campos de entrada en formularios web, como por ejemplo en un campo
de búsqueda o de inicio de sesión. Al introducir código malicioso en estos campos, el
atacante puede engañar al sistema para que ejecute consultas SQL maliciosas en la base
de datos subyacente.
En esta actividad veremos cómo funciona esta vulnerabilidad en una pagina
alojada en una máquina virtual de metasploitable2 en la cual haremos uso de la
herramienta de BurpSuit en nuestra máquina virtual de Kali Linux para previsualizar lo
que se esta vulnerabilidad logra hacer en diferentes niveles de seguridad.
4
Demostracion
Para poder hacer una demostración pri modificamos el archivo “[Link]” de la
maquina Metasploitbale2 en la ruta /var/www/mutillidae/[Link].
Modificamos el dato del parámetro ‘dbname’ para que usemos ‘owasp10’ y
guardamos cambios con ctrl+x y luego enter
Luego escribimos el comando ‘ifconfig’ en nuestra máquina de Kali y para asi
poder saber la dirección IP.
5
Posteriormente realizamos un mapeo en nuestra maquina Kali a la red para ver
que puertos y servicios están habilitados.
Podemos observar que hay una dirección IP que tiene un puerto 80 habilitado y si
comprobamos la dirección IP de nuestra máquina de Metasploitable2 es la misma.
6
Luego abrimos el buscador del navegador y colocamos la dirección IP que
pudimos observar en el mapeo, y nos dirigiremos a Mutillidae.
A continuación, ingresaremos al sistema de base de datos de Metasploitable2 por
medio de Kali para analizar el contenido de algunas tablas. Con el siguiente comando:
Mysql –h [Link] -u root -p (el apartado de -h depende según su IP de
Metasploitable2 y si en dado caso exista una contraseña con -p se coloca sino pues solo
le damos en enter).
Veamos las bases de datos existentes. Con el comando “show databases;”.
7
Usuamos la base de datos de “owasp10” con el comando “use owasp10;”. Y
vemos las tablas creadas con el comando “show tables;”.
Observamos el contenido de la tabla “accounts” con el comando “select * from
accounts;”.
Como podemos observar, el usuario “Monkey” tiene como username “admin” y
como password “adminpass”.
8
Iniciaremos sesión en la página de Mutillidae con esas credenciales de
autentificación.
Y como podemos observar, iniciamos sesión de correcta con el usuario Monkey!.
Ahora intentaremos realizarlo mediante consultas de inyección SQL.
Sql injection
Sin proxy
Usando una consulta de inyección SQL ingresaremos al sistema pasando por alto
la contraseña o el nombre de usuario.
Abriremos nuestro programa CherryTree en cual crearemos nuestros scripts de
consultas de SQL Injection.
9
Utilizaremos el parámetro ($aaa’ or 1=1 #) para poder brincar la seguridad del
inicio desesión, solo pondremos el apartado de contraseña con ese dato.
Y como podemos observar ingresamos al sistema sin ingresar un unsername,
solo conuna consulta de SQL Injecttion.
10
Ahora intentaremos lo mismo, pero poniendo el parámetro (admin’ #’) en el
apartado deusername sin poner una contraseña.
De igual manera ingreso al sistema evadiendo el apartado de contraseña, solo
con unaconsulta de SQL Injection en el apartado de username.
11
Herramienta Burpsuite
Para poder realizar esta práctica dificultaremos las cosas, como primer paso,
subiremosel nivel de seguridad de Mutillidae a 1.
Si intentamos realizar las consultas anteriores, serán rechazadas pue slos
niveles deseguridad han incrementado en los inputs de texto.
12
Para lograr el SQL Injection de esta manera, como primer paso abriremos
nuestroBurpsuite y nos dirigimos a la sección de proxy.
Abrimos el navegador de Burpsuite dando clic en “Open Browser”. Y nos
dirigimos alapartado de Loguin de Mutillidae.
13
En el campo de entrada de username ingresaremos el comando de SQL
Injection anterior, pero antes de dar clic en “Login” activaremos las intercepciones del
navegador paraque quede de la siguiente manera.
Al momento de dar clic en “Login” recibiremos en el Burpsite todo lo que
enviamos en lapetición que realizamos.
14
Modificaremos los siguientes valores de la consulta y pondemos luego de
“username=”el parámetro de SQL Injection (admin' #'), quedando de la siguiente
manera.
Ahora daremos clic en la opción de “Forwad”.
Y veremos cómo nos da acceso al sistema.
15
Conclusión
En conclusión, la técnica de SQL Injection es una amenaza significativa para la
seguridad de las aplicaciones web y las bases de datos subyacentes. Es importante que
los desarrolladores de software y los administradores de sistemas tomen medidas para
protegerse contra esta vulnerabilidad, implementando técnicas de validación y
sanitización de datos de entrada, así como mediante el uso de herramientas de detección
y prevención de SQL Injection.
Los usuarios también pueden tomar medidas para protegerse, como asegurarse
de utilizar contraseñas seguras y no compartir información personal o confidencial en
formularios web que no estén protegidos adecuadamente contra este tipo de ataques.
En general, la prevención de SQL Injection es una responsabilidad compartida
entre los desarrolladores de software, los administradores de sistemas y los usuarios
finales, y se requiere una combinación de medidas técnicas y de conciencia de seguridad
para minimizar el riesgo de una violación de seguridad a través de esta técnica.