sexta-feira, 27 de novembro de 2009

Blind SQL injection

Quando um atacante executa ataques de SQL Injection, por vezes, o servidor responde com mensagens de erro do servidor de banco de queixar-se que a sintaxe da consulta SQL está incorreta.

Blind SQL injection é idêntico ao SQL Injection normal, exceto que, quando um atacante tenta explorar uma aplicação, em vez de começar uma mensagem de erro úteis, eles adquirem uma página genérica especificada pelo desenvolvedor em seu lugar. Isso faz com que explorar um potencial ataque de injeção SQL mais difícil mas não impossível. Um invasor ainda pode roubar dados, solicitando uma série de perguntas Verdadeiro e falso através de instruções SQL.

Fonte: http://www.owasp.org/index.php/Blind_SQL_Injection

Cross site scripting ou XSS

Cross site scripting (também conhecido como XSS) é uma vulnerabilidade que permite a um atacante enviar código malicioso (geralmente na forma de Javascript) para outro usuário. Porque um navegador não é possível saber se o script deve ser confiável ou não, ele vai executar o script no contexto do usuário permitindo ao invasor acessar os cookies ou tokens de sessão retidos pelo navegador.

Usuários mal-intencionados podem injectar JavaScript, VBScript, ActiveX, HTML ou Flash em um aplicativo vulnerável para enganar o usuário, a fim de coletar dados a partir deles. Um invasor pode roubar o cookie de sessão e retomar a conta, a representação do usuário. Também é possível modificar o conteúdo da página apresentada ao usuário.

Como corrigir essa vulnerabilidade
Seu script deve ter meta caracteres filtro de entrada.
Em casos de linguagem PHP usar:


Aplicação com vulnerabilidade:

$procurar = $_GET[“procurar”];

Aplicação sem vulnerabilidade:

$procurar = htmlspecialchars ($_GET[“procurar”]);




Dica do Pedro Elsner

Classe que altera todos os valores via GET e POST automáticamente.

Inclusive, ela filtra inclusive se for passado algum vetor via GET ou POST


$valor){
if (is_array($valor)){
self::filter($valor);
}
else{
$return["$chave"] = htmlspecialchars($valor);
}
}

return $return;
}
}

/* Ativando */
$_GET = AntiXSS::filter($_GET);
$_POST = AntiXSS::filter($_POST);

?>


Em todas as páginas do site basta apenas dar um include desse arquivo.
Pode acrescentar também sessions e cookies. Por exemplo:



/* Ativando */
session_start();
$_SESSION= AntiXSS::filter($_SESSION);
$_COOKIE = AntiXSS::filter($_COOKIE);
$_GET = AntiXSS::filter($_GET);
$_POST = AntiXSS::filter($_POST);

?>

Valeu pela colaboração Pedro.
Agência J1 Digital.


SQL Inject

SQL injection é uma vulnerabilidade que permite que um invasor para alterar backend SQL manipula as ações e entrada dos usuários. Uma injeção de SQL ocorre quando os aplicativos web aceitam a entrada do usuário que está diretamente colocado em uma instrução SQL e não propriamente filtrar caracteres perigosos.

Esta é uma da camada de aplicação mais comum de ataques actualmente a ser utilizado na Internet. Apesar do fato que é relativamente fácil de se proteger contra, há um grande número de aplicações web vulnerável.

O impacto desta vulnerabilidade:
Um atacante pode executar instruções SQL arbitrário no sistema vulnerável. Isso pode comprometer a integridade do seu banco de dados e / ou expor informações confidenciais.

Dependendo do back-end banco de dados em uso, as vulnerabilidades de injeção SQL levar a diferentes níveis de dados / acesso ao sistema para o atacante. Pode ser possível, não só para manipular as consultas, mas a UNIÃO de dados arbitrários, use subselects, ou acrescentar consultas adicionais. Em alguns casos, pode ser possível ler ou escrever para fora de arquivos, ou para executar comandos de shell do sistema operacional subjacente.

Alguns servidores SQL como o Microsoft SQL Server contém e os procedimentos armazenados estendidos (funções de banco de dados do servidor). Se um invasor pode obter acesso a esses procedimentos, pode ser possível para comprometer toda a máquina.

Como corrigir essa vulnerabilidade
Seu script deve ter meta caracteres e filtro de entrada do usuário da mesma forma em buscas, formulários, envio de arquivos (uploads), contato entre outros com possibilidade de realizar consultas por meio GET ou POST.