SlideShare una empresa de Scribd logo
1 de 18
SQL Injection




Tiago Natel de Moura
  natel@owasp.org
Sobre mim

   Pesquisador e co-fundador do grupo BugSec Team.
    bugsec.googlecode.com
   Consultor de Segurança na SEC+.
    www.secplus.com.br
   Co-Fundador e Lider do Capítulo da OWASP de
    Florianópolis.
   Desenvolvedor de algumas ferramentas de
    segurança: http://github.com/tiago4orion
Experiências/Interesses
Linguagens:
       •   C, C++, Assembly, Lisp
Segurança:
       •   Desenvolvimento de Exploits;
       •   Buffer overflows (Stack/Heap Overrun);
       •   Network Protocol (TCP/UDP/IP, WEP/WPA, FTP/
           HTTP, etc)
       •   Análise de Malwares;
       •   Web Application Vulnerabilities (SQLI, XSS,
           CSRF, LFD/RFI, etc)
       •   Metodologias de segurança;
SQL Injection




    DEMO
SQL Injection

SQL Injection é uma falha que ocorre quando o
 desenvolvedor permite que a query de consulta
 ao banco de dados seja manipulada de forma
 maliciosa por uma entrada do usuário.
Programadores não gostam de
     crashar seus softwares ...

Query na aplicação:
Sql = “SELECT id, username, password FROM
 admin WHERE username = '“ +
 req.getParameter(“usuario”) + “' and password =
 '” + req.getParameter(“senha”) + “'”;
Como ele testa:
[POST] http://localhost/login.do?
  usuario=admin&senha=123456
Programadores não gostam de
     crashar seus softwares ...

Query na aplicação:
Sql = “SELECT id, username, password FROM
 admin WHERE username = '“ +
 req.getParameter(“usuario”) + “' and password =
 '” + req.getParameter(“senha”) + “'”;
Como o hacker testa:
[POST] http://localhost/login.do?
  usuario=admin&senha=' or 1=1 LIMIT 1
Como ocorre:
Input malicioso:
usuario=admin&senha=' OR 1=1


Query produzida:
SELECT id, username, password FROM admin
 WHERE username='admin' and password=''
 OR 1=1;
O que o hacker pode fazer?

    Roubar todos os dados do seu banco de
    dados;

    Inserir, atualizar ou DELETAR dados do banco;

    Autenticar com a conta de qualquer usuário;

    Ler e escrever arquivos dentro do seu servidor;

    Executar comandos no sistema (exec
    xp_cmdshell);

    Upload de arquivos (Oracle);

    Requisição em outros servidores (Oracle);

    E muito mais...
Como se proteger?


    Saiba o tipo de dado de todo input do usuário e
    transforme a entrada num objeto desse tipo;

    Utilize Prepared Statements;

    Se não for possivel usar prepare, utilize
    whitelist de caracteres válidos;

    NUNCA use blacklist;
Prepared Statement

stmt = conn.prepareStatement(“SELECT id,
  username, password FROM admin WHERE
  username = ? and password = ?”);
stmt.setString(0, req.getParameter(“usuario”));
stmt.setString(1, reg.getParameter(“senha”));
stmt.execute();
NUNCA utilize blacklist
Exemplos de formas de burlas blacklists:

    ' uNiOn AlL SeLecT 999 fRoM admin

    '/**/UnIoN/**/aLl/**/sElECT/**/666/**/fRoM/**/ad
    min

    '%0a--%a%2f**%2f--%0asElEct--%0a666%2f**
    %2f …

    Utilize a imaginação :)
Quem se beneficia dessas falhas?
BLACK MARKET
BLACK MARKET
Fim




Perguntas?

Más contenido relacionado

La actualidad más candente

AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEEAppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEEMagno Logan
 
Xss injection indo alem do alert.v 0.4
Xss injection indo alem do alert.v 0.4Xss injection indo alem do alert.v 0.4
Xss injection indo alem do alert.v 0.4William Costa
 
Desenvolvimento de Software Seguro
Desenvolvimento de Software SeguroDesenvolvimento de Software Seguro
Desenvolvimento de Software SeguroAugusto Lüdtke
 
Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias
Tratando as vulnerabilidades do Top 10 do OWASP by Wagner EliasTratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias
Tratando as vulnerabilidades do Top 10 do OWASP by Wagner EliasMagno Logan
 
