Colección de citas famosas - Colección de versos - ¿Cuáles son los tipos comunes de vulnerabilidades?

¿Cuáles son los tipos comunes de vulnerabilidades?

En primer lugar, la vulnerabilidad de la inyección SQL

Los ataques de inyección SQL (inyección SQL para abreviar), que se utilizan ampliamente para obtener control ilegal de sitios web, son agujeros de seguridad en la capa de base de datos de las aplicaciones. Al diseñar el programa, se ignoró la verificación de las instrucciones SQL contenidas en la cadena de entrada. La base de datos pensó erróneamente que era una instrucción SQL normal y la ejecutó, lo que provocó que la base de datos fuera atacada, lo que podría provocar el robo o modificación de datos. y eliminado, lo que genera código malicioso y los peligros de los programas de puerta trasera integrados en los sitios web.

Por lo general, las ubicaciones de la inyección SQL incluyen:

(1) envío de formularios, principalmente solicitudes POST y solicitudes GET

(2) envío de parámetros URL; Se utiliza principalmente para obtener parámetros de solicitud;

(3) Envío de parámetros de cookies;

(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.

El daño de la inyección SQL no sólo se refleja a nivel de la base de datos, sino que también puede poner en peligro el sistema operativo que aloja la base de datos. Si la inyección SQL se utiliza para montar un caballo, también puede usarse para propagar malware; , etc. Estos peligros 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 información privada. Los ataques de inyección SQL pueden hacer 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 operación de la base de datos.

(3) Troyanos de sitios web y propagación de malware: modifique los valores de algunos campos en la base de datos, incruste enlaces de troyanos de red y lleve a cabo ataques de troyanos.

(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) Control remoto del servidor e instalación de backdoor. El soporte del sistema operativo proporcionado por el servidor de la base de datos permite a los piratas informáticos modificar o tomar el control del 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 verificar estrictamente todos los datos que puedan provenir de la entrada del usuario y utilizar el principio de privilegio mínimo para la configuración de la base de datos. Las soluciones más 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 en lugar de incorporar variables de entrada del usuario en la declaración SQL. Actualmente, casi todos los sistemas de bases de datos proporcionan interfaces de ejecución de declaraciones SQL parametrizadas, que pueden prevenir eficazmente ataques de inyección SQL.

(2) Para caracteres especiales ("\

(3) Confirme el tipo de cada dato. Por ejemplo, los datos numéricos deben ser numéricos y el campo de almacenamiento en la base de datos debe corresponde a int.

(4) La longitud de los datos debe especificarse estrictamente, lo que hasta cierto punto puede evitar que las sentencias de inyección SQL relativamente largas se ejecuten correctamente

(5). La codificación de cada capa de datos del sitio web debe estar unificada. Se recomienda utilizar la codificación UTF-8. La inconsistencia entre la capa superior y la capa inferior puede provocar que se omitan algunos modelos de filtrado. 6) Limite estrictamente los permisos de operación del usuario del sitio web a la base de datos y proporcione al usuario solo una opción para satisfacer los permisos para su trabajo y minimizar el daño de los ataques de inyección a la base de datos.

(7) Evitar. mostrar mensajes de error de SQL en el sitio web, como errores de tipo, discrepancias de campos, etc., para evitar que los atacantes los utilicen. Haga algunos juicios basados ​​en el mensaje de error.

(8) Antes de iniciar el sitio web, se recomienda utilizar algunas herramientas profesionales de detección de inyección de SQL para detectar y reparar estas vulnerabilidades de inyección de SQL de manera oportuna.

2. Los ataques de secuencias de comandos entre sitios (generalmente denominados XSS) ocurren en. del lado del cliente y puede usarse para robar privacidad, estafas de phishing, robar contraseñas, difundir códigos maliciosos y otros ataques. Las tecnologías utilizadas en los ataques XSS son principalmente HTML y Javascript, pero también hay VBScript y ActionScript.

Aunque el ataque XSS no daña directamente el servidor WEB, se propaga a través del sitio web, exponiendo a los usuarios del sitio web a ataques, lo que provoca el robo de cuentas de usuario del sitio web y también causa graves daños al 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. Las etiquetas entre sitios generalmente existen dentro de los enlaces. Cuando se solicita dicho enlace, el código entre sitios se refleja a través del servidor y este código entre sitios no se almacena en el servidor (como una base de datos). El ejemplo dado en el capítulo anterior es un caso así.

(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 servidor (como una base de datos). Es muy común que los usuarios publiquen en foros. Si el foro no filtra los datos del código Javascript ingresados ​​por los usuarios, hará que otros usuarios que naveguen por esta publicación ejecuten el código Javascript incrustado en el cartel.

(3) DOM XSS (Domxss) es una vulnerabilidad entre sitios que ocurre en el cliente 3) DOM (Document Object Model) Es en gran medida un problema de seguridad causado por la lógica del script del cliente.

Los daños de XSS incluyen:

(1) Estafa de phishing: la más típica es utilizar la vulnerabilidad de secuencias de comandos entre sitios reflejada del sitio web de destino para redirigir el sitio web de destino a un sitio web de phishing, o inyectar JavaScript de phishing para monitorear la entrada del formulario del sitio web de destino e incluso lanzar ataques de phishing más avanzados basados ​​en DHTML.

(2) Troyano de sitios web: utilice IFrame para incrustar sitios web maliciosos ocultos, dirigir al atacante al sitio web malicioso o abrir una ventana emergente del sitio web malicioso, que puede llevar a cabo ataques entre sitios.

(3) Robo de identidad: la cookie es la marca de autenticación del usuario para un sitio web específico. XSS puede robar la cookie del usuario y luego usar esta cookie para robar los permisos de operación del usuario para el sitio web. Si se roba la cookie de usuario de un webmaster, causará un gran daño al sitio web.

(4) Robo de información del usuario del sitio web: cuando se pueden robar las cookies del 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) Envío de spam: por ejemplo, en la comunidad SNS, las vulnerabilidades XSS se explotan para enviar una gran cantidad de correos electrónicos no deseados a grupos objetivo específicos tomando prestada la identidad de la persona atacada.

