0% encontró este documento útil (0 votos)
72 vistas

SQL Injection

Este documento introduce el tema de la inyección SQL y explica cómo funciona, sus objetivos y métodos. En resumen: (1) La inyección SQL es una técnica que explota vulnerabilidades para modificar consultas SQL e infiltrar código malicioso en una base de datos, (2) Sus objetivos incluyen obtener información confidencial, elevar privilegios y denegar servicio, (3) Se puede realizar mediante la modificación de parámetros de consulta para extraer datos e infiltrar comandos dañinos en la base de datos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPSX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
72 vistas

SQL Injection

Este documento introduce el tema de la inyección SQL y explica cómo funciona, sus objetivos y métodos. En resumen: (1) La inyección SQL es una técnica que explota vulnerabilidades para modificar consultas SQL e infiltrar código malicioso en una base de datos, (2) Sus objetivos incluyen obtener información confidencial, elevar privilegios y denegar servicio, (3) Se puede realizar mediante la modificación de parámetros de consulta para extraer datos e infiltrar comandos dañinos en la base de datos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPSX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 41

PREGUNTAS

INTRODUCCINASQL
QUEES?
PARAQUESIRVE?
COMOFUNCIONA?
CMOEVITARUNAINYECCINSQL?

INTRODUCCIN
SQL
ENLOSDIFERENTESGESTORES(MYSQL,POSTGRES,ORACLE,MSSQL)
EXISTENUNASERIEDEBASESDEDATOSQUECONTIENEN
INFORMACINACERCADELASTABLAS,COLUMNAS.
EJEMPLO:
ELGESTORMYSQLCONTIENELABASEDEDATOS:
INFORMATION_SCHEMA:
INFORMATION_SCHEMA.TABLES(INFORMACINSOBRETABLAS)
INFORMATION_SCHEMA.COLUMNS(INFORMACINSOBRECOLUMNAS)
QU ES?
ESUNMTODODEINFILTRACINDECDIGOINTRUSOQUESE
VALEDEUNAVULNERABILIDADINFORMTICAPRESENTEENUNA
APLICACINENELNIVELDEVALIDACINDELASENTRADASPARA
REALIZARCONSULTASAUNABASEDEDATOS.
PARA QUE SIRVE?
DESCUBRIMIENTODEINFORMACIN
ELEVACINDEPRIVILEGIOS
DENEGACINDESERVICIO
SUPLANTACINDEUSUARIO
DESCUBRIMIENTO DE
INFORMACIN
LAS TCNICAS DE INYECCIN SQL PUEDEN PERMITIR A UN ATACANTE
MODIFICARCONSULTASPARAACCEDERAREGISTROSY/OOBJETOSDE
LABASEDEDATOSALOSQUEINICIALMENTENOTENAACCESO.
BUSCARVULNERABILIDAD
EXTRAER:
INFORMACIN
TABLAS
COLUMNAS
REGISTRODELASTABLAS

BUSCAR
VULNERARIBILIDAD
INTRODUCIRENLOSPARMETROSELCARCTER,PARAROMPERLA
CONSULTA.(SEMOSTRARAUNERRORENLAPGINA)
E.J:WWW.PRUEBA.ES/INDEX.PHP?ID=1
COMPROBARQUEREALMENTEESTAMOSMODIFICANDOLACONSULTA.
(NOSEMOSTRARANINGNERRORENLAPGINA)
E.J:WWW.PRUEBA.ES/INDEX.PHP?ID=1+AND+1=1
E.J:WWW.PRUEBA.ES/INDEX.PHP?ID=-1+OR+1=1

EXTRAER
INFORMACIN
ELOBJETIVOESOBTENERINFORMACINDELOSUSUARIOS,BASE
DEDATOS,
DEJAMOSLACONSULTADELAAPLICACINVACA
BUSCAMOSELNUMERODECOLUMNASQUETIENELACONSULTAPARA
PODERREALIZARNUESTRAPROPIACONSULTAMEDIANTEUNION
SACAMOSINFORMACINMEDIANTE:
USER(),DATABASE(),@@
VERSION,@@
DATADIR
EXTRAER TABLAS
Y COLUMNAS
TABLAS
UTILIZAMOSLATABLA:INFORMATION_SCHEMA.TABLES
DEAHSACAMOSQUETABLASHAYENLABASEDEDATOS
UTILIZACINDELIMITN,1PARASACARLASDISTINTASTABLAS
COLUMNAS
INFORMATION_SCHEMA.COLUMNS

