SQL InjectionTiago 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+.  ...
Experiências/InteressesLinguagens:       •   C, C++, Assembly, LispSegurança:       •   Desenvolvimento de Exploits;      ...
SQL Injection    DEMO
SQL InjectionSQL Injection é uma falha que ocorre quando o desenvolvedor permite que a query de consulta ao banco de dados...
Programadores não gostam de     crashar seus softwares ...Query na aplicação:Sql = “SELECT id, username, password FROM adm...
Programadores não gostam de     crashar seus softwares ...Query na aplicação:Sql = “SELECT id, username, password FROM adm...
Como ocorre:Input malicioso:usuario=admin&senha= OR 1=1Query produzida:SELECT id, username, password FROM admin WHERE user...
O que o hacker pode fazer?    Roubar todos os dados do seu banco de    dados;    Inserir, atualizar ou DELETAR dados do ...
Como se proteger?    Saiba o tipo de dado de todo input do usuário e    transforme a entrada num objeto desse tipo;    U...
Prepared Statementstmt = conn.prepareStatement(“SELECT id,  username, password FROM admin WHERE  username = ? and password...
NUNCA utilize blacklistExemplos de formas de burlas blacklists:     uNiOn AlL SeLecT 999 fRoM admin    /**/UnIoN/**/aLl/...
Quem se beneficia dessas falhas?
BLACK MARKET
BLACK MARKET
FimPerguntas?
Sql injection
Sql injection
Upcoming SlideShare
Loading in …5
×

Sql injection

838 views

Published on

Básico de SQL Injection

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Sql injection

  1. 1. SQL InjectionTiago Natel de Moura natel@owasp.org
  2. 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. 3. Experiências/InteressesLinguagens: • C, C++, Assembly, LispSeguranç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;
  4. 4. SQL Injection DEMO
  5. 5. SQL InjectionSQL 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. 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. 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. 8. Como ocorre:Input malicioso:usuario=admin&senha= OR 1=1Query produzida:SELECT id, username, password FROM admin WHERE username=admin and password= OR 1=1;
  9. 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. 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. 11. Prepared Statementstmt = 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. 12. NUNCA utilize blacklistExemplos 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. 13. Quem se beneficia dessas falhas?
  14. 14. BLACK MARKET
  15. 15. BLACK MARKET
  16. 16. FimPerguntas?

×