SQL Injection - Charruacharrua.org/presentaciones/LeandroPintos_CharruaCon_SQLi.pdf~# Distintos...
Transcript of SQL Injection - Charruacharrua.org/presentaciones/LeandroPintos_CharruaCon_SQLi.pdf~# Distintos...
![Page 1: SQL Injection - Charruacharrua.org/presentaciones/LeandroPintos_CharruaCon_SQLi.pdf~# Distintos tipos de inyecciones SQL SQLi y no morir en el intento • Inyección SQL Ciega (Blind](https://reader034.fdocuments.in/reader034/viewer/2022042123/5e9e9e6951e4ee41272e920d/html5/thumbnails/1.jpg)
SQLInjection
1ºEdición-11y12deMayoMontevideo,Uruguay
![Page 2: SQL Injection - Charruacharrua.org/presentaciones/LeandroPintos_CharruaCon_SQLi.pdf~# Distintos tipos de inyecciones SQL SQLi y no morir en el intento • Inyección SQL Ciega (Blind](https://reader034.fdocuments.in/reader034/viewer/2022042123/5e9e9e6951e4ee41272e920d/html5/thumbnails/2.jpg)
• LeandroPintosa.k.al34r00t• Pentester@MkitArgentina• Colaboradoren:
~#Sobremí
SQLiynomorirenelintentoSQLInjection
http://www.andsec.org/
![Page 3: SQL Injection - Charruacharrua.org/presentaciones/LeandroPintos_CharruaCon_SQLi.pdf~# Distintos tipos de inyecciones SQL SQLi y no morir en el intento • Inyección SQL Ciega (Blind](https://reader034.fdocuments.in/reader034/viewer/2022042123/5e9e9e6951e4ee41272e920d/html5/thumbnails/3.jpg)
•Elcontenidoexpuestoenlasiguientepresentaciónes exclusivamente de carácter educativo para quelospresentesconozcanlagravedaddeunataquedeSQLInjectionycómoprotegersedelmismo.
•Loaprendidoenestacharlaesparaquelopuedanreplicar en sus laboratorios privados, y asíaprendercómoprotegersusaplicacionesweb.
SQLiynomorirenelintento
~#Disclaimer
SQLInjection
![Page 4: SQL Injection - Charruacharrua.org/presentaciones/LeandroPintos_CharruaCon_SQLi.pdf~# Distintos tipos de inyecciones SQL SQLi y no morir en el intento • Inyección SQL Ciega (Blind](https://reader034.fdocuments.in/reader034/viewer/2022042123/5e9e9e6951e4ee41272e920d/html5/thumbnails/4.jpg)
• Presentación• ¿QuéesOWASP?• ¿QuéesSQLi?• Funcionamientodeunaaplicaciónweb• ¿Porquéocurrelainyección?• DistintostiposdeinyeccionesSQL• IntroducciónaconsultasSQL• Demotime;)• HerramientasparaataquesautomatizadosdeSQLi• Recomendaciones• SQLienelmundoreal• Conclusión
SQLiynomorirenelintento
~#Agenda
SQLInjection
![Page 5: SQL Injection - Charruacharrua.org/presentaciones/LeandroPintos_CharruaCon_SQLi.pdf~# Distintos tipos de inyecciones SQL SQLi y no morir en el intento • Inyección SQL Ciega (Blind](https://reader034.fdocuments.in/reader034/viewer/2022042123/5e9e9e6951e4ee41272e920d/html5/thumbnails/5.jpg)
~#¿QuéesOWASP?• ProyectoabiertodeSeguridadenAplicacionesWeb
(OpenWebApplicationSecurityProject)• Sinfinesdelucro.• Proporcionamaterialcolaborativoalacomunidad.• Soportadaatravésdedonaciones.• Promueveeldesarrollosegurodesoftware.• Crea conciencia acerca de la seguridad enaplicacionesweb.
• OWASPTop10
https://www.owasp.org/index.php/Main_Page
SQLiynomorirenelintentoSQLInjection
![Page 6: SQL Injection - Charruacharrua.org/presentaciones/LeandroPintos_CharruaCon_SQLi.pdf~# Distintos tipos de inyecciones SQL SQLi y no morir en el intento • Inyección SQL Ciega (Blind](https://reader034.fdocuments.in/reader034/viewer/2022042123/5e9e9e6951e4ee41272e920d/html5/thumbnails/6.jpg)
~#OWASPTop10
SQLiynomorirenelintentoSQLInjection
![Page 7: SQL Injection - Charruacharrua.org/presentaciones/LeandroPintos_CharruaCon_SQLi.pdf~# Distintos tipos de inyecciones SQL SQLi y no morir en el intento • Inyección SQL Ciega (Blind](https://reader034.fdocuments.in/reader034/viewer/2022042123/5e9e9e6951e4ee41272e920d/html5/thumbnails/7.jpg)
~#¿QuéesSQLi?
Es una vulnerabilidad que permite a unusuario malintencionado realizar consultasSQLdeformaarbitrariaalabasededatospormediodelaaplicaciónweb.
SQLiynomorirenelintentoSQLInjection
![Page 8: SQL Injection - Charruacharrua.org/presentaciones/LeandroPintos_CharruaCon_SQLi.pdf~# Distintos tipos de inyecciones SQL SQLi y no morir en el intento • Inyección SQL Ciega (Blind](https://reader034.fdocuments.in/reader034/viewer/2022042123/5e9e9e6951e4ee41272e920d/html5/thumbnails/8.jpg)
~#Funcionamientodeunaaplicaciónweb
SQLiynomorirenelintento
Funcionamientonormal
Servidor de Aplicaciones
Servidor de Base de Datos
El usuario realiza una petición (GET/ POST) a una pagina web.
La aplicación recibe la solicitud y realiza la consulta SQL a la Base de Datos
para obtener el resultado.
El usuario recibe el resultado mostrado por la aplicación web.
La Base de datos ejecuta la consulta SQL y devuelve el resultado a la aplicación web.
1 2
34
http://mipoc.com.ar/buscar.php?id=1
ID Articulo Precio
1 Mesa ARS500
SQLInjection
![Page 9: SQL Injection - Charruacharrua.org/presentaciones/LeandroPintos_CharruaCon_SQLi.pdf~# Distintos tipos de inyecciones SQL SQLi y no morir en el intento • Inyección SQL Ciega (Blind](https://reader034.fdocuments.in/reader034/viewer/2022042123/5e9e9e6951e4ee41272e920d/html5/thumbnails/9.jpg)
~#Funcionamientodeunaaplicaciónweb
SQLiynomorirenelintento
Funcionamientomodificado
Servidor de Aplicaciones
Servidor de Base de Datos
La aplicación recibe la solicitud y realiza la consulta SQL a la Base de Datos.
El usuario malicioso logra obtener información arbitraria de la base de datos.
La Base de datos ejecuta la consulta SQL y devuelve el resultado requerido.
1 2
34
El usuario malicioso modifica el envío GET/POST, colocando en la URL sentencias SQL.
http://mipoc.com.ar/buscar.php?id=1+sentencia_SQL
ID Articulo Precio
1 Mesa ARS500
SQLInjection
![Page 10: SQL Injection - Charruacharrua.org/presentaciones/LeandroPintos_CharruaCon_SQLi.pdf~# Distintos tipos de inyecciones SQL SQLi y no morir en el intento • Inyección SQL Ciega (Blind](https://reader034.fdocuments.in/reader034/viewer/2022042123/5e9e9e6951e4ee41272e920d/html5/thumbnails/10.jpg)
~#¿PorquéocurrelainyecciónSQL?
SQLiynomorirenelintento
Sedebeaquenoserealizauncorrectofiltradodevariables permitiendo el envío de consultas a labasededatosmediantelaaplicaciónweb.
SQLInjection
![Page 11: SQL Injection - Charruacharrua.org/presentaciones/LeandroPintos_CharruaCon_SQLi.pdf~# Distintos tipos de inyecciones SQL SQLi y no morir en el intento • Inyección SQL Ciega (Blind](https://reader034.fdocuments.in/reader034/viewer/2022042123/5e9e9e6951e4ee41272e920d/html5/thumbnails/11.jpg)
~#DistintostiposdeinyeccionesSQL
SQLiynomorirenelintento
•InyecciónSQLaformulariodeLoginSe evidencia cuando se logra realizar una sentencia sql de talmanera que enviando una expresión lógica su resultado sea unresultadoseasiempreverdadera(TRUE).Deestamaneraobtenemosunusuariovalidodelabasededatos.
SQLInjection
![Page 12: SQL Injection - Charruacharrua.org/presentaciones/LeandroPintos_CharruaCon_SQLi.pdf~# Distintos tipos de inyecciones SQL SQLi y no morir en el intento • Inyección SQL Ciega (Blind](https://reader034.fdocuments.in/reader034/viewer/2022042123/5e9e9e6951e4ee41272e920d/html5/thumbnails/12.jpg)
~#DistintostiposdeinyeccionesSQL
SQLiynomorirenelintento
•InyecciónSQLbasadaenerrores(ErrorBased)Se evidencia cuando el motor de la base de datos recibe unasentenciaquenolograprocesar,devolviendounmensajedeerror.
SQLInjection
![Page 13: SQL Injection - Charruacharrua.org/presentaciones/LeandroPintos_CharruaCon_SQLi.pdf~# Distintos tipos de inyecciones SQL SQLi y no morir en el intento • Inyección SQL Ciega (Blind](https://reader034.fdocuments.in/reader034/viewer/2022042123/5e9e9e6951e4ee41272e920d/html5/thumbnails/13.jpg)
~#DistintostiposdeinyeccionesSQL
SQLiynomorirenelintento
•InyecciónSQLCiega(BlindSQLInjection)Seevidenciacuandounawebappmuestrauncomportamientodistintoalonormaldependiendodeltipodeconsultarealizadaalabasededatos.
• Boolean-BasedSQLiApartirdelcomportamientodelarespuestadelawebappselograextraerlainformaciónenbaseavaloresTrueoFalse.
• Time-BasedSQLiSe utiliza la lógica para extraer la información de la base dedatosdependiendodeltiempoderespuestadelaconsultarealizada.
SQLInjection
![Page 14: SQL Injection - Charruacharrua.org/presentaciones/LeandroPintos_CharruaCon_SQLi.pdf~# Distintos tipos de inyecciones SQL SQLi y no morir en el intento • Inyección SQL Ciega (Blind](https://reader034.fdocuments.in/reader034/viewer/2022042123/5e9e9e6951e4ee41272e920d/html5/thumbnails/14.jpg)
IntroducciónaconsultasSQL
SQLiynomorirenelintentoSQLInjection
![Page 15: SQL Injection - Charruacharrua.org/presentaciones/LeandroPintos_CharruaCon_SQLi.pdf~# Distintos tipos de inyecciones SQL SQLi y no morir en el intento • Inyección SQL Ciega (Blind](https://reader034.fdocuments.in/reader034/viewer/2022042123/5e9e9e6951e4ee41272e920d/html5/thumbnails/15.jpg)
~#ComandosbásicosautilizarenunservidorSQL
SQLiynomorirenelintento
SELECT Seleccionalosregistrosdentrodeunatabla.
FROM Establecelatabladelacualsevanaseleccionarlosregistros.
WHERE Establecelascondicionesquedebenreunirlosregistrosquesevanaseleccionar.
UNION Uneconsultasylasconcatenaenunúnicoresultado.
ORDERBY Ordenalosregistrosseleccionadosdeacuerdoconunordenespecifico.
LIMIT UtilizadaparalimitarlosregistrosqueseretornanenunaconsultaSELECT.
SQLInjection
![Page 16: SQL Injection - Charruacharrua.org/presentaciones/LeandroPintos_CharruaCon_SQLi.pdf~# Distintos tipos de inyecciones SQL SQLi y no morir en el intento • Inyección SQL Ciega (Blind](https://reader034.fdocuments.in/reader034/viewer/2022042123/5e9e9e6951e4ee41272e920d/html5/thumbnails/16.jpg)
~#ParámetrosbásicosautilizarenunservidorSQL
SQLiynomorirenelintento
' SirveparaestablecercadenasdeltipoSTRING
; Sirveparaindicarlafinalizacióndeunasentencia.
-- Sirveparacomentarelrestodetextoenlasentencia.
+ Esutilizadoparagenerarespaciosenlaurl.
<,>,= Operadorescomparativosdedatos.
or,and Operadoreslogicos.
SQLInjection
![Page 17: SQL Injection - Charruacharrua.org/presentaciones/LeandroPintos_CharruaCon_SQLi.pdf~# Distintos tipos de inyecciones SQL SQLi y no morir en el intento • Inyección SQL Ciega (Blind](https://reader034.fdocuments.in/reader034/viewer/2022042123/5e9e9e6951e4ee41272e920d/html5/thumbnails/17.jpg)
SQLiynomorirenelintentoSQLInjection
![Page 18: SQL Injection - Charruacharrua.org/presentaciones/LeandroPintos_CharruaCon_SQLi.pdf~# Distintos tipos de inyecciones SQL SQLi y no morir en el intento • Inyección SQL Ciega (Blind](https://reader034.fdocuments.in/reader034/viewer/2022042123/5e9e9e6951e4ee41272e920d/html5/thumbnails/18.jpg)
~#AlgunasherramientasparaataquesautomatizadosdeSQLi
SQLiynomorirenelintento
http://sqlninja.sourceforge.net
http://www.sqlpowerinjector.com
http://sqlmap.org
https://github.com/BCable/sqlier
SQLInjection
![Page 19: SQL Injection - Charruacharrua.org/presentaciones/LeandroPintos_CharruaCon_SQLi.pdf~# Distintos tipos de inyecciones SQL SQLi y no morir en el intento • Inyección SQL Ciega (Blind](https://reader034.fdocuments.in/reader034/viewer/2022042123/5e9e9e6951e4ee41272e920d/html5/thumbnails/19.jpg)
SQLiynomorirenelintento
~#Recomendaciones• Verificarcorrectamenteelinputdelusuario• Aplicar filtros que eviten los caracteresespeciales
https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet
SQLInjection
![Page 20: SQL Injection - Charruacharrua.org/presentaciones/LeandroPintos_CharruaCon_SQLi.pdf~# Distintos tipos de inyecciones SQL SQLi y no morir en el intento • Inyección SQL Ciega (Blind](https://reader034.fdocuments.in/reader034/viewer/2022042123/5e9e9e6951e4ee41272e920d/html5/thumbnails/20.jpg)
SQLiynomorirenelintento~#Recomendaciones
Ejemplo:
• addslashesFunción en PHP la cual devuelve un string con barrasinvertidas, escapando comillas simples, comillas dobles,barrainvertida,yelNUL(elbyteNULL).
SQLInjection
![Page 21: SQL Injection - Charruacharrua.org/presentaciones/LeandroPintos_CharruaCon_SQLi.pdf~# Distintos tipos de inyecciones SQL SQLi y no morir en el intento • Inyección SQL Ciega (Blind](https://reader034.fdocuments.in/reader034/viewer/2022042123/5e9e9e6951e4ee41272e920d/html5/thumbnails/21.jpg)
SQLiynomorirenelintento~#Recomendaciones
Ejemplo:
• mysql_real_escape_stringEscapa caracteres especiales en una cadena para su uso enunasentenciaSQL.
• htmlentitiesConviertetodosloscaracteresaplicablesaentidadesHTML.
• preg_replaceRealizaunabúsquedaysustitucióndeunaexpresiónregular.
SQLInjection
![Page 22: SQL Injection - Charruacharrua.org/presentaciones/LeandroPintos_CharruaCon_SQLi.pdf~# Distintos tipos de inyecciones SQL SQLi y no morir en el intento • Inyección SQL Ciega (Blind](https://reader034.fdocuments.in/reader034/viewer/2022042123/5e9e9e6951e4ee41272e920d/html5/thumbnails/22.jpg)
SQLiynomorirenelintento~#Recomendaciones
Ejemplo:
SQLInjection
![Page 23: SQL Injection - Charruacharrua.org/presentaciones/LeandroPintos_CharruaCon_SQLi.pdf~# Distintos tipos de inyecciones SQL SQLi y no morir en el intento • Inyección SQL Ciega (Blind](https://reader034.fdocuments.in/reader034/viewer/2022042123/5e9e9e6951e4ee41272e920d/html5/thumbnails/23.jpg)
SQLiynomorirenelintento
~#SQLienelmundoreal
SQLInjection
![Page 24: SQL Injection - Charruacharrua.org/presentaciones/LeandroPintos_CharruaCon_SQLi.pdf~# Distintos tipos de inyecciones SQL SQLi y no morir en el intento • Inyección SQL Ciega (Blind](https://reader034.fdocuments.in/reader034/viewer/2022042123/5e9e9e6951e4ee41272e920d/html5/thumbnails/24.jpg)
SQLiynomorirenelintento
~#SQLienelmundoreal
https://www.akamai.com/StateOfTheInternet/
SQLInjection
![Page 25: SQL Injection - Charruacharrua.org/presentaciones/LeandroPintos_CharruaCon_SQLi.pdf~# Distintos tipos de inyecciones SQL SQLi y no morir en el intento • Inyección SQL Ciega (Blind](https://reader034.fdocuments.in/reader034/viewer/2022042123/5e9e9e6951e4ee41272e920d/html5/thumbnails/25.jpg)
SQLiynomorirenelintento
~#Conclusión
• Buenasprácticasdedesarrolloseguro.• Analizarlaswebappsantesdesaliraproducción.• Análisisperiódicosalaswebappsestandoenproducción.
• Charlasalasgerenciasdedesarrollosobrelagravedaddeesteataque.
• Tomarconciencia.
SQLInjection
![Page 26: SQL Injection - Charruacharrua.org/presentaciones/LeandroPintos_CharruaCon_SQLi.pdf~# Distintos tipos de inyecciones SQL SQLi y no morir en el intento • Inyección SQL Ciega (Blind](https://reader034.fdocuments.in/reader034/viewer/2022042123/5e9e9e6951e4ee41272e920d/html5/thumbnails/26.jpg)
SQLiynomorirenelintentoSQLInjection