Your SlideShare is downloading. ×
Sql injection
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Sql injection

481
views

Published on

Básico de SQL Injection

Básico de SQL Injection

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
481
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
22
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. SQL InjectionTiago 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/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. SQL Injection DEMO
  • 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. 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=1Query 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 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. 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. Quem se beneficia dessas falhas?
  • 14. BLACK MARKET
  • 15. BLACK MARKET
  • 16. FimPerguntas?