(6) Secuestrar el comportamiento web del usuario: algunos ataques XSS avanzados pueden incluso secuestrar el comportamiento web del usuario, monitorear el historial de navegación del usuario, enviar y recibir datos, etc.

(7) Gusanos XSS: los gusanos XSS se pueden utilizar para hacer publicidad, cepillar el tráfico, montar caballos, hacer bromas, destruir datos en línea e implementar ataques DDoS.

Las técnicas comunes para prevenir XSS incluyen:

(1) Al igual que con las sugerencias para la protección de inyección SQL, se supone que todas las entradas son sospechosas y palabras como script e iframe en todas las entradas se verifican estrictamente. La entrada aquí no es solo la interfaz de entrada con la que los usuarios pueden interactuar directamente, sino que también incluye variables en Cookies en solicitudes HTTP y variables en encabezados de solicitudes HTTP.

(2) Verificar no sólo el tipo de datos, sino también el formato, longitud, rango y contenido de los datos.

(3) No se limite a verificar y filtrar datos en el lado del cliente, los pasos clave de filtrado están en el lado del servidor.

(4)También se deben verificar los datos de salida. Los valores de la base de datos pueden generarse en muchos lugares de un sitio web grande. Incluso si la entrada está codificada, existen controles de seguridad en los puntos de salida en todas partes.

