As aplicações web são, sem dúvidas, os principais alvos de ataques de agentes maliciosos e isso está diretamente ligado ao seu alcance rápido e a dificuldade de exposição do criminoso responsável pelo ato.
Devido a algumas tecnologias adotadas em algumas páginas web, diversas vulnerabilidades podem ser exploradas, e os problemas causados são diversos:
- Exposição e roubo de dados cadastrais de usuários;
- Interrupção no serviço;
- Perdas financeiras, entre outros.
Neste artigo veremos os três tipos de ataques mais comuns a aplicações web.
Curso Django - Tópicos de segurança
Conhecer o cursoSQL Injection
SQL Injection (ataque de injeção de SQL) é uma técnica onde, através da entrada de dados de uma página web, usuários maliciosos podem injetar comandos SQL no banco de dados de uma aplicação. Este tipo de ataque consiste em inserir códigos diretamente nos campos de entrada dos dados que vão ser concatenados com o SQL e, após isso, executados.
Imagine o seguinte exemplo:
-
Um sistema bancário permite a edição de informações pessoais de um cliente. Estas informações são armazenadas na mesma tabela que contém o saldo deste cliente;
-
O usuário, ao tentar editar seu nome, maliciosamente adiciona um comando SQL para alterar o campo saldo da sua conta, algo como:
'Joao Silva' AND saldo=150000
- Após submeter o formulário de edição, a aplicação bancária (sem validação da entrada de dados do formulário) executa o seguinte código no banco de dados:
UPDATE cliente SET nome=nome_formulario WHERE cliente.id = 5
Porém, o conteúdo da variável nome_formulario
, além do nome do cliente alterado, possui um código SQL, fazendo com que o UPDATE do banco de dados seja executado da seguinte forma:
UPDATE cliente SET nome='Joao Silva' AND saldo=150000 WHERE cliente.id = 5
Com isso, além do nome, o cliente conseguiu, também, alterar seu saldo bancário, o que pode ser um grande prejuízo para um banco.
Você pode saber mais sobre banco de dados em nosso artigo sobre os principais SGBDs relacionais.
CSRF
Cross-site request forgery, ou simplesmente falsificação de solicitações entre sites, é um tipo de ataque no qual comandos não autorizados são transmitidos a partir de um usuário que possui acesso a aplicação. Neste ataque, uma aplicação envia solicitações para um site se passando por um usuário logado esperando que a aplicação execute sua requisição.
Imagine a seguinte situação:
-
Você loga no site do seu banco utilizando o navegador instalado em seu computador. Neste momento, o banco irá autenticar suas credenciais e retornar para o navegador um cookie para que o usuário permaneça logado na aplicação;
-
Neste momento, você abre um link de uma página determinada a explorar este tipo de ataque. Nela, há um formulário exatamente igual ao do banco para realizar uma transação, porém, sem qualquer relação com o banco;
-
Imaginando que trata-se da aplicação bancária, você realiza a transação normalmente. A aplicação maliciosa, então, submete o formulário e, de quebra, captura o cookie com a sessão do usuário (o que o mantém logado no banco).
-
De posse do cookie, a aplicação maliciosa, agora, poderá realizar qualquer iteração com o seu banco, que achará que foi o usuário logado que a fez.
Daí que o nome “Cross-site request forgery” é utilizado, já que uma aplicação conseguiu forjar a requisição de um site (malicioso) para outro (banco) se passando pelo usuário logado.
Este é um dos principais ataques em aplicações web e você pode ver os meios de mitigá-lo no artigo Cross-Site Request Forgery (CSRF) e abordagens para mitigá-lo.
XSS
Cross-site scripting é um tipo de ataque de injeção de código malicioso em aplicações web. Este tipo de ataque geralmente acontece em função da falha na validação nos dados de entrada de um usuário, permitindo que um script malicioso seja executado no navegador do cliente, permitindo que o atacante consiga copiar cookies, tokens ou até roubar dados de acesso registrados no navegador web do usuário.
Imagine o seguinte exemplo:
-
Através do formulário de um site, um atacante envia um código JavaScript que armazenará o conteúdo do cookie dos usuários e enviará para um determinado servidor;
-
Sem qualquer validação na entrada dos dados, o servidor armazena as informações que foram submetidas pelo servidor e as exibe para o usuário (imagine um comentário em um blog, onde este script foi enviado e está sendo exibido para todos os usuários do site);
-
Agora, qualquer usuário que acessar a página que aquele script esteja sendo exibido, poderá ter seus cookies roubados e enviados para um servidor do atacante. Tudo isso porque a aplicação não fez uma simples validação na entrada dos dados nem na saída (exibição das informações).
Concluindo
Neste artigo vimos os três tipos de ataques mais comuns a aplicações web. Desta forma, é importante que as aplicações se preocupem com sua segurança para que estes ataques sejam evitados.