Cómo realizar pruebas de penetración web
Las pruebas de penetración son cuando los ingenieros de pruebas de penetración simulan completamente técnicas de ataque y técnicas de descubrimiento de vulnerabilidades que los piratas informáticos pueden usar, realizan inspecciones en profundidad de la seguridad de las redes, hosts y aplicaciones de destino, y encuentran los enlaces más vulnerables. en el 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 general de este proceso es garantizar la calidad de los servicios de pruebas de seguridad prestados 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 de amenazas del sistema: para aplicaciones web específicas, analizar el sistema; arquitectura, componentes utilizados, interfaces externas, etc. , utilice STRIDE como modelo de amenazas para analizar las amenazas de seguridad correspondientes, genere la tabla de análisis de amenazas de seguridad y concéntrese en analizar las tres amenazas principales;
Cree casos de prueba: cree casos de prueba correspondientes en función de los resultados de el análisis de amenazas Según la salida de la plantilla, es ejecutable;
Ejecución de pruebas y extracción de vulnerabilidades: ejecución de casos de prueba y pruebas divergentes, extracción de problemas de seguridad o vulnerabilidades correspondientes;
Reparación de problemas; pruebas de regresión: guiar a los desarrolladores de aplicaciones cliente para solucionar problemas de seguridad o vulnerabilidades y realizar pruebas de regresión para garantizar que los problemas de seguridad o vulnerabilidades se solucionen y que no se introduzcan nuevos problemas de seguridad;
Revisión del resumen del proyecto: proceso del proyecto resumen, salida Revisión de documentos y archivo de documentos relevantes.
2. Proceso de pruebas de penetración de aplicaciones Web.
Se divide principalmente en tres etapas, a saber: recopilación de información → descubrimiento de vulnerabilidades → explotación de vulnerabilidades. Analicemos cuidadosamente el proceso de cada etapa:
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 como scripts Tipo de lenguaje, tipo de servidor, estructura de directorios, software de código abierto utilizado, tipo de base de datos, todas las páginas vinculadas, marcos utilizados, etc.
Tipos de lenguajes de scripting: Los tipos de lenguajes de scripting comunes incluyen: php, asp, aspx, jsp, etc.
Método de prueba:
1 Tome todos los enlaces del sitio web y verifique el sufijo.
Accede directamente a una página que no existe y luego realiza diferentes pruebas de sufijo.
3 Consulta el archivo robots.txt y comprueba el sufijo.
Tipo de servidor: Los servidores web comunes incluyen apache, tomcat, IIS, ngnix, etc.
Método de prueba:
1 Verifique el encabezado para determinar el tipo de servidor.
2Según el mensaje de error.
3 Juzga según la página predeterminada
Estructura de directorios: cuantos más directorios conozcas, más debilidades podrás encontrar, como exploración de directorios, fugas de código, etc.
Método de detección
1 Utilice un diccionario para enumerar directorios.
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 conoce el software de código abierto utilizado por el objetivo, puede encontrar vulnerabilidades en el software relevante y probar el sitio web directamente.
Método de detección
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: diferentes bases de datos tienen diferentes métodos de prueba.
El método de detección
1 hace que la aplicación informe un error y vea el mensaje de error.
2 Escanee el puerto de la base de datos del servidor (efectivo cuando no se utiliza NAT y el firewall no está filtrado)
Todas las páginas vinculadas: esto es similar a la estructura de directorios anterior, pero Esto no es sólo para obtener todas las páginas funcionales del sitio web, a veces para obtener el código fuente respaldado por el administrador.
Método de detección
1 Utilice un diccionario para enumerar páginas.
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 es muy importante recopilar la información del marco del sitio web.
Método de detección
Identificación de huellas dactilares (hay muchas herramientas de identificación de huellas dactilares de código abierto en Internet)
En segundo lugar, descubrimiento de vulnerabilidades
En esta etapa Al realizar la prueba, debe tomar las medidas adecuadas y no escanear a ciegas. Primero, determine si la aplicación de destino utiliza software de código abierto, marcos de código abierto, etc. y luego realizar un análisis profundo de vulnerabilidades.
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.
Marcos de código abierto: los marcos de código abierto comunes incluyen Struts2, Spring MVC, ThinkPHP, etc.
Servidor de middleware: los servidores de middleware comunes incluyen jboss, tomcat, Weblogic, etc.
Servicios de bases de datos: mssql, mysql, oracle, redis, sybase, MongoDB, DB2 y otros servicios de bases de datos comunes.
Métodos de prueba para software de código abierto
1. Determine la información de la versión del software de código abierto a través del software de reconocimiento de huellas dactilares, basándose en la información de diferentes versiones, encuentre la versión correspondiente de la vulnerabilidad en el archivo. Abra la base de datos de vulnerabilidades para realizar pruebas.
2 Para la página de inicio de sesión en segundo plano predeterminada, la autenticación del puerto del servicio de base de datos y otras entradas, se pueden realizar simples intentos de descifrado por fuerza bruta e intentos de contraseña predeterminada.
3 Utilice herramientas de descubrimiento de vulnerabilidades de código abierto para buscar vulnerabilidades, como WPScan.
Sobre el desarrollo independiente de aplicaciones
Pruebas manuales: en esta etapa, debemos probar manualmente todas las funciones que interactúan con los usuarios, como dejar mensajes, iniciar sesión, realizar pedidos y salir. , regresar y pagar esperar.
Escaneo de software: Utilice escaneo de software gratuito, como appscan, wvs, netsparker, burp, etc.
Posibles vulnerabilidades
Puntos Owasp
Archivos de carga de código de seguridad
Los documentos de seguridad del código incluyen
Código de seguridad SSRF
Restablecimiento de contraseña para vulnerabilidades lógicas
Vulnerabilidades de pago para vulnerabilidades lógicas
Uso de vulnerabilidades lógicas de acceso no autorizado
Seguridad de middleware para seguridad de plataforma
En tercer lugar, explotar vulnerabilidades
Hay diferentes formas de explotar vulnerabilidades según las diferentes debilidades, lo que requiere más conocimiento. Generalmente, esta etapa incluye dos métodos, uno es la prueba manual y el otro es la prueba de herramientas.
Pruebas manuales
Las pruebas manuales son una tecnología de detección de vulnerabilidades que accede al servicio de destino a través del cliente o servidor, envía manualmente datos especiales al programa de destino, incluidas entradas válidas e inválidas, y observa el estado del objetivo, responde a diversas entradas y descubre problemas en función de los resultados. Las pruebas manuales no requieren herramientas auxiliares adicionales, los evaluadores pueden completarlas de forma independiente y son relativamente simples de implementar. Sin embargo, este método depende en gran medida del evaluador y requiere que éste tenga una mejor 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 hay operaciones de filtrado especiales, o cuando no hay herramientas de modelado en la red.
Prueba de herramientas
Hay muchas herramientas gratuitas útiles en Internet, como sqlMAP para inyección SQL y matesploit para vulnerabilidades de software.