EXTRAER REGISTRO
DE LAS TABLAS
CONLAINFORMACINOBTENIDACONSTRUIMOSLACONSULTAQUE
QUERAMOSCOMO:

UNIONSELECTUSUARIO,PASSWORDFROMUSUARIOSLIMIT0,1

PUDIENDOASIRSACANDOTODOSLOSREGISTROSDELATABLA
ELEVACIN DE
PRIVILEGIOS
TODOSLOSSISTEMASDEAUTENTICACINQUEUTILICENCREDENCIALESALMACENADOSENMOTORESDE
BASESDEDATOSHACENQUEUNAVULNERABILIDADDEINYECCINSQLPUEDAPERMITIRAUNATACANTE
ACCEDERALOSIDENTIFICADORESDEUSUARIOSMSPRIVILEGIADOSYCAMBIARSELASCREDENCIALES.

PRIVILEGIOS RELACIONADOS CONTABLAS:ALTER,CREATE,DELETE,DROP,INDEX,INSERT,SELECT,UPDATE


ALGUNOS PRIVILEGIOS ADMINISTRATIVOS:FILE,PROCCESS,SUPERRELOAD,REPLICATIONCLIENT,GRANTOPTION,
SHUTDOWN
ALGUNOS PRIVILEGIOS PARA FINES DIVERSOS:LOCKTABLES,SHOWDATABASES,CREATETEMPORARYTABLES.

ELPRIVILEGIOALLOTORGATODOSLOSPRIVILEGIOSEXCEPTUANDOELPRIVILEGIOGRANTOPTION.YEL
PRIVILEGIOUSAGENOOTORGANINGUNO,LOCUALESTILCUANDOSEDESEA,POREJEMPLO,
SIMPLEMENTECAMBIARLACONTRASEA:

Tipo de privilegio Operacin que permite


all[privileges] Otorgatodoslosprivilegiosexceptograntoption
usage Nootorganingnprivilegio
alter Privilegioparaalterarlaestructuradeunatabla
create Permiteelusodecreatetable
delete Permiteelusodedelete
drop Permiteelusodedroptable
index Permiteelusodeindexydropindex
insert Permiteelusodeinsert
select Permiteelusodeselect
update Permiteelusodeupdate
file Permiteelusodeselectintooutfileyloaddatainfile
process Permiteelusodeshowfullprocceslist
super Permitelaejecucindecomandosdesupervisin
reload Permiteelusodeflush
replicationclient Permitepreguntarlalocalizacindemaestroyesclavo
replicationslave Permiteleerlosbinlogdelmaestro
grantoption Permiteelusodegrantyrevoke
shutdown Permitedardebajaalservidor
locktables Permiteelusodelocktables
showtables Permiteelusodeshowtables
createtemporarytablesPermiteelusodecreatetemporarytable
DENEGACIN DE
SERVICIO
LAMODIFICACINDECOMANDOSSQLPUEDELLEVARALA
EJECUCINDEACCIONESDESTRUCTIVASCOMO:
ELBORRADODEDATOSY/OOBJETOS
DETENERSERVICIOSCONCOMANDOSDEPARADAYARRANQUEDELOSSISTEMAS.
ASIMISMO,SEPUEDENINYECTARCOMANDOSQUEGENERENUNALTOCMPUTOEN
ELMOTORDEBASEDEDATOSQUEHAGAQUEELSERVICIONORESPONDAEN
TIEMPOSTILESALOSUSUARIOSLEGALES.

DENEGACIN DE
SERVICIO
EJEMPLOS:
1. PARAINICIARLAINSTANCIA
PREDETERMINADADEMOTORDE
BASEDEDATOS
NET START "SQL SERVER (MSSQLSERVER)

2. PARADETENERMOTORDEBASEDE
DATOSMEDIANTETRANSACT-SQL
SHUTDOWN;

