Vulnerabilidades em servidores e aplicações web

Aplicações e servidores Web têm muitas vulnerabilidades, mas algumas são exclusivas deste tipo de ambiente. Como sites, servidores e aplicativos são o lado da empresa que o público geralmente encontra, eles representam um alvo óbvio. Ampliando a questão, o é fato de que, ao contrário de alguns anos atrás, muitas empresas existem apenas na internet. Derrubar ou comprometer esses sistemas pode ser um golpe para o atacante e devastador para a empresa-alvo.

Web design com falhas

Uma maneira comum de explorar uma aplicação web ou site está no próprio código. Comentários e tags ocultos que são incorporados em uma página da Web pelo designer podem render informações para um invasor. Embora esses tipos de tags e informações não tenham a intenção de serem exibidos em um navegador Web, eles podem ser visualizados e analisados ??usando o recurso “Visualizar o código-fonte” presente na maioria dos navegadores.

O código fonte de uma página poderia revelar algo como:

<form method="post" action="../../cgi-bin/formMail.pl">
<!--Regular FormMail options---->
<input type=hidden name="recipient" value="moblin@termina.com">
<input type=hidden name="subject" value="Message from website visitor">
<input type=hidden name="required" value="Name,Email,Address1,City,State,Zip,Phone1">
<input type=hidden name="redirect" value="http://www.termina.com/received.htm">
<input type=hidden name="servername" value="https://payments.termina.com">
<input type=hidden name="env_report" value="REMOTE_HOST, HTTP_USER_AGENT">
<input type=hidden name="title" value="Form Results">
<input type=hidden name="return_link_url" value="http://www.someplace.com/main.html">
<input type=hidden name="return_link_title" value="Back to Main Page">
<input type=hidden name="missing_fields_redirect" value="http://www.termina.com/error.html">
<input type=hidden name="orderconfirmation" value="orders@termina.com">
<input type=hidden name="cc" value="majora@termina.com">
<input type=hidden name="bcc" value="skullkid@termina.com">
<!--Courtesy Reply Options-->

O código contém informações úteis para um invasor. Embora a informação não seja completamente acionável, ela fornece algo. Observe os endereços de e-mail e até mesmo o que parece ser um servidor de processamento de pagamentos (payments.termina.com). Esta é uma informação que um atacante pode usar para um ataque.

Outro exemplo de uma vulnerabilidade no código que pode ser explorada:

<FORM ACTION =http://111.111.111.111/cgi-bin/order.pl" method="post"
<input type=hidden name="price" value="6000.00">
<input type=hidden name="prd_id" value="X190">
QUANTITY: <input type=text name="quant" size=3 maxlength=3 value=1>

Neste exemplo, o designer da aplicação usou campos ocultos para manter o preço de um item. Atacantes poderiam mudar o preço do item de 6.000,00 para 60,00 e fazer seu próprio desconto.

Buffer overflow

Uma vulnerabilidade comum em servidores web e em todos softwares é o buffer overflow. Um estouro de buffer ocorre quando um aplicativo, processo ou programa tenta colocar mais dados em um buffer do que ele foi projetado para armazenar. Na prática, os buffers devem conter apenas uma quantidade específica de dados e não mais. No caso de um buffer overflow, um programador, através de codificação preguiçosa ou outras práticas, cria um buffer no código, mas não coloca restrições sobre ele. Os dados devem ir em algum lugar, que neste caso significa buffers adjacentes. Quando os dados transbordam nos buffers para os quais não foi criado, o resultado pode ser corrompido ou sobrescrito. Se isso ocorrer, esses dados podem perder sua integridade. Em casos extremos, a substituição de buffer pode levar a qualquer coisa, desde a perda da integridade do sistema até a divulgação de informações a partes não autorizadas.

Ataque de negação de serviço

Um ataque que pode causar estragos em um servidor web é o venerável ataque de negação de serviço (DoS). Como um recurso fixo, um servidor web é vulnerável a esse ataque, assim como qualquer outro recurso baseado em servidor seria. Quando é executado contra um servidor web, todos os recursos nesse servidor podem ser rapidamente consumidos, diminuindo seu desempenho. Um ataque DoS é considerado principalmente um aborrecimento porque é fácil de derrotar.

Ataque distribuído de negação de serviço

Enquanto um ataque DoS é principalmente um aborrecimento, o ataque distribuído de negação de serviço (DDoS) é muito mais um problema. Um DDoS realiza o mesmo objetivo que um DoS: Consome os recursos em um servidor e impede que ele seja usado por usuários legítimos. A diferença entre um DDoS e um DoS é a escala. Em um DDoS, muitos sistemas são usados ??para atacar um alvo, esmagando-o sob o peso de várias solicitações ao mesmo tempo. Em alguns casos, o ataque pode ser iniciado a partir de milhares de servidores de uma vez contra um alvo.

Aqui estão alguns dos ataques DDoS mais comuns:

Ping ou ICMP Flooding – Um computador envia um ping para outro sistema com o Intenção de descobrir informações sobre o sistema. Esse ataque pode ser ampliado de modo que os pacotes sendo enviados para um alvo forçam a ficar offline ou sofrer lentidão. Este ataque pode ser facilmente realizado através do uso de hping3.

Smurf Attack – Similar ao ataque acima, mas com um viés para o processo. Em um Smurf, um comando ping é enviado para uma rede intermediária onde é amplificado e encaminhado para a vítima. Este único ping agora se torna um tsunami virtual de tráfego.

