SQL injection é uma das vulnerabilidades mais difundidas e exploradas em aplicações Web, não é muito difícil encontrar esta falha em diversos CMSs, plugins e códigos de sites espalhados pela internet.
Ferramentas de proteção como WAFs e IDS/IPS possuem regras que alertam ou bloqueiam este tipo de ataque, porém existem diversas técnicas evasivas que permitem o concretização do ataque como:
- White Space Manipulation;
- URL encoding;
- Unicode/UTF-8;
- Hex Encoding;
- char() function;
- Comment Exploitation;
- Concatenation, etc.
O SQLmap, uma das melhores ferramentas para este tipo de ataque, possui um pool de scripts de evasão ( tamper ) bastante interessante.
Aproveitei o laboratório da apresentação que farei no Flisol para melhorar a detecção destes ataques e acabei criando algumas regras que otimizaram o tempo de identificação e o bloqueio. As regras atuais conseguem identificar o ataque, porém o delay entre a identificação e o bloqueio é um pouco alto, usando mais de um tamper e outras opções como o aumento do intervalo das requisições por exemplo piora ainda mais detecção.
Estas novas regras foram aprovadas pelo upstream do Ossec HIDS estando disponíveis no repositório do projeto e serão publicadas no novo release que está na versão alfa.
Quem estiver interessado em utilizar ou testar apenas adicione as linhas abaixo no arquivo /var/ossec/rules/local_rules.xml.
<group name=”attack,sqlinjection,”> <rule id=”160001″ level=”6″> <if_sid>31100</if_sid> <url>=%27|select%2B|insert%2B|%2Bfrom%2B|%2Bwhere%2B|%2Bunion%2B</url> <description>SQL injection attempt.</description> </rule> <rule id=”160002″ level=”6″> <if_sid>31100</if_sid> <url>%EF%BC%87|%EF%BC%87|%EF%BC%87|%2531|%u0053%u0045</url> <description>SQL injection attempt.</description> </rule> </group> |
Sugestões e melhorias serão sempre bem vindas! =P
Boa Alexos, ótimo post man.
Congrats!