3. PARAINICIARYDETENEREL
SERVICIOSELECCIONADO
VISUALIZAR EL ESTADO DEL SERVICIO
$DFLTINSTANCE
INICIAR EL SERVICIO
$DFLTINSTANCE.START();
ESPERAR HASTA QUE EL TIEMPO DE
SERVICIO INICIE Y LUEGO LO ACTUALIZA.
$DFLTINSTANCE.REFRESH();
PARAR EL SERVICIO
$DFLTINSTANCE.STOP();
SUPLANTACIN DE
SERVICIO
ALMOMENTODEPODERACCEDERALSISTEMADECREDENCIALES
ESPOSIBLEQUEUNATACANTEOBTENGALASCREDENCIALESDE
OTROUSUARIOYREALICEACCIONESCONLAIDENTIDADROBADAO
SPOOFEADAAOTROUSUARIO
COMO FUNCIONA?
PRESENTAREMOSLOSSIGUIENTESMTODOSYHERRAMIENTASPARA
DETALLARCOMOFUNCIONA.
BYPASS(LOGIN).
BLINDSQLINJECTION

BYPASS
ESQUIVARAUTENTICACIN(SALTARVALIDACIN)
CONSULTASDELTIPO:
SELECTUSUARIOFROMUSUARIOSWHEREUSUARIO=ADMINANDPASSWORD=CANALSEGURO666
DONDE ADMIN Y CANALSEGURO666 SON VARIABLES INTRODUCIDAS POR EL
USUARIODELAAPLICACIN.
SI LA CONSULTA ES VACA NO PERMITIR EL ACCESO, PERO EN CASO
CONTRARIOS,DANDOIGUALQUEHAYAUNOOMASREGISTROS
BYPASS
IDENTIFICANDOVULNERABILIDAD:
SELECTUSUARIO,PASSWORD
FROMUSUARIOS
WHEREUSUARIO=ADMIN
ANDPASSWORD=6851
SALTNDOSELAAUTENTIFICACIN:
SELECTUSUARIO,PASSWORD
FROMUSUARIOS
WHEREUSUARIO=OR1=1
ANDPASSWORD=OR1=1
BLIND -
SQL INJECTION
UNADELASMANERASDEREALIZARESTOSATAQUESSEBASAENATAQUESACIEGAS,ESDECIR,ENCONSEGUIRQUE
LOSCOMANDOSSEEJECUTENSINLAPOSIBILIDADDEVERNINGUNODELOSRESULTADOS.
PARMETROVULNERABLE
COMOSEATACA
METODOSAUTOMATIZACIN
HERRAMIENTAS
PROTEGERNOSDEBLINDSQLINJECTION
BLIND SQL INJECTION
Parmetro Vulnerable
ELATACANTEDEBEENCONTRARENPRIMERLUGARUNAPARTEDELCDIGODELAAPLICACIN
QUENOESTREALIZANDOUNACOMPROBACINCORRECTADELOSPARMETROSDEENTRADAA
LA APLICACIN QUE SE ESTN UTILIZANDO PARA COMPONER LAS CONSULTAS A LA BASE DE
DATOS.

DEFINIMOS EL CONCEPTO DE:


