Compartilhamento de tecnologia

Injeção secundária de injeção sql

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

injeção secundária

Vulnerabilidades de injeção secundária são uma forma de vulnerabilidade de segurança amplamente difundida em aplicativos da web. Em comparação com a vulnerabilidade de injeção primária, a vulnerabilidade de injeção secundária é mais difícil de detectar, mas tem o mesmo poder de ataque que a vulnerabilidade de injeção primária.

Os hackers constroem dados na forma de envio de solicitações de pacotes de dados HTTP ao servidor para processamento em um navegador ou outro software. A solicitação de pacote de dados enviada pode conter instruções SQL ou comandos construídos pelo hacker.
O aplicativo do lado do servidor armazenará as informações de dados enviadas pelo hacker, geralmente em um banco de dados. A principal função das informações de dados salvas é fornecer dados de entrada originais para que o aplicativo execute outras funções e responda às solicitações do cliente.
O hacker envia uma segunda mensagem de dados de solicitação ao servidor, diferente da primeira.
Após o servidor receber as informações da segunda solicitação enviada pelo hacker, para processar a solicitação, o servidor irá consultar as informações dos dados já armazenados no banco de dados e processá-las, fazendo com que a instrução ou comando SQL construído pelo hacker na primeira solicitação estar no serviço executado no ambiente do terminal.
O servidor retorna informações de dados de resultados de execução. Os hackers podem usar as informações de dados de resultados retornados para determinar se a vulnerabilidade de injeção secundária foi explorada com sucesso.

Em resumo, a injeção secundária se deve à falha na filtragem dos dados ao armazená-los no banco de dados. Primeiro, a solicitação de caracteres especiais construída é enviada para ser armazenada no banco de dados e, em seguida, quando a segunda solicitação é enviada, os caracteres que são enviados. foram enviados ao banco de dados pela primeira vez, formando uma nova instrução sql a ser executada.Tome o nível 24 do sqli-labs como exemplo

sqli-labs menos-24

1. Clique abaixo para registrar um usuário


O nome de usuário registrado aqui é admin'#

         

Neste ponto verificamos o banco de dados, os usuários cadastrados foram armazenados e a senha do admin é DDD

2. Faça login com a conta cadastrada e altere a senha para ccccc

Neste momento, ele avisará que a senha foi alterada com sucesso.

Neste momento, descobrimos que a senha do admin foi alterada para ccccc, mas a senha do nosso usuário registrado admin'# não foi alterada.

Causa da vulnerabilidade

1. Caracteres especiais como ' e # são permitidos durante o registro do usuário.

2. No código-fonte da página de alteração de senha, descobriu-se que existe uma vulnerabilidade óbvia de injeção.

$sql = "ATUALIZAR usuários DEFINIR SENHA='$pass' onde nome de usuário='$username' e senha='$curr_pass' ";

Quando fazemos login na conta admin'# e alteramos a senha, a instrução sql se torna a seguinte, #Comente o código a seguir, para que a senha do usuário admin seja alterada para ccccc

$sql = "ATUALIZAR usuários DEFINIR SENHA='$pass' onde nome de usuário='admin'#' e senha='$curr_pass' ";

Link original: https://blog.csdn.net/qq_44159028/article/details/114325805