SYN Flooding – O equivalente ao envio de uma carta que requer um recibo de retorno. Contudo, o endereço de retorno é falso. Se for necessário um recibo de devolução e o endereço de retorno for falso, o recibo não irá a lugar nenhum e um sistema à espera de confirmação será deixado no limbo por algum período de tempo. Um invasor que envia solicitações SYN suficientes para um sistema pode usar todas as conexões em um sistema para que nada mais possa passar.

Ataque de Fragmentação de IP – Requer um invasor para usar conhecimento avançado do protocolo Transmission Control Protocol / Internet Protocol (TCP/IP) para quebrar pacotes em fragmentos que podem burlar a maioria dos sistemas de detecção de intrusão. Em casos extremos, esse tipo de ataque pode causar travamentos, bloqueios, reinicializações, telas azuis e outros danos.

Informação do Banner

Como você aprendeu na fase de footprinting, você pode coletar informações de um servidor executando um banner grabbing. Este processo não é diferente do anterior. Você pode usar ferramentas como Telnet ou PuTTY para extrair informações e investigar os serviços internos.

O código a seguir ilustra o que pode ser retornado de um banner:

HTTP/1.1 200 OK
Server: server name and version>

Content-Location: http://192.168.100.100/index.htm
Date: Wed, 12 May 2010 14:03:52 GMT
Content-Type: text/html
Accept-Ranges: bytes
Last-Modified: Wed, 12 May 2010 18:56:06 GMT
ETag: “067d136a639be1:15b6”
Content-Length: 4325

Esse cabeçalho, que é fácil de obter, revela informações sobre o servidor que está sendo vítima. Os servidores Web podem ter essa informação sanitizada, mas o webmaster deve realmente fazer um esforço para isto.

Essas informações podem ser devolvidas facilmente a partir de um servidor web usando o seguinte comando:

telnet www.nomedositealvo.com 80

Outra maneira de obter informações sobre um servidor web seria usar um utilitário conhecido como ID Serve do www.grc.com.

Outro método de identificar um servidor é usar o Netcraft. Netcraft é eficaz na identificação de um servidor web e pode fornecer os resultados quanto ao tipo de servidor web.

Outras ferramentas que podem fornecer ou verificar informações sobre um servidor da Web incluem o seguinte:

  • Nmap através da sua opção -sV. Por exemplo, use o comando nmap -sV <nome do domínio> onde <nome do domínio> é o destino no qual você deseja identificar o servidor da Web.
  • Netcat de uma forma semelhante ao uso do Telnet para obter cabeçalhos. Por exemplo, use o comando netcat com a sintaxe nc address> 80 para identificar o serviço em execução na porta 80.
  • Shodan motor de busca em www.shodanhq.com
  • HTTPRecon para impressão digital de um site
  • HTTPrint, embora antigo, pode identificar alguns sites, mas não deve ser usado a menos que outras opções não estejam sendo úteis.

Mensagens de erro

Mensagens de erro podem revelar um monte de informações sobre um servidor e um aplicativo da Web. As revelações descuidadas de mensagens de erro podem fornecer informações que podem ser usadas para um ataque ou pelo menos ajustar melhor um ataque. Mensagens como 404 comum podem informar um visitante que o conteúdo não está disponível ou localizado no servidor. No entanto, há uma abundância de outras mensagens de erro que revelam diferentes tipos de informações, desde o muito detalhado até o muito obscuro.

Felizmente, em muitos servidores e aplicações, as mensagens de erro podem ser configuradas ou suprimidas conforme necessário. Normalmente, essas mensagens não devem ser muito descritivas – se forem vistas em absoluto – fora de um ambiente de desenvolvimento ou teste.

Felizmente, muitos servidores web permitem a desativação de mensagens detalhadas ou a configuração de páginas de erro personalizadas que não dão informações.

Suprimindo mensagens de erro em aplicativos para garantir que eles não revelam coisas internas de uma aplicação é vital. Um aplicativo da web que revela muito pode permitir que um atacante ajuste o seu ataque muito rapidamente. Fazer mensagens de erro menos verbosas ou mais genéricas pode tornar alguns ataques significativamente mais difíceis. Por exemplo, um ataque conhecido como SQL injection, é muito mais difícil se as mensagens de erro forem gerenciadas adequadamente. Forçaria o atacante a executar uma injeção SQL cegamente.

Vandalizando Servidores Web

Servidores Web são os alvos de vários tipos de ataques, mas um dos ataques mais comuns é o ato de vandalismo conhecido como desfiguração. Defacing em um site pode ser agressivo ou sutil, dependendo dos objetivos do atacante, mas em ambos os casos os objetivos são os mesmos: embaraçar a empresa, fazer uma declaração, ou apenas ser um incômodo. Para desfigurar um site, é possível usar vários métodos, dependendo do nível de habilidade, capacidades e oportunidades disponíveis do invasor.

Sugestões de livros:

Sou bacharel em Sistemas de Informação pela Estácio de Sá (Alagoas), especialista em Gestão Estratégica da Tecnologia da Informação pela Univ. Gama Filho (UGF) e pós-graduando em Gestão da Segurança da Informação pela Univ. do Sul de Santa Catarina (UNISUL). Certificações que possuo: EC-Council CEH, CompTIA (Security+, CySA+ e Pentest+), EXIN (EHF e ISO 27001), MCSO, MCRM, ITIL v3. Tenho interesse por todas as áreas da informática, mas em especial em Gestão e Governança de TI, Segurança da Informação e Ethical Hacking.

Deixe um comentário

O seu endereço de e-mail não será publicado.