INYECCIN SQL DE CAMBIO DE COMPORTAMIENTO CERO (ISQL0)
COMO UNA CADENA QUE SE INYECTA EN UNA CONSULTA SQL Y NO REALIZA NINGN CAMBIO EN LOS
RESULTADOS
Y DEFINIMOS
INYECCIN SQL DE CAMBIO DE COMPORTAMIENTO POSITIVO (ISQL+)
COMO UNA CADENA QUE S QUE PROVOCA CAMBIOS.
BLIND SQL INJECTION
Parmetro Vulnerable
VEAMOSUNOSEJEMPLOSYSUPONGAMOSUNAPGINADEUNAAPLICACINWEBDELTIPO:
HTTP://WWW.MIWEB.COM/NOTICIA.PHP?ID=1
HACEMOSLASUPOSICININICIALDEQUE1ESELVALORDELPARMETROIDYDICHOPARMETROVAASERUTILIZADO
ENUNACONSULTAALABASEDEDATOSDELASIGUIENTEMANERA:
SELECTCAMPOSFROMTABLASWHERECONDICIONESANDID=1
UNAINYECCINISQL0SERAALGOCOMOLOSIGUIENTE:
HTTP://WWW.MIWEB.COM/NOTICIA.PHP?ID=1+1000-1000
HTTP://WWW.MIWEB.COM/NOTICIA.PHP?ID=1AND1=1
HTTP://WWW.MIWEB.COM/NOTICIA.PHP?ID=1OR1=2
ENNINGUNODELOSTRESCASOSANTERIORESESTAMOSREALIZANDONINGNCAMBIOENLOSRESULTADOSOBTENIDOSEN
LACONSULTA.APARENTEMENTENO.PORELCONTRARIO,UNAISQL+SERAALGOCOMOLOSIGUIENTE:
HTTP://WWW.MIWEB.COM/NOTICIA.PHP?ID=1AND1=2
HTTP://WWW.MIWEB.COM/NOTICIA.PHP?ID=-1OR1=1
HTTP://WWW.MIWEB.COM/NOTICIA.PHP?ID=1+1
BLIND SQL INJECTION
Como se ataca?
ALTENERUNAPGINADEVERDADEROYOTRAPGINADEFALSO,
SEPUEDECREARTODALALGICABINARIADEESTAS.
SUPONGAMOSQUEQUEREMOSSABERSIEXISTEUNADETERMINADA
TABLAENLABASEDEDATOS:
ID=1ANDEXISTS(SELECT*FROMUSUARIOS)
PARENTESIS:
ID=1)AND(EXISTS(SELECT*FROMUSUARIOS)
BLIND SQL INJECTION
Como se ataca?
SUPONGAMOSQUEDESEAMOSSACARELNOMBREDELUSUARIOADMINISTRADORDEUNABASEDEDATOSMYSQL:
ID=1AND300>ASCII(SUBSTRING(USER(),1,1))
ACOTANDOELVALORASCIICONUNABSQUEDADICOTMICAENFUNCINDESILASINYECCIONESSONISQL0O
ISQL+.
ID=1AND100>ASCII(SUBSTRING(USER(),1,1))->ISQL+->FALSO
ID=1AND120>ASCII(SUBSTRING(USER(),1,1))->ISQL0->VERDADERO
ID=1AND110>ASCII(SUBSTRING(USER(),1,1))->ISQL+->FALSO
ID=1AND115>ASCII(SUBSTRING(USER(),1,1))->ISQL0->VERDADERO
ID=1AND114>ASCII(SUBSTRING(USER(),1,1))->ISQL+->FALSO
LUEGOPODRAMOSDECIRQUEELVALORDELPRIMERCARCTERASCIIDELNOMBREDELUSUARIOESEL114.
UNA OJEADA A LA TABLA ASCII Y OBTENEMOS LA LETRA R, PROBABLEMENTE DE ROOT, PERO PARA ESO
DEBERAMOSSACARELSEGUNDOVALOR.
BLIND SQL INJECTION
Metodos De Automatizacion
A PARTIR DE ESTA TEORA, EN LAS CONFERENCIAS DE BLACKHAT USA DEL 2004,
CAMERON HOTCHKIES PRESENT UN TRABAJO SOBRE BLIND SQL INJECTION
AUTOMATION TECHNIQUES EN EL QUE PROPONA MTODOS DE AUTOMATIZAR LA
EXPLOTACINDEUNPA-RMETROVULNERABLEATCNICASDEBLINDSQLINJECTION
MEDIANTEHERRAMIENTA
BLIND SQL INJECTION
Metodos De Automatizacion
ELOBJETIVOESINTRODUCIRISQL0EISQL+YCOMPROBARSILOS
RESULTADOSOBTENIDOSSEPUEDENDIFERENCIARDEFORMA
AUTOMTICAONOYCMOHACERLO.
1. BSQUEDADEPALABRASCLAVE
2. BASADOSENFIRMASMD5
3. EXCEPCIONES
MOTORDEDIFERENCIATEXTUAL
BASADOSENRBOLESHTML
REPRESENTACINLINEALDESUMASASCII
BLIND SQL INJECTION
Herramientas
Absinthe
SQLInjector
SQLbftools
Bfsql
SQLPowerinjector
SQLiBF
WebInspect
AcunetixWebVulnerabilityScanner
BLIND SQL INJECTION
Como Protegernos?
LAS PROTECCIONES PARA SQL INJECTION SON LAS MISMAS QUE
CONTRA SQL INJECTION. CMO HACERLO?, PUES COMPROBANDO
ABSOLUTAMENTETODO.
MICHAEL HOWARD, UNO DE LOS PADRES DEL MODELO SDL (SECURE
DEVELOPMENTLIFECYCLE)UTILIZADOPORMICROSOFTENELDESARROLLO
DE SUS LTIMAS TECNOLOGAS Y ESCRITOR DEL LIBRO WRITTING
SECURE CODE (2. EDICIN) DEDICA TODO UN TEMA A EVITAR LA
INYECCINDECDIGOYLOTITULADEFORMAMUYPERSONAL:
ALL INPUT IS EVIL! UNTIL PROVEN OTHERWISE.
BLIND SQL INJECTION
Como Protegernos?
ADEMS, CASI TODOS LOS FABRICANTES O RESPONSABLES DE
LENGUAJES DE PROGRAMACIN DE APLICACIONES WEB OFRECEN
MEJORESPRCTICASPARAELDESARROLLOSEGURO

BLIND SQL INJECTION


Como Protegernos?
TODACONSULTAQUESEVAYAALANZARCONTRALABASEDE
DATOSYCUYOSPARMETROSVENGANDESDEELUSUARIO,NO
IMPORTASIENPRINCIPIOVANASERMODIFICADOSONOPOREL
USUARIO,DEBESERCOMPROBADA
BLIND SQL INJECTION
Como Protegernos?
ASIMISMO, COMO SE HA VISTO, LOS ATACANTES INTENTAN
REALIZAR INGENIERA INVERSA Y EXTRAER INFORMACIN DE LAS
APLICACIONESSOBRELABASEDELOSMENSAJESOTRATAMIENTOS
DEERROR

BLIND SQL INJECTION
Como Protegernos?
SEPUEDEAFIRMARQUECASIEL100%DELOSATACANTESAUN
SISTEMAVANAGENERARALGNERRORENLAAPLICACIN.

CMO EVITAR UNA
INYECCIN SQL?
LENGUAJESDEPROGRAMACIN
C#
PHP
RUBYONRAILS
JAVA

BASEDEDATOS
MSSQL
MYSQL
ACCESS
ORACLEPL/SQL
DB2
POSTGRESPL/PGSQL

C#
ENLENGUAJEC#,DELAPLATAFORMA.NET(OSUALTERNATIVA
LIBREMONO),SETIENEADO.NETSQLCOMMAND
(PARAMICROSOFTSQLSERVER)OORACLECOMMAND(PARA
SERVIDORESDEBASESDEDATOSORACLE).
ELEJEMPLOSIGUIENTEMUESTRACMOPREVENIRLOSATAQUES
DEINYECCINDECDIGOUSANDOELOBJETOSQLCOMMAND.EL
CDIGOPARAADO.NETSEPROGRAMADEFORMASIMILAR,AUNQUE
PUEDEVARIARLEVEMENTESEGNLAIMPLEMENTACINESPECFICA
DECADAPROVEEDOR.
C#
ENVEZ

