Red de conocimiento informático - Conocimiento informático - Cómo realizar pruebas de penetración web

Cómo realizar pruebas de penetración web

¿Qué son las pruebas de penetración?

La prueba de penetración es un ingeniero de pruebas de penetración que simula completamente las técnicas de ataque y las técnicas de descubrimiento de vulnerabilidades que los piratas informáticos pueden usar, realiza una exploración en profundidad de la seguridad de la red, el host y las aplicaciones de destino, y descubre las enlaces más vulnerables del sistema.

¿Cómo realizar pruebas de penetración web?

Marco completo de pruebas de penetración web Cuando hay miles de aplicaciones web que deben probarse, es necesario establecer un marco completo de pruebas de seguridad. El objetivo más alto del proceso es garantizar la calidad de las pruebas de seguridad. servicios entregados a los clientes.

1. Establecimiento del proyecto: establecimiento del proyecto, organización del tiempo, asignación de mano de obra, establecimiento de objetivos, determinación de la persona de la interfaz del proveedor.

Análisis del sistema y análisis de amenazas: analiza la arquitectura del sistema para aplicaciones web específicas; , componentes usados, interfaces proporcionadas externamente, etc., use STRIDE como modelo de amenaza para realizar el análisis de amenazas de seguridad correspondiente, genere una tabla de análisis de amenazas de seguridad, enfocándose en las 3 amenazas principales;

Desarrollar casos de prueba: basados ​​en resultados del análisis de amenazas Desarrollar casos de prueba correspondientes, que se generan de acuerdo con la plantilla y son ejecutables;

Ejecución de pruebas y extracción de vulnerabilidades: ejecución de casos de prueba y pruebas divergentes para extraer vulnerabilidades o problemas de seguridad correspondientes;

Solución de problemas y pruebas de regresión: guiar a los desarrolladores de aplicaciones de los clientes para solucionar problemas de seguridad o vulnerabilidades y realizar pruebas de regresión para garantizar que los problemas de seguridad o vulnerabilidades se reparen y no se introduzcan nuevos problemas de seguridad;

Proyecto revisión resumida: resumen del proceso del proyecto, revisión del documento de salida y archivo de documentos relacionados.

2. El proceso de prueba de penetración de aplicaciones web

Se divide principalmente en 3 etapas, a saber: recopilación de información → descubrimiento de vulnerabilidades → explotación de vulnerabilidades. :

1. Recopilación de información

En la etapa de recopilación de información, necesitamos recopilar la mayor cantidad de información posible sobre la aplicación web de destino, como por ejemplo: tipo de lenguaje de script, tipo de servidor, estructura de directorio, software de código abierto utilizado, tipo de base de datos, todas las páginas vinculadas, marcos utilizados, etc.

Tipos de lenguajes de secuencias de comandos: los tipos de lenguajes de secuencias de comandos comunes incluyen: php, asp, aspx, jsp, etc.

Método de prueba:

1 Rastree todos los enlaces del sitio web y verifique el sufijo

2 Acceda directamente a una página inexistente y agregue un sufijo diferente para probar

3 Verifique robots.txt y verifique el sufijo

Tipo de servidor: los servidores web comunes incluyen: apache, tomcat, IIS, ngnix, etc.

Prueba método:

1 Verifique el encabezado para determinar el tipo de servidor

2 Determine según el mensaje de error

3 Determine según la página predeterminada

La estructura del directorio: conozca más directorios, puede encontrar más debilidades, como exploración de directorios, fugas de código, etc.

Método de prueba

1 Utilice un diccionario para enumerar directorios

2 Utilice un rastreador para rastrear todo el sitio web o utilice motores de búsqueda como Google para obtenerlo

3 Compruebe si se ha filtrado el archivo robots.txt

Software de código abierto utilizado: si conocemos el software de código abierto utilizado por el objetivo, podemos encontrar vulnerabilidades en el software relevante y probarlo directamente. el sitio web.

Métodos de prueba

Identificación de huellas dactilares (hay muchas herramientas de identificación de huellas dactilares de código abierto en Internet)

Tipo de base de datos: existen diferentes métodos de prueba para diferentes bases de datos.

Método de prueba

1 Hacer que la aplicación informe un error y ver el mensaje de error

2 Escanear el puerto de la base de datos del servidor (efectivo cuando no se realiza NAT y el firewall no está filtrado)

