minhas informações de contato
Correspondência[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
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