Pg2
Pg2Pg2
Pg2csmp
 
Escrevendo códigos php seguros
Escrevendo códigos php segurosEscrevendo códigos php seguros
Escrevendo códigos php segurosDouglas V. Pasqua
 
Palestra criando aplicações seguras com php (2)
Palestra  criando aplicações seguras com php (2)Palestra  criando aplicações seguras com php (2)
Palestra criando aplicações seguras com php (2)Leandro Lugaresi
 
Solr - Indexação e Busca com ferramenta Open Source
Solr - Indexação e Busca com ferramenta Open SourceSolr - Indexação e Busca com ferramenta Open Source
Solr - Indexação e Busca com ferramenta Open SourceMarcelo Rodrigues
 
Construindo uma Aplicação PHP à Prova de Balas
Construindo uma Aplicação PHP à Prova de BalasConstruindo uma Aplicação PHP à Prova de Balas
Construindo uma Aplicação PHP à Prova de BalasRafael Jaques
 
PHP like a super hero
PHP like a super heroPHP like a super hero
PHP like a super heroElton Minetto
 
Construindo uma Aplicação PHP à Prova de Balas - 2010
Construindo uma Aplicação PHP à Prova de Balas - 2010Construindo uma Aplicação PHP à Prova de Balas - 2010
Construindo uma Aplicação PHP à Prova de Balas - 2010Rafael Jaques
 

La actualidad más candente (20)

Segurança em php
Segurança em phpSegurança em php
Segurança em php
 
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEEAppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
AppSec Latam 2011 - Treinamento OWASP Top 10 + JavaEE
 
Web App Flaws - SQL Injection
Web App Flaws - SQL InjectionWeb App Flaws - SQL Injection
Web App Flaws - SQL Injection
 
Xss injection indo alem do alert.v 0.4
Xss injection indo alem do alert.v 0.4Xss injection indo alem do alert.v 0.4
Xss injection indo alem do alert.v 0.4
 
Desenvolvimento de Software Seguro
Desenvolvimento de Software SeguroDesenvolvimento de Software Seguro
Desenvolvimento de Software Seguro
 
etetet
etetetetetet
etetet
 
Tratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com phpTratando as vulnerabilidades do Top 10 com php
Tratando as vulnerabilidades do Top 10 com php
 
Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias
Tratando as vulnerabilidades do Top 10 do OWASP by Wagner EliasTratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias
Tratando as vulnerabilidades do Top 10 do OWASP by Wagner Elias
 
Segurança Web com PHP5
Segurança Web com PHP5Segurança Web com PHP5
Segurança Web com PHP5
 
Pg2
Pg2Pg2
Pg2
 
Escrevendo códigos php seguros
Escrevendo códigos php segurosEscrevendo códigos php seguros
Escrevendo códigos php seguros
 
Palestra criando aplicações seguras com php (2)
Palestra  criando aplicações seguras com php (2)Palestra  criando aplicações seguras com php (2)
Palestra criando aplicações seguras com php (2)
 
Hello SAFE World!!!
Hello SAFE World!!!Hello SAFE World!!!
Hello SAFE World!!!
 
Solr - Indexação e Busca com ferramenta Open Source
Solr - Indexação e Busca com ferramenta Open SourceSolr - Indexação e Busca com ferramenta Open Source
Solr - Indexação e Busca com ferramenta Open Source
 
Construindo uma Aplicação PHP à Prova de Balas
Construindo uma Aplicação PHP à Prova de BalasConstruindo uma Aplicação PHP à Prova de Balas
Construindo uma Aplicação PHP à Prova de Balas
 
Let's log!
Let's log!Let's log!
Let's log!
 
PHP like a super hero
PHP like a super heroPHP like a super hero
PHP like a super hero
 
Introdução a worker
Introdução a workerIntrodução a worker
Introdução a worker
 
Construindo uma Aplicação PHP à Prova de Balas - 2010
Construindo uma Aplicação PHP à Prova de Balas - 2010Construindo uma Aplicação PHP à Prova de Balas - 2010
Construindo uma Aplicação PHP à Prova de Balas - 2010
 
Php FrameWARks - sem CakePHP
Php FrameWARks - sem CakePHPPhp FrameWARks - sem CakePHP
Php FrameWARks - sem CakePHP
 

Similar a Sql injection

Desenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPDesenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPFlavio Souza
 
Aprendendo a atacar (e proteger) aplicações web através de jogos de guerra
Aprendendo a atacar (e proteger) aplicações web através de jogos de guerraAprendendo a atacar (e proteger) aplicações web através de jogos de guerra
Aprendendo a atacar (e proteger) aplicações web através de jogos de guerraClavis Segurança da Informação
 
Desenvolvimento de software seguro
Desenvolvimento de software seguroDesenvolvimento de software seguro
Desenvolvimento de software seguroCharles Fortes
 
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEB
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEBFIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEB
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEBErick Belluci Tedeschi
 
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em AplicaçõesPalestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em AplicaçõesClavis Segurança da Informação
 
InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...
InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...
InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...iMasters
 
Segurança em Aplicativos Web
Segurança em Aplicativos WebSegurança em Aplicativos Web
Segurança em Aplicativos WebSergio Henrique
 
Global Azure Bootcamp - Recursos de Segurança para Aplicações no Azure
Global Azure Bootcamp - Recursos de Segurança para Aplicações no AzureGlobal Azure Bootcamp - Recursos de Segurança para Aplicações no Azure
Global Azure Bootcamp - Recursos de Segurança para Aplicações no AzureRubens Guimarães - MTAC MVP
 
Desenvolvimento Web - Palestra Coding Night #3 - Microsoft
Desenvolvimento Web - Palestra Coding Night #3 - MicrosoftDesenvolvimento Web - Palestra Coding Night #3 - Microsoft
Desenvolvimento Web - Palestra Coding Night #3 - MicrosoftRubens Guimarães - MTAC MVP
 
Engenharia de Software II - Teste de segurança de software
Engenharia de Software  II - Teste de segurança de softwareEngenharia de Software  II - Teste de segurança de software
Engenharia de Software II - Teste de segurança de softwareJuliano Padilha
 
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...As Zone
 
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...Thiago Dieb
 
Segurança & Ruby on Rails
Segurança & Ruby on RailsSegurança & Ruby on Rails
Segurança & Ruby on RailsJulio Monteiro
 

Similar a Sql injection (20)

Testes de Segurança de Software (tech-ed 2008)
Testes de Segurança de Software (tech-ed 2008)Testes de Segurança de Software (tech-ed 2008)
Testes de Segurança de Software (tech-ed 2008)
 
Desenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHPDesenvolvendo sistemas seguros com PHP
Desenvolvendo sistemas seguros com PHP
 
Aprendendo a atacar (e proteger) aplicações web através de jogos de guerra
Aprendendo a atacar (e proteger) aplicações web através de jogos de guerraAprendendo a atacar (e proteger) aplicações web através de jogos de guerra
Aprendendo a atacar (e proteger) aplicações web através de jogos de guerra
 
Desenvolvimento de software seguro
Desenvolvimento de software seguroDesenvolvimento de software seguro
Desenvolvimento de software seguro
 
Teste de segurança do lado servidor - Nível 1
Teste de segurança do lado servidor - Nível 1Teste de segurança do lado servidor - Nível 1
Teste de segurança do lado servidor - Nível 1
 
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEB
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEBFIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEB
FIEB - WebVibe - Desenvolvimento Seguro de Aplicações WEB
 
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em AplicaçõesPalestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
Palestra em parceria com o @cefet_rj – Auditoria Teste de Invasão em Aplicações
 
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
 
InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...
InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...
InterCon 2017 - Engenharia de segurança web: Proteja todas as camadas de seu ...
 
Java security
Java securityJava security
Java security
 
Segurança em Aplicativos Web
Segurança em Aplicativos WebSegurança em Aplicativos Web
Segurança em Aplicativos Web
 
Global Azure Bootcamp - Recursos de Segurança para Aplicações no Azure
Global Azure Bootcamp - Recursos de Segurança para Aplicações no AzureGlobal Azure Bootcamp - Recursos de Segurança para Aplicações no Azure
Global Azure Bootcamp - Recursos de Segurança para Aplicações no Azure
 
Desenvolvimento Web - Palestra Coding Night #3 - Microsoft
Desenvolvimento Web - Palestra Coding Night #3 - MicrosoftDesenvolvimento Web - Palestra Coding Night #3 - Microsoft
Desenvolvimento Web - Palestra Coding Night #3 - Microsoft
 