Todas las páginas vinculadas: esto es similar a la adquisición de la estructura de directorios anterior, pero esto no solo obtiene todas las páginas funcionales del sitio web, sino que a veces también obtiene el código fuente respaldado por el administrador.

Método de prueba

1 Utilice un diccionario para enumerar páginas

2 Utilice un rastreador para rastrear todo el sitio web o utilice motores de búsqueda como Google para obtenerlo

3 Compruebe si se ha filtrado el archivo robots.txt

Marco utilizado: muchos sitios web utilizan marcos de código abierto para desarrollar sitios web rápidamente, por lo que también es muy importante recopilar información sobre el marco del sitio web.

Método de prueba

Identificación de huellas dactilares (hay muchas herramientas de identificación de huellas dactilares de código abierto en Internet)

2 Descubrimiento de vulnerabilidades

En. En esta etapa, cuando realizamos pruebas, debemos recetar el medicamento adecuado y no podemos escanear a ciegas. Primero debemos determinar si la aplicación de destino utiliza software público de código abierto, marcos de código abierto, etc., y luego realizar un escaneo de vulnerabilidades en profundidad.

Acerca del descubrimiento de vulnerabilidades en software de código abierto

Software de código abierto: el software de código abierto común incluye wordpress, phpbb, dedecms, etc.

Marco de trabajo de código abierto: común marco de código abierto Hay Struts2, Spring MVC, ThinkPHP, etc.

Servidores de middleware: los servidores de middleware comunes incluyen jboss, tomcat, Weblogic, etc.

Servicios de base de datos: servicios de bases de datos comunes mssql , mysql, oracle , redis, sybase, MongoDB, DB2, etc.

Métodos de prueba para software de código abierto

1 Determinar la información de la versión del software de código abierto a través del software de reconocimiento de huellas dactilares, y identifique vulnerabilidades abiertas según la información de diferentes versiones Encuentre vulnerabilidades en la versión correspondiente de la base de datos para probar

2 Para la página de inicio de sesión en segundo plano predeterminada, la autenticación del puerto del servicio de la base de datos y otras entradas, puede realizar un simple craqueo por fuerza bruta, intentos de contraseña predeterminada, etc.

3 Uso Las herramientas de descubrimiento de vulnerabilidades de código abierto se utilizan para escanear vulnerabilidades, como: WPScan

Acerca de aplicaciones de desarrollo propio

Manual Pruebas: en esta etapa, necesitamos probar manualmente todas las funciones que interactúan con los usuarios, por ejemplo: dejar un mensaje, iniciar sesión, realizar un pedido, salir, devolver, pagar y otras operaciones.

Escaneo de software: utilice escaneo de software gratuito, como: appscan, wvs, netsparker, burp, etc.

Posibles vulnerabilidades existentes

Puntos clave de Owasp

Archivo de carga de código de seguridad

El archivo de seguridad del código contiene

Código de seguridad SSRF

p>

Vulnerabilidad lógica del restablecimiento de contraseña

Vulnerabilidad lógica de la vulnerabilidad de pago

Vulnerabilidad lógica de acceso no autorizado

Seguridad de la plataforma de seguridad del middleware

p>

3. Explotación de vulnerabilidades

Existen diferentes métodos de explotación de vulnerabilidades para diferentes debilidades. que requieren más puntos de conocimiento. Generalmente, esta etapa incluye dos métodos, uno es la prueba manual y el otro es la prueba de herramientas

Prueba manual

La prueba manual consiste en acceder al servicio de destino a través del cliente o servidor, y manualmente El programa envía datos especiales, incluidas entradas válidas e inválidas, observa el estado del objetivo y las reacciones a diversas entradas y utiliza tecnología de detección de vulnerabilidades para descubrir problemas en función de los resultados. Las pruebas manuales no requieren herramientas auxiliares adicionales y el evaluador puede completarlas de forma independiente, lo que las hace relativamente sencillas de implementar. Sin embargo, este método depende en gran medida del evaluador y requiere que éste tenga una buena comprensión del objetivo. Las pruebas manuales se pueden utilizar para aplicaciones web, navegadores y otros programas que requieren la interacción del usuario.

Este método se puede utilizar cuando existen operaciones especiales de filtrado, o cuando no existen herramientas de explotación establecidas en la red.

Prueba de herramientas

Existen muchas herramientas de explotación gratuitas útiles en Internet, como sqlmap para inyección de sql, matesploit para vulnerabilidades de software, etc.