¿Cuáles son los tipos comunes de vulnerabilidades?
La inyección SQL (Inyección SQL), conocida como ataque de inyección o inyección SQL, se usa ampliamente para obtener ilegalmente el control de un sitio web y es una vulnerabilidad de seguridad en la capa de base de datos de una aplicación. . Al diseñar el programa, el programa no revisó los comandos SQL incrustados en la cadena de entrada, y la base de datos pensó erróneamente que era un comando SQL normal y lo ejecutó, lo que provocó que la base de datos fuera atacada, lo que puede provocar robo de datos, manipulación, y eliminación, y además conducen a que los sitios web queden expuestos a códigos maliciosos, puertas traseras y otros peligros.
Por lo general, las ubicaciones de la inyección SQL incluyen:
(1) Envío de formularios, principalmente solicitudes POST, incluidas solicitudes GET
(2) Envío de parámetros de URL; , principalmente parámetros de solicitud GET;
(3) Envío de parámetros de cookies
(4) Algunos valores modificables de los encabezados de solicitud HTTP, como Referrer, Referrer, Referrer, Referrer, Referidor, Referidor, Referidor, etc.
(4) Algunos valores modificables en el encabezado de la solicitud HTTP, como Referer, User_Agent, etc.
(5) Algunos puntos de entrada de borde, como información de archivos .mp3, etc.
El daño de la inyección SQL no solo se refleja a nivel de la base de datos, sino que también puede dañar el sistema operativo que aloja la base de datos; si la inyección SQL se utiliza para montar malware, también puede usarse para propagar malware. etc. Estos daños incluyen, entre otros:
(1) Fuga de información de la base de datos: se filtra información privada del usuario almacenada en la base de datos. Como centro de almacenamiento de datos, las bases de datos a menudo almacenan diversa información privada. Los ataques de inyección SQL harán que esta información privada sea transparente para los atacantes.
(2) Manipulación de páginas web: Manipulación de páginas web específicas mediante la manipulación de la base de datos.
(3) Hackeo de sitios web y distribución de malware: modifique los valores de ciertos campos de la base de datos, incruste enlaces a sitios web e implemente ataques de piratería.
(4) La base de datos es operada de manera maliciosa: el servidor de la base de datos es atacado y la cuenta del administrador del sistema de la base de datos es manipulada.
(5) Controlar remotamente el servidor e instalar una puerta trasera. A través del soporte del sistema operativo proporcionado por el servidor de la base de datos, los piratas informáticos pueden modificar o controlar el sistema operativo.
(6) Destruye los datos del disco duro y paraliza todo el sistema.
La clave para resolver los problemas de inyección SQL es inspeccionar estrictamente todos los datos que puedan provenir de la entrada del usuario y utilizar el principio de privilegio mínimo en la configuración de la base de datos. Las soluciones comúnmente utilizadas son:
(1) Todas las declaraciones de consulta utilizan la interfaz de consulta parametrizada proporcionada por la base de datos. Las declaraciones parametrizadas utilizan parámetros incrustados en la declaración SQL en lugar de variables de entrada del usuario. Casi todos los sistemas de bases de datos proporcionan actualmente interfaces de ejecución de sentencias SQL parametrizadas, que pueden resultar muy eficaces para prevenir ataques de inyección SQL.
(2) Escapar o codificar caracteres especiales ('\<>&*;, etc.) ingresando a la base de datos.
(3) Confirme el tipo de cada tipo de datos. Por ejemplo, los datos numéricos deben ser numéricos y los campos de almacenamiento de la base de datos deben corresponder al tipo int.
(4) La longitud de los datos debe definirse estrictamente para evitar que las declaraciones de inyección SQL largas se ejecuten correctamente hasta cierto punto.
(5) Unifique la codificación de cada capa de datos del sitio web. Se recomienda utilizar la codificación UTF-8 para todas, porque la codificación inconsistente de las capas superior e inferior puede causar que algunos modelos de filtrado sean omitido.
(6) Limite estrictamente los permisos de operación de la base de datos de los usuarios del sitio web y solo proporcione a los usuarios permisos que satisfagan sus necesidades laborales, minimizando así el daño de los ataques de inyección de bases de datos.
(7) Evite mostrar mensajes de error de SQL en el sitio web, como errores de tipo, discrepancias de campos, etc., para evitar que los atacantes utilicen estos mensajes de error para emitir algunos juicios.
(8) Antes de iniciar el sitio web, se recomienda utilizar algunas herramientas profesionales de detección de inyección SQL para detectar y reparar estas vulnerabilidades de inyección SQL de manera oportuna.
2. Vulnerabilidad de secuencias de comandos entre sitios
Las secuencias de comandos entre sitios (generalmente denominadas XSS) ocurren en el lado del cliente y pueden usarse para robar privacidad, realizar engaños de phishing, robar contraseñas, difundir códigos maliciosos y otros ataques. . Las tecnologías utilizadas en los ataques XSS se dirigen principalmente a HTML y Javascript, pero también incluyen VBScript y ActionScript. Las tecnologías utilizadas en los ataques XSS son principalmente HTML y Javascript, pero también incluyen VBScript y ActionScript. Las tecnologías utilizadas en los ataques XSS son principalmente HTML y Javascript, pero también incluyen VBScript y ActionScript. Aunque los ataques XSS no dañan directamente el servidor WEB, se propagan a través del sitio web y provocan ataques a los usuarios del sitio web, lo que resulta en el robo de cuentas de usuario del sitio web, lo que también representa una grave amenaza para el sitio web.
Los tipos XSS incluyen:
(1) Sitio cruzado no persistente: vulnerabilidad reflectante de secuencias de comandos entre sitios, que actualmente es el tipo más común de sitio cruzado. El código entre sitios generalmente existe en un enlace. Cuando se solicita dicho vínculo, el código entre sitios se refleja a través del servidor. Este tipo de código entre sitios no se almacena en el servidor (como en una base de datos). El ejemplo dado en el apartado anterior es de este tipo.
(2) Sitio cruzado persistente: este es el tipo más directo de sitio cruzado y el código del sitio cruzado se almacena en el lado del servidor (como en una base de datos). Una situación común es que un usuario publica en un foro. Si el foro no filtra los datos de Javascript ingresados por el usuario, los navegadores de otros usuarios que vean la publicación ejecutarán el código Javascript incrustado en el autor.
(3) DOM entre sitios (DOM XSS): esta es una vulnerabilidad entre sitios que ocurre en el DOM (modelo de objetos de documento) del cliente. Es principalmente un problema de seguridad causado por la lógica del script del cliente.
Los daños de XSS incluyen:
(1) Engaño de phishing: el más típico es utilizar la vulnerabilidad reflectante de secuencias de comandos entre sitios del sitio web de destino para redirigir el sitio web de destino a un sitio web de phishing, o inyectar JavaScript en sitios web de phishing para monitorear las entradas de formularios en el sitio web de destino, e incluso lanzar modos de ataque de phishing más avanzados basados en DHTML.
(2) Caballo de Troya: el uso de IFrames en varios sitios para incrustar sitios web maliciosos ocultos, redirigir objetivos a sitios web maliciosos o ventanas emergentes a sitios web maliciosos, etc., se puede utilizar para implementar ataques troyanos.
(3) Robo de identidad: la cookie es el identificador de autenticación del usuario para un sitio web específico. XSS puede robar la cookie del usuario y utilizarla para robar los permisos de operación del usuario en el sitio web. Si se roban las cookies del administrador de un sitio web, se puede causar un gran daño al sitio web.
(4) Robo de información del usuario del sitio web: cuando se roba la cookie de un usuario para obtener la identidad del usuario, el atacante puede obtener los permisos operativos del usuario en el sitio web y ver la información privada del usuario.
(5) Spam: por ejemplo, en la comunidad SNS, los atacantes aprovechan las vulnerabilidades XSS y utilizan la identidad del atacante para enviar grandes cantidades de spam a grupos objetivo específicos.
(6) Secuestro del comportamiento web del usuario: algunos ataques XSS avanzados pueden incluso secuestrar el comportamiento web del usuario y monitorear el historial de navegación del usuario, los datos enviados y recibidos, etc.
(7) Gusanos XSS: Los gusanos XSS se pueden utilizar para publicidad, tráfico, montar a caballo, hacer bromas, destruir datos en línea, implementar ataques DDoS, etc.
Las técnicas de prevención XSS comúnmente utilizadas incluyen:
(1) Al igual que con las recomendaciones para la protección de inyección SQL, se supone que todas las entradas son sospechosas y se deben verificar estrictamente todas las entradas. scripts e iframe y otras palabras. La entrada aquí no solo se refiere a la interfaz de entrada con la que los usuarios pueden interactuar directamente, sino que también incluye variables en las cookies en las solicitudes HTTP, variables en los encabezados de las solicitudes HTTP, etc.
(2) Verificar no sólo el tipo de datos, sino también su formato, longitud, rango y contenido.
(3) No se limite a verificar y filtrar datos en el lado del cliente. Los pasos clave de filtrado deben completarse en el lado del servidor.
(4) Verifique también los datos de salida. Es probable que los valores de la base de datos se generen en varios lugares de un sitio web grande. Incluso si la entrada está codificada y manipulada de otro modo, se deben realizar comprobaciones de seguridad en el punto de salida de cada lugar.
(5) Pruebe todas las amenazas conocidas antes de lanzar la aplicación. 3. Vulnerabilidad de contraseña débil
No existe una definición estricta y precisa de contraseña débil. Generalmente se considera que las contraseñas que otros pueden adivinar fácilmente (es posible que te conozcan muy bien) o descifradas con herramientas de descifrado son débiles. contraseñas. La configuración de contraseñas generalmente sigue los siguientes principios:
(1) No utilice contraseñas vacías ni contraseñas predeterminadas del sistema. Como todos sabemos, las contraseñas vacías o las contraseñas predeterminadas del sistema son características típicas de las contraseñas débiles.
(2) La longitud de la contraseña no debe ser inferior a 8 caracteres.
(3) La contraseña no debe ser una combinación de caracteres consecutivos (como AAAAAAAA) ni caracteres repetidos (como tzf.tzf.).
(4) Las contraseñas deben ser una combinación de los siguientes cuatro tipos de caracteres: letras mayúsculas (A-Z), letras minúsculas (a-z), números (0-9) y caracteres especiales. Cada categoría contiene al menos un carácter. Si una categoría contiene solo un carácter, ese carácter no debe ser el primero ni el último.
(5) Las contraseñas no deben contener el nombre del individuo y la fecha de nacimiento, padres, hijos y cónyuge, aniversarios, nombres de inicio de sesión, direcciones de correo electrónico y otra información sobre el individuo, así como palabras de un diccionario.
(6) Las contraseñas no deben ser palabras con números o símbolos que reemplacen ciertas letras.
(7) La contraseña debe ser fácil de recordar y escribirse rápidamente para evitar que otros vean fácilmente lo que escribe detrás de usted.
(8) Las contraseñas deben cambiarse al menos una vez dentro de los 90 días para evitar que intrusos no detectados sigan usando la contraseña. 4. Vulnerabilidad de seguimiento de encabezados HTTP
La especificación HTTP/1.1 (RFC2616) define el método HTTP TRACE, que los clientes utilizan principalmente para probar u obtener información de diagnóstico enviando una solicitud TRACE al servidor web. Cuando un servidor web tiene TRACE habilitado, los encabezados de las solicitudes enviadas se devuelven intactos en el cuerpo de respuesta del servidor, donde es probable que los encabezados HTTP incluyan un token de sesión, una cookie u otra información de autenticación. Un atacante podría aprovechar esta vulnerabilidad para engañar a los usuarios legítimos para que obtengan su información privada. Debido a que las solicitudes HTTP TRACE pueden iniciarse a través de scripts del navegador del cliente (como XMLHttpRequest) y son accesibles a través de interfaces DOM, son fácilmente explotables. Una defensa común contra las vulnerabilidades de seguimiento de encabezados HTTP es desactivar el método HTTP TRACE. 5. Vulnerabilidad de ejecución remota de comandos de Struts2
Apache Struts es una arquitectura de código abierto para crear aplicaciones web Java. Existe un error de filtrado de entrada en Apache Struts que podría explotarse para inyectar y ejecutar código Java arbitrario si se encuentra un error de conversión. La mayoría de las vulnerabilidades de ejecución remota de código se deben al uso de Apache Struts Xwork como marco de aplicación del sitio web. Este software tiene vulnerabilidades de ejecución remota de código de alto riesgo y genera riesgos. CNVD se ha ocupado de múltiples vulnerabilidades de este tipo. Por ejemplo, el sitio web "Sistema de posicionamiento por satélite de vehículos GPS" tiene una vulnerabilidad de ejecución remota de comandos. CNVD se ha ocupado de múltiples vulnerabilidades de este tipo, por ejemplo: el sitio web "Sistema de posicionamiento por satélite GPS para vehículos" tiene una vulnerabilidad de ejecución remota de comandos: el sitio web "Sistema de posicionamiento por satélite GPS para vehículos" tiene una vulnerabilidad de ejecución remota de comandos (CNVD-2012-13934); el mensaje Aspcms existe vulnerabilidad de ejecución remota de código (CNVD-2012-11590), etc.
Para corregir dichas vulnerabilidades, simplemente vaya al sitio web oficial de Apache y actualice Apache Struts a la última versión
6. Vulnerabilidad de phishing de marco (vulnerabilidad de inyección de marco)
El ataque de inyección de fotogramas es un ataque contra Internet Explorer 5, Internet Explorer 6 e Internet Explorer 7. Este ataque hace que Internet Explorer no compruebe el sitio de destino en busca del marco resultante, lo que permite el acceso entre marcos a código arbitrario (como Javascript o VBScript). Este ataque también puede ocurrir cuando se inyecta código a través de múltiples marcos, ya que el script no puede reconocer la entrada de múltiples marcos. Esta otra forma de inyección de fotogramas afecta a los navegadores y scripts de todos los proveedores, que no reconocen entradas que no son de confianza. Si su aplicación no requiere marcos diferentes para comunicarse entre sí, puede evitar la inyección del marco eliminando el nombre del marco por completo y utilizando marcos anónimos. Sin embargo, dado que las aplicaciones a menudo requieren marcos para comunicarse entre sí, este enfoque no es factible. Por lo tanto, es una práctica común utilizar un marco con nombre, pero utilizar un marco diferente en cada sesión, con nombres impredecibles. Un enfoque posible es agregar la etiqueta de sesión del usuario a cada nombre de marco base, como main_display. 7. Vulnerabilidades de carga de archivos
Las vulnerabilidades de carga de archivos generalmente son causadas por un filtrado deficiente de las variables de la ruta de carga de archivos en el código de la página web. Si el código de implementación de la función de carga de archivos no limita estrictamente el sufijo del archivo y el tipo de archivo cargado por el usuario, el atacante puede cargar cualquier archivo, incluido el archivo de puerta trasera web (webshell), a través del directorio de acceso a la página web, y luego controlar de forma remota el servidor del sitio web. Por lo tanto, durante el desarrollo de sitios web y aplicaciones, los archivos cargados deben estar estrictamente restringidos y verificados, y se deben cargar archivos con códigos maliciosos. Al mismo tiempo, los permisos de ejecución de los directorios relevantes están restringidos para evitar ataques de Webhell. 8. Fuga del script de prueba de la aplicación
Debido a que el script de prueba carece de un filtrado suficiente de los datos de los parámetros enviados, un atacante remoto puede utilizar esta vulnerabilidad para ver el contenido de cualquier archivo en el sistema con los permisos del proceso WEB. La defensa contra tales vulnerabilidades a menudo requiere un filtrado estricto de los datos enviados para detectar ataques de manera efectiva.
9. Vulnerabilidad de fuga de direcciones IP privadas
La dirección IP es un símbolo importante de los usuarios de la red y es lo que los atacantes necesitan saber antes de atacar. Hay muchas formas de obtenerlo. Para diferentes condiciones de la red, los atacantes adoptarán diferentes métodos, como: usar el comando Ping en la LAN para hacer ping al nombre de la otra parte en la red para obtener la IP; QQ en Internet para mostrar directamente. El método más eficaz es interceptar y analizar los paquetes de red de la otra parte. Los atacantes pueden encontrar y analizar directamente la información del encabezado IP de los paquetes de datos interceptados a través de software y luego conocer la IP específica en función de esta información. Para obtener el "método de análisis de paquetes" más eficaz, puede instalar algún software para eliminar automáticamente la información de IP en el encabezado del paquete de datos. Sin embargo, el uso de este software también tiene algunas desventajas, como: ocupar seriamente los recursos y reducir el rendimiento de la computadora; se verá afectado por algunos foros o sitios web que no son adecuados para los usuarios de cibercafés, etc. Hoy en día, el método más común para que los usuarios individuales oculten su IP es usar un servidor proxy, porque después de usar un servidor proxy, el "servicio de redireccionamiento" modificará los paquetes de datos salientes, haciendo que el método de "análisis de paquetes" sea ineficaz. Algunos software de red que filtran fácilmente la IP del usuario (QQ, MSN, IE, etc.) admiten el uso de servidores proxy para conectarse a Internet, especialmente después de que QQ usa software proxy como "ezProxy" para conectarse, la versión IP de QQ no puede. mostrar la dirección IP. Aunque los servidores proxy pueden ocultar eficazmente la IP del usuario, los atacantes también pueden omitir el proxy y encontrar la dirección IP real de la otra parte. En qué circunstancias el usuario utiliza y qué método para ocultar la IP depende de la situación. x. Solicitudes de inicio de sesión sin cifrar
Debido a una configuración web insegura, las solicitudes de inicio de sesión transmiten campos confidenciales como nombres de usuario y contraseñas sin cifrar, lo que permite a los atacantes espiar la red para secuestrar esta información confidencial. Se recomienda cifrarlos antes de transmitir, por ejemplo usando SSH.
11. Vulnerabilidades de fuga de información confidencial
La inyección SQL, XSS, cruce de directorios, contraseñas débiles, etc. pueden provocar la filtración de información confidencial y los atacantes pueden obtener información confidencial a través de vulnerabilidades. Por diferentes razones, los métodos de defensa también son diferentes.