Testes de segurança em aplicações web
Testes de segurança em aplicações webTestes de segurança em aplicações web
Testes de segurança em aplicações web
 
Engenharia de Software II - Teste de segurança de software
Engenharia de Software  II - Teste de segurança de softwareEngenharia de Software  II - Teste de segurança de software
Engenharia de Software II - Teste de segurança de software
 
Struts2 remote codeexecution
Struts2 remote codeexecutionStruts2 remote codeexecution
Struts2 remote codeexecution
 
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...
Fisl 16 - Nem tudo o que reluz é ouro. hackeando as principais dicas de dese...
 
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...
Fisl 16 – Nem tudo o que reluz é ouro. hackeando as principais dicas de desen...
 
Segurança & Ruby on Rails
Segurança & Ruby on RailsSegurança & Ruby on Rails
Segurança & Ruby on Rails
 
Workshop05
Workshop05Workshop05
Workshop05
 

Sql injection

  • 1. SQL Injection Tiago Natel de Moura natel@owasp.org
  • 2. Sobre mim  Pesquisador e co-fundador do grupo BugSec Team. bugsec.googlecode.com  Consultor de Segurança na SEC+. www.secplus.com.br  Co-Fundador e Lider do Capítulo da OWASP de Florianópolis.  Desenvolvedor de algumas ferramentas de segurança: http://github.com/tiago4orion
  • 3. Experiências/Interesses Linguagens: • C, C++, Assembly, Lisp Segurança: • Desenvolvimento de Exploits; • Buffer overflows (Stack/Heap Overrun); • Network Protocol (TCP/UDP/IP, WEP/WPA, FTP/ HTTP, etc) • Análise de Malwares; • Web Application Vulnerabilities (SQLI, XSS, CSRF, LFD/RFI, etc) • Metodologias de segurança;
  • 5. SQL Injection SQL Injection é uma falha que ocorre quando o desenvolvedor permite que a query de consulta ao banco de dados seja manipulada de forma maliciosa por uma entrada do usuário.
  • 6. Programadores não gostam de crashar seus softwares ... Query na aplicação: Sql = “SELECT id, username, password FROM admin WHERE username = '“ + req.getParameter(“usuario”) + “' and password = '” + req.getParameter(“senha”) + “'”; Como ele testa: [POST] http://localhost/login.do? usuario=admin&senha=123456
  • 7. Programadores não gostam de crashar seus softwares ... Query na aplicação: Sql = “SELECT id, username, password FROM admin WHERE username = '“ + req.getParameter(“usuario”) + “' and password = '” + req.getParameter(“senha”) + “'”; Como o hacker testa: [POST] http://localhost/login.do? usuario=admin&senha=' or 1=1 LIMIT 1
  • 8. Como ocorre: Input malicioso: usuario=admin&senha=' OR 1=1 Query produzida: SELECT id, username, password FROM admin WHERE username='admin' and password='' OR 1=1;
  • 9. O que o hacker pode fazer?  Roubar todos os dados do seu banco de dados;  Inserir, atualizar ou DELETAR dados do banco;  Autenticar com a conta de qualquer usuário;  Ler e escrever arquivos dentro do seu servidor;  Executar comandos no sistema (exec xp_cmdshell);  Upload de arquivos (Oracle);  Requisição em outros servidores (Oracle);  E muito mais...
  • 10. Como se proteger?  Saiba o tipo de dado de todo input do usuário e transforme a entrada num objeto desse tipo;  Utilize Prepared Statements;  Se não for possivel usar prepare, utilize whitelist de caracteres válidos;  NUNCA use blacklist;
  • 11. Prepared Statement stmt = conn.prepareStatement(“SELECT id, username, password FROM admin WHERE username = ? and password = ?”); stmt.setString(0, req.getParameter(“usuario”)); stmt.setString(1, reg.getParameter(“senha”)); stmt.execute();
  • 12. NUNCA utilize blacklist Exemplos de formas de burlas blacklists:  ' uNiOn AlL SeLecT 999 fRoM admin  '/**/UnIoN/**/aLl/**/sElECT/**/666/**/fRoM/**/ad min  '%0a--%a%2f**%2f--%0asElEct--%0a666%2f** %2f …  Utilize a imaginação :)
  • 13. Quem se beneficia dessas falhas?
  • 14.
  • 15.