(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. En general, se considera que una contraseña que otros pueden adivinar fácilmente (que pueden conocerle bien) o descifrar con herramientas de descifrado es una contraseña débil. La configuración de contraseñas generalmente sigue los siguientes principios:

(1) No utilice contraseñas en blanco ni contraseñas predeterminadas del sistema, que son contraseñas débiles típicas bien conocidas.

(2) La longitud de la contraseña no debe ser inferior a 8 caracteres.

(3) La contraseña no debe contener caracteres consecutivos (como AAAAAAAA) ni una combinación de caracteres repetidos (como tzf.tzf).

(4) La contraseña debe 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. Contiene al menos un carácter de cada tipo. Si un carácter contiene solo un carácter, no debe ser el primero ni el último.

(5) La contraseña no debe incluir nombre y fecha de nacimiento, fecha de registro, nombre de inicio de sesión, dirección de correo electrónico y otra información relacionada con la persona, así como palabras del diccionario.

(6) La contraseña no debe ser texto con números o símbolos, sino letras determinadas.

(7) La contraseña debe ser fácil de recordar y puede ingresarse rápidamente para evitar que otros vean fácilmente su entrada desde atrás.

(8) Cambie su contraseña al menos una vez dentro de los 90 días para evitar que intrusos no detectados continúen usando su contraseña.

Cuatro. Vulnerabilidad de seguimiento de encabezado HTTP HTTP/1.1 (RFC 2616) define el método HTTP TRACE, que los clientes utilizan principalmente para probar u obtener información de diagnóstico enviando solicitudes de seguimiento al servidor web. Cuando el seguimiento está habilitado en un servidor web, los encabezados de las solicitudes enviadas se devuelven completos en el cuerpo de la respuesta del servidor, donde los encabezados HTTP pueden incluir tokens de sesión, cookies u otra información de autenticación. Un atacante puede aprovechar esta vulnerabilidad para engañar a usuarios legítimos y obtener su información privada. Esta vulnerabilidad suele combinarse con otros medios para crear ataques eficaces. Debido a que las solicitudes de seguimiento HTTP pueden iniciarse a través de scripts del navegador del cliente (como XMLHttpRequest) y se puede acceder a ellas a través de la interfaz DOM, los atacantes pueden explotarlas fácilmente. Los métodos para defenderse de las vulnerabilidades de seguimiento de encabezados HTTP suelen desactivar los métodos de seguimiento HTTP.

Verb (abreviatura de verbo) Vulnerabilidad de ejecución remota de comandos de Struts2 Apache Struts es una arquitectura de código abierto para crear aplicaciones web Java. Apache Struts tiene un error de filtrado de entrada que se puede utilizar para inyectar y ejecutar código Java arbitrario si se encuentra un error de conversión. La mayoría de las razones de las vulnerabilidades de ejecución remota de código en los sitios web son que el sitio web utiliza Apache Struts Xwork como marco de aplicación del sitio web. Debido a que el software contiene una vulnerabilidad de ejecución remota de código de alto riesgo, el sitio web enfrenta riesgos de seguridad. CNVD se ha ocupado de muchas de estas vulnerabilidades, como la vulnerabilidad de ejecución remota de comandos en el sitio web "GPS Vehicle Satellite Positioning System" (CNVD-2012-13934); la vulnerabilidad de ejecución remota de código en el libro de visitas de Aspcms (CNVD-2012-11590); etc.

Para solucionar esta vulnerabilidad, simplemente vaya al sitio web oficial de Apache y actualice Apache Struts a la última versión.

6. Vulnerabilidad de phishing de marcos (vulnerabilidad de inyección de marcos) El ataque de inyección de marcos es un ataque contra Internet Explorer 5, Internet Explorer 6 e Internet Explorer 7. Este ataque hace que Internet Explorer no busque el marco resultante en el sitio web de destino, lo que permite acceder a código arbitrario como Javascript o VBScript a través de marcos. Este ataque también puede ocurrir cuando se inyecta código a través de múltiples marcos, ya que el script no reconoce la entrada de múltiples marcos. Otra forma de esta inyección de marco afectará a los navegadores de todos los proveedores y a los scripts 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, este enfoque no es factible porque las aplicaciones a menudo requieren comunicación entre marcos. Por lo tanto, es común usar marcos con nombre, pero use un marco diferente por sesión, con nombres impredecibles. Un enfoque posible es agregar el token 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 laxo de las variables de ruta de carga de archivos en el código web. Si el código de implementación de la función de carga de archivos no limita estrictamente el sufijo y el tipo de archivo cargado por el usuario, el atacante puede cargar cualquier archivo, incluidos los archivos de puerta trasera del sitio web, a través del directorio al que accede la web y luego controlar de forma remota el servidor del sitio web. Por lo tanto, en el proceso de desarrollo de sitios web y aplicaciones, es necesario limitar y verificar estrictamente los archivos cargados, y está prohibido cargar archivos con código malicioso. Al mismo tiempo, restrinja los permisos de ejecución de los directorios relacionados para evitar ataques de webshell.

8. Se filtra el script de prueba de la aplicación. Debido a que el script de prueba carece de 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. Para prevenir este tipo de vulnerabilidades suele ser necesario un filtrado estricto de los datos enviados y una detección eficaz de los ataques.

9. Vulnerabilidad de fuga de direcciones IP privadas La dirección IP es un símbolo importante de los usuarios de la red, que los atacantes deben conocer antes de atacar. Hay muchas formas de obtenerlo y los atacantes adoptarán diferentes métodos según las diferentes condiciones de la red. Por ejemplo: usar el comando Ping en la LAN para hacer ping al nombre de la otra parte en la red para obtener la IP; de QQ para mostrarlo directamente en Internet. El método más eficaz es interceptar y analizar los paquetes de datos de la red de la otra parte. Los atacantes pueden utilizar software para encontrar y analizar directamente la información del encabezado IP de los paquetes de datos interceptados y luego conocer la IP específica en función de esta información. En lo que respecta al "método de análisis de paquetes" más eficaz, puede instalar algún software que pueda eliminar automáticamente la información de IP en el encabezado del paquete. Sin embargo, el uso de estos software también tiene algunas desventajas, tales como: consumir seriamente recursos y reducir el rendimiento del ordenador; verse afectado al acceder a algunos foros o sitios web no aptos para usuarios de cibercafés, etc. Actualmente, el método más popular para que los usuarios individuales oculten su IP es utilizar un proxy. Debido a que el "servicio de reenvío" modificará los paquetes enviados después de usar el servidor proxy, el método de "análisis de paquetes" no funcionará. Algunos software de red (QQ, MSN, IE, etc.) que revelan fácilmente las IP de los usuarios 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 mostrarse. la dirección IP. Aunque los servidores proxy pueden ocultar eficazmente la IP del usuario, los atacantes también pueden eludir el proxy y encontrar la dirección IP real de la otra parte. En qué circunstancias, la forma en que los usuarios ocultan su IP depende de la situación.

X. Solicitud de inicio de sesión sin cifrar Debido a la configuración web insegura, las solicitudes de inicio de sesión transmiten campos confidenciales como el nombre de usuario y la contraseña sin cifrado. Se recomienda cifrar antes de la transmisión, como SSH.

XI. Las vulnerabilidades de fuga de información confidencial incluyen inyección SQL, XSS, cruce de directorios, contraseñas débiles, etc. Esto provocará la filtración de información confidencial y los atacantes pueden obtener información confidencial a través de vulnerabilidades. Dependiendo de la causa de la enfermedad, los métodos de defensa también son diferentes.