Nos últimos posts falei sobre ataques do tipo SQLInjection, que se resume a ataques em aplicações web, em que os bancos de dados web estão vulneráveis, seja na entrada de dados, seja na mensagem de erro que retorna para o usuário quando suas credenciais são inseridas erroneamente, entre outros.
Só para lembrar: nesse tipo de ataque, o hacker consegue acesso a nome de usuários, tabelas, manipulando os dados dessa aplicação, inclusive podendo até alterar e excluir as tabelas do banco de dados.
Mas, então o que é Blind SQLi???? O que esse tipo de ataque difere de um ataque SQLi?
O Blind SQLi é usado quando uma aplicação web está vulnerável a um ataque de SQL Injection, porém diferente de ataques com SQLi, os resultados retornados por ataques Blind SQLi não são visíveis para o invasor (daí o nome BLIND SQLi).
*BLIND significa cego em inglês.
O invasor não consegue acessar os dados diretamente, porém o código malicioso injetado altera o comportamento da aplicação, dependendo da declaração SQL chamada para essa página.
Basicamente, esse tipo de ataque procura por diferenças entre o código de injeção verdadeiro (1=1, “true answer pages”) e o código falso (1=2; “false answer pages"). Apesar de não trazer nenhuma informação sobre a aplicação ou mensagem de erro, o hacker pode analisar as diferenças das informações retornadas a partir do código de injeção verdadeiro (true answer pages) e o falso (false answer pages):
- Diferentes Hashes;
- Diferenças nas estruturas HTML;
- Diferentes padrões de senhas;
- Diferenças lineares em somas de caracteres ASCII;
- Diferentes comportamentos, como tempo de resposta da aplicação.
Caso essas diferenças sejam encontradas na aplicação, o invasor por extrair toda informação do banco de dados usando consultas booleanas. Abaixo, segue o exemplo dessas consultas em três diferentes bancos de dados:
MySQL:
- Program.php?id=1 and 100>(ASCII(Substring(user(),1,1)))
-“True-Answer Page” or “False-Answer Page”?
MSSQL:
- Program.php?id=1 and 100>(Select top 1 ASCII(Substring(name,1,1))) from sysusers)
ORACLE
- Program.php?id=1 and 100>(Select ASCII(Substr(username,1,1))) from all_users where rownum<=1)
Várias ferramentas podem automatizar esse tipo de ataque, localizando a vulnerabilidade e os dados a serem atacados.
Uma das ferramentas que automatizam esse tipo de ataque é chamada de Marathon Tool. Desenvolvida em .NET, e pode atacar banco de dados SQL Server, MySQL, MS Access e Oracle. Seu código fonte pode ser baixado no site http://www.codeplex.com/marathontool
Segue a tela inicial da ferramenta:
Um grande abraço a todos!
Nenhum comentário:
Postar um comentário