SEPODRAUSARLOSIGUIENTE.
PHP
ENELLENGUAJEPHP,HAYDIFERENTESFUNCIONESQUEPUEDENSERVIRDEAYUDA
PARAUSARCONDISTINTOSSISTEMASDEGESTINDEBASESDEDATOS.

RUBY ON RAILS
ENELFRAMEWORKRUBYONRAILS(ROR),LASCONSULTASSON
VERIFICADASAUTOMTICAMENTEPORCUALQUIERADELOS
MTODOSDEBSQUEDAINCLUIDOS.POREJEMPLO:

JAVA
SEPUEDEUSARLACLASEPREPAREDSTATEMENT:

SISTEMA GESTORES
DE BASE DE DATOS
LAS SIGUIENTES TABLAS MUESTRAN ALGUNAS DISTINCIONES QUE SIRVEN
PARADETERMINARELTIPODEBASEDEDATOSOBJETIVO:
SISTEMA GESTORES
DE BASE DE DATOS

IDS EVASION
LA IMPLEMENTACIN DE UN SISTEMA QUE DETECTE LOS PARMETROS Y LOS
EVITE (IDS, IPS) ES RELATIVAMENTE SENCILLA. ESTOS SISTEMAS NORMALMENTE
ESTN BASADOS EN FIRMAS QUE EN CUANTO ENCUENTRAN PARTES
SOSPECHOSAS EN LAS PETICIONES DE URL, COMO LAS RESULTANTES DE
UTILIZARSENTENCIASSQLENLOSVALORESDELOSPARMETROS,DETIENENLA
CONEXIN

POREJEMPLO,SUPONGAMOSQUEUNIDSCORTECUALQUIERCONEXINQUECONTENGA
ELLITERALUNIN,DEMODOQUELASIGUIENTEINYECCINNOSERAEFECTIVA:
IDLIBRO=1'UNION@@VERSION

También podría gustarte