Guia do hacker/Banco de dados
Todos nós já ouvimos falar sobre banco de dados. Seja na internet, no trabalho, ou
com algum amigo. Mas você já parou para pensar para que serve e o quão importante é o
banco de dados?
O que é um banco de dados? Bom, sabemos que um banco (agência bancária) é um
lugar onde você pode guardar seu dinheiro de forma segura, e pode consultá-lo, sacar ou
depositar quando quiser. Assim funciona o banco de dados na internet. Ele é um lugar na
internet que armazena dados. Todo e qualquer tipo de dados. Desde números de fotos até
cartões de crédito, ou nomes e senhas de usuários, ou os tópicos de um determinado site.
Existem basicamente duas formas de se administrar um banco de dados:
- Centralizando todos os dados em apenas um banco de dados, ou seja, o banco fica
apenas em um servidor, e contém todos os dados que devem ser acessados pelas aplicações
e/ou pelos clientes, e como ele fica centralizado totalmente no servidor, requer mais
capacidade de processamento do mesmo.
- Descentralizando os dados, dividindo-os em vários bancos e em servidores
diferentes. São úteis porque cada banco exige apenas da capacidade de processamento do
processador do servidor em que estão rodando, e como os dados estão divididos entre eles,
cada um vai ficar com um pouco, não havendo sobrecarga.
Os bancos de dados devem ser gerenciados por algum lugar, e é por isso que existem
os Sistemas Gerenciadores de Banco de Dados (SGBD). Com esses softwares, é possível
manipular os dados que são contidos no BD, podendo adicionar, remover, alterar, fazer
consultas e etc. Um desses softwares, por exemplo, é o MySQL, que utiliza a linguagem SQL
(Structured Query Language) como interface. É certamente o banco de dados mais utilizado
actualmente, por conta da sua flexibilidade e facilidade ao trabalhar com seus comandos,
NASA, Bradesco, HP, Nokia, Sony, Google, Cisco, todos esses gigantes utilizam o MySQL.
Uma falha bem comum e que foi explorada exaustivamente nos últimos anos é o SQL
Injection. Essa falha permite que o invasor injecte querys (comandos) SQL no
servidor/programa devido a uma falha na validação de dados. Por exemplo, no formulário de
login de um determinado site, o banco de dados pega o login e senha, e os coloca em um
comando para verificar se os dados são reais. Mas, se os dados passados não forem
validados antes, é possível passar comandos para o banco e fazer com que ele ache que ele
deve fazer outra coisa. Você pode injectar um comando que retorne toda a lista de usuários e
senhas, por exemplo. Veremos sobre essa falha e outras mais para frente no capítulo de
vulnerabilidades.
Vamos falar sobre pentest agora, que tem muito a ver com isso. Até mais :)