Outro método de exploração de SQL Injection e bypassar WAFs
Hoje em dia com os inúmeros ataques via aplicações web com banco de dados e suas facilidades, o uso de WAF (Web Application Firewall) está sendo mais comum.
O WAF pode trabalhar basicamente de 3 formas: Blacklist, Whitelist e Profiling, sendo que a mais comum aplicada (mais fácil de ser implementada) é blacklist, onde são passado em forma de pattern match as expressões que serão bloqueadas caso haja o acesso, mesmo sabendo que o método através de padronização de expressões é falho por padrão ainda se tem que “procurar” alguma forma que invalide a expressão cadastrada no WAF e hoje um pesquisador achou outra forma de conseguir a injeção de códigos mesmo com ele implementado.
A “solução” é bem simples, bastar usar de comentários /* xpto */ para que a linha inserida seja ignorada pelo WAF e reproduzida no sistema, como no exemplo dado pelo pesquisador:
Desta forma, ainda seria bloqueada:
id=1+union/*&id=*/select+table_name+from+information_schema.columns
Mas, se utlizarmos toda a instrução comentada:
id=1/*!limit+0+union+select+concat_ws(0x3a,table_name,column_name)+from+information_schema.columns*/
Teremos sucesso na exploitação, simples e eficaz!
Como já até mesmo comentado no blog do autor, a solução DESTA thread é bem simples “/*!”, porém a atualização dos WAFs não deve ser tão imediata mas quem quiser pode fazer a regra manualmente, coisa bem difícil de ver por aí 😀