Cómo eliminar archivos mediante un ataque de inyección SQL
Declaración: = " SELECT * FROM Users WHERE Valor = " a _ variable "
La declaración anterior es una declaración SQL muy común. Su función principal es permitir al usuario ingresar un número de empleado y luego consultar la información del empleado. Sin embargo, si esta oración es modificada por un atacante ilegal, puede convertirse en una mano negra para destruir los datos. Por ejemplo, cuando el atacante ingresa la variable, ingresa el siguiente contenido: sa 001'; eliminar tabla c. _ orden-1. Entonces la declaración SQL anterior se convierte en select * de los usuarios donde valor = 'sa 001'; ¿Qué significa? "El punto y coma después de sa001" indica el final de una consulta y el comienzo de otra declaración. El guión doble después de c_order indica que el resto de la línea actual es solo un comentario y debe ignorarse si el código modificado es sintácticamente correcto. , el servidor ejecutará el código. Al procesar esta declaración, el sistema primero ejecutará la declaración de consulta para encontrar la información del usuario con el número de usuario SA001. Luego, los datos se eliminarán de la tabla C_ORDER (si no hay claves primarias y otras). restricciones relacionadas, la operación de eliminación será exitosa). Es imposible detectar la manipulación mediante programación si la sintaxis es correcta. Por lo tanto, debe validar todas las entradas del usuario y verificar cuidadosamente el código que ejecuta el comando SQL de construcción en el servidor que está utilizando.
En segundo lugar, SQL. Principios de los ataques de inyección.
Se puede ver que los ataques de inyección SQL son muy dañinos. Antes de explicar sus métodos de prevención, es necesario que los administradores de bases de datos comprendan. principios de sus ataques. Esto ayudará a los administradores a tomar medidas específicas.
La inyección SQL es un ataque común a las bases de datos. En este modo de ataque, el atacante inserta algún código malicioso en la cadena y luego pasa la cadena. a la instancia de la base de datos SQLServer, analizado y ejecutado de varias maneras. Siempre que el código malicioso cumpla con las reglas de la declaración SQL, el sistema no lo descubrirá cuando el código sea compilado y ejecutado. >
Hay dos formas principales de ataques de inyección SQL. Una es insertar directamente el código en la variable de entrada del usuario conectada al comando SQL y ejecutarlo. El ejemplo dado por el autor anterior utiliza este método porque es directo. vinculado a la declaración SQL, por lo que también se denomina ataque de inyección directa. El segundo es un método de ataque indirecto, en el que el código malicioso se almacena en la tabla o como la cadena almacenada se conectará a un SQL dinámico. comando para ejecutar código SQL malicioso.
El proceso de inyección funciona terminando la cadena de texto anticipadamente y luego agregando un nuevo comando. Tomando como ejemplo el ataque de inyección directa, cuando el usuario ingresa una variable, la actual. La declaración termina con un punto y coma y luego se inserta una declaración SQL maliciosa. Debido a que el comando insertado puede tener cadenas adicionales agregadas antes de la ejecución, los atacantes suelen utilizar la marca de comentario "-" para terminar la cadena insertada. Al ejecutar, el sistema pensará que las siguientes declaraciones están comentadas, por lo que el siguiente texto se ignorará y no se compilará ni ejecutará.
En tercer lugar, prevenir ataques de inyección SQL.
Dado que los ataques de inyección SQL son tan dañinos, ¿cómo prevenirlos? Las siguientes sugerencias pueden ayudar a los administradores de bases de datos a prevenir ataques de inyección SQL.
1. Los permisos de los usuarios normales y de los usuarios administradores del sistema deben distinguirse estrictamente.
Si un usuario normal inserta otra declaración Drop Table en una declaración de consulta, ¿se permite ejecutarla? Debido a que la declaración Drop está relacionada con el objeto básico de la base de datos, el usuario debe tener los permisos relevantes para operar la declaración. En el diseño de permisos, no es necesario otorgar permiso al usuario final, es decir, al usuario del software de aplicación, para crear y eliminar objetos de la base de datos. Por lo tanto, incluso si hay código malicioso incrustado en las declaraciones SQL que utilizan, estos códigos no se ejecutarán debido a restricciones en sus permisos de usuario.
Por lo tanto, al diseñar su aplicación, es mejor distinguir a los usuarios administradores del sistema de los usuarios normales. Esto puede minimizar el daño de los ataques de inyección a la base de datos.
2. Forzar el uso de sentencias parametrizadas.
Si las variables ingresadas por el usuario no están directamente incrustadas en la declaración SQL al escribir la declaración SQL. Si pasa esta variable a través de un parámetro, podrá prevenir eficazmente los ataques de inyección SQL. En otras palabras, la entrada del usuario nunca puede incorporarse directamente en una declaración SQL. En su lugar, la entrada del usuario debe filtrarse o las variables ingresadas por el usuario deben pasarse mediante declaraciones parametrizadas. Las declaraciones parametrizadas utilizan parámetros en lugar de incorporar variables de entrada del usuario en la declaración SQL. Con este enfoque, se pueden eliminar la mayoría de los ataques de inyección SQL. Desafortunadamente, no muchos motores de bases de datos admiten declaraciones parametrizadas. Sin embargo, los ingenieros de bases de datos deberían intentar utilizar declaraciones parametrizadas al desarrollar productos.
3. Fortalecer la verificación de las aportaciones de los usuarios.
En términos generales, existen dos formas de prevenir ataques de inyección SQL. El primero es fortalecer la inspección y verificación de la entrada del usuario; el segundo es forzar el uso de declaraciones parametrizadas para transmitir el contenido de la entrada del usuario. En las bases de datos de SQLServer, existen muchas herramientas de validación del contenido ingresado por el usuario que pueden ayudar a los administradores a lidiar con los ataques de inyección SQL. Pruebe el contenido de una variable de cadena y acepte solo el valor requerido. Rechace entradas que contengan datos binarios, secuencias de escape y caracteres de comentarios. Esto ayuda a prevenir la inyección de scripts y algunos ataques de desbordamiento del búfer. Pruebe la entrada del usuario en cuanto a tamaño y tipo de datos, e implemente límites y conversiones adecuados. Esto ayuda a prevenir desbordamientos intencionales del búfer y tiene un efecto significativo en la prevención de ataques de inyección.
Por ejemplo, se pueden utilizar procedimientos almacenados para validar la entrada del usuario. Los procedimientos almacenados se pueden utilizar para filtrar variables ingresadas por el usuario, como rechazar algunos símbolos especiales. Por ejemplo, en el código malicioso anterior, siempre que el procedimiento almacenado filtre los puntos y coma, el código malicioso será inútil. Antes de ejecutar la declaración SQL, puede rechazar algunos símbolos especiales mediante el procedimiento almacenado de la base de datos. Sin afectar las aplicaciones de bases de datos, se debe permitir que la base de datos rechace entradas que contengan los siguientes caracteres. Como por ejemplo el delimitador de punto y coma, que es el principal cómplice de los ataques de inyección SQL. Por ejemplo separador de comentarios. Las anotaciones solo se utilizan en el diseño de datos. Generalmente, los usuarios no necesitan comentarios en sus declaraciones de consulta y pueden rechazarlos directamente. Generalmente no hay ninguna pérdida inesperada al hacer esto. Rechace estos símbolos especiales, no ayudarán incluso si hay código malicioso incrustado en la declaración SQL.
Por lo tanto, siempre valide la entrada del usuario probando el tipo, la longitud, el formato y el rango, y filtre la entrada del usuario. Esta es una medida común y eficaz para prevenir ataques de inyección SQL.
4. Utilice los parámetros de seguridad de la base de datos de SQL Server con más frecuencia.
Para reducir el impacto adverso de los ataques de inyección en la base de datos de SQL Server, se diseñan especialmente parámetros SQL relativamente seguros en la base de datos de SQL Server. Durante el proceso de diseño de la base de datos, los ingenieros deben intentar utilizar estos parámetros para evitar ataques maliciosos de inyección SQL.
Por ejemplo, las colecciones de parámetros se proporcionan en la base de datos de SQL Server. Esta colección proporciona capacidades de verificación de tipos y validación de longitud. Si el administrador utiliza este conjunto de parámetros, la entrada del usuario se tratará como valores de caracteres en lugar de código ejecutable. Incluso si la entrada del usuario contiene código ejecutable, la base de datos lo filtrará. Porque la base de datos solo lo trata como un carácter normal en este momento. Otra ventaja de utilizar la colección de parámetros es que puede imponer comprobaciones de tipo y longitud, y los valores fuera de rango desencadenarán una excepción. Si el valor ingresado por el usuario no cumple con las restricciones de tipo y longitud especificadas, se generará una excepción y se informará al administrador. Por ejemplo, en el caso anterior, si el tipo de datos definido por el número de empleado es un tipo de cadena, la longitud es de 10 caracteres. Aunque el contenido ingresado por el usuario también son datos de tipo carácter, su longitud alcanza los 20 caracteres. Entonces se generará una excepción porque la longitud de la entrada del usuario excede el límite de longitud del campo de la base de datos.
5. ¿Cómo prevenir ataques de inyección SQL en un entorno multicapa?
En un entorno de aplicaciones de varios niveles, todos los datos ingresados por el usuario deben verificarse antes de permitirles ingresar a la zona de confianza. Los datos que no pasen el proceso de validación deben ser rechazados por la base de datos y se devolverá un mensaje de error al siguiente nivel. Implementar verificación multicapa. Las precauciones sin objetivo tomadas contra usuarios malintencionados pueden no ser efectivas contra un atacante determinado. Lo mejor es validar la entrada en la interfaz de usuario y en todos los puntos posteriores a través de los límites de confianza. Por ejemplo, validar datos en aplicaciones cliente puede evitar la inyección de scripts simples. Sin embargo, cualquier usuario malintencionado que pueda eludir al cliente puede obtener acceso ilimitado al sistema si las capas inferiores creen que su entrada ha sido validada. Por lo tanto, para entornos de aplicaciones de múltiples capas, al prevenir ataques de inyección, todas las capas deben trabajar juntas y se deben tomar las medidas correspondientes en el cliente y la base de datos para evitar ataques de inyección de declaraciones SQL.
6. Si es necesario, utilice herramientas profesionales de escaneo de vulnerabilidades para encontrar posibles puntos de ataque.
El uso de herramientas profesionales de escaneo de vulnerabilidades puede ayudar a los administradores a encontrar puntos que puedan ser atacados por inyección SQL. Sin embargo, las herramientas de escaneo de vulnerabilidades solo pueden descubrir puntos de ataque y no pueden defenderse proactivamente contra los ataques de inyección SQL. Por supuesto, los atacantes suelen utilizar esta herramienta. Por ejemplo, los atacantes pueden utilizar la herramienta para buscar objetivos automáticamente y llevar a cabo ataques. Por lo tanto, si es necesario, las empresas deberían invertir en algunas herramientas profesionales de escaneo de vulnerabilidades. Un escáner de vulnerabilidades perfecto es diferente de un escáner de red, que busca específicamente vulnerabilidades de inyección SQL en la base de datos. Los últimos escáneres de vulnerabilidades descubren las últimas vulnerabilidades. Por lo tanto, con la ayuda de herramientas profesionales, los administradores pueden descubrir vulnerabilidades de inyección SQL y recordarles que tomen medidas proactivas para prevenir ataques de inyección SQL. Si el administrador de la base de datos descubre la vulnerabilidad de inyección SQL que el atacante puede encontrar y se toman medidas activas para bloquear la vulnerabilidad, el atacante no tendrá forma de comenzar.
Varios métodos de seguridad comunes para evitar que los piratas informáticos invadan su sitio web.
El propósito de este artículo es informar a las empresas cómo crear un sitio web seguro para resistir los ataques de piratas informáticos al crear un sitio web.
Con el paso del tiempo, las ventajas de Internet se han vuelto cada vez más evidentes. Cada vez más empresas en el mundo están estableciendo sus propios sitios web y realizando actividades de comercio electrónico a través de esta plataforma de comunicación por ondas de radio ininterrumpidas las 24 horas. Debido a la particularidad y complejidad de Internet, una vez que su sitio web corporativo está conectado a Internet, es un lugar público y cualquiera puede buscar información en su sitio web corporativo. Cualquiera (como un hacker) puede realizar pruebas técnicas en su sitio web corporativo y encontrar lagunas en la programación de su sitio web corporativo. Ya sea que sus intenciones sean maliciosas o no, no hay nada que puedas hacer para detener sus acciones porque el hacker opera desde una computadora remota.
Construir un sitio web seguro está relacionado con la reputación comercial de la empresa. Ante los cada vez mayores ataques cibernéticos, es muy necesario tomar algunas precauciones de seguridad básicas para su sitio web.
Filtrado y conversión de caracteres ilegales
Antes de atacar el sitio web, los piratas informáticos utilizan métodos de búsqueda de rutas para inyectar código de script web ejecutable y sintaxis SQL en los mensajes, foros, búsquedas, etc. del sistema del sitio web para lograr el propósito de invadir el sitio web. Los cuadros de entrada de texto de todas las interfaces interactivas del sitio web (como el sistema de mensajes del sitio web, el sistema BBS, el sistema de blog, el sistema de búsqueda, el sistema de inicio de sesión, etc.) adoptan tecnología de conversión y filtrado de caracteres ilegales del lado del cliente. ). Al filtrar y convertir caracteres ilegales, el código malicioso ejecutable se convierte en código HTML legible, que básicamente pierde el poder de destruir el sitio web y desempeña un papel en la protección del código fuente del programa del sitio web para que no sea destruido.
Crear una página de información que especifique un error personalizado.
La ventaja es evitar que el código fuente del diseño del sitio web se desborde. Cuando los piratas informáticos invaden el sistema de administración de backend de un sitio web, a menudo ingresan la sintaxis SQL ejecutable en la barra de direcciones de la página web y el nombre del archivo del sitio web de acuerdo con el hábito de los programadores de nombrar las páginas web. Una vez que el hacker adopta este método, lo llevará a una página de información que especifica un error personalizado.
Rechazar el método de autenticación de Cookies
La ventaja de las Cookies es que cuando los administradores y los usuarios registrados inician sesión en el sitio web, Cookie guardará la información de inicio de sesión. Cuando vuelvan a iniciar sesión, Cookie la guardará. guarde automáticamente esta información de inicio de sesión. La información se guarda en el cuadro de texto de entrada en la página de inicio de sesión. Su función es facilitar el inicio de sesión, pero también brinda una buena oportunidad para que los piratas informáticos recopilen información de las cookies. Por lo tanto, debe negarse a utilizar la autenticación de cookies del cliente para iniciar sesión; en su lugar, debe utilizar la autenticación del servidor para iniciar sesión y guardar el número de cuenta y la contraseña mediante cifrado unidireccional.
No utilices un sistema de creación de sitios web de autoservicio para crear tu sitio web corporativo.
Para aumentar las ventas y reducir costos (de hecho, a la mayoría de los clientes les gusta comprar sistemas de creación de sitios web de autoservicio baratos), algunas empresas de diseño de sitios web tienen diferentes propósitos (como gestión de contenido de sitios web, BBS, noticias). comunicados, mensajes, blogs, etc.) desarrollan un sistema de creación de sitios web de autoservicio. ), y para competir por el mercado y ampliar la visibilidad del producto, a menudo venden productos de dos maneras: la versión personal se puede descargar de forma gratuita, la versión comercial debe comprarse, de hecho, ambas versiones del sitio web están desarrolladas; basado en la misma tecnología del programa y la versión comercial La versión se puede utilizar con fines comerciales después de la autorización y verificación, con soporte técnico y garantías de mantenimiento. Los piratas informáticos descargan la versión personal para estudiar el código fuente abierto de estos sistemas de sitios web de construcción propia; encontrar vulnerabilidades del programa. Una vez que se descubre una vulnerabilidad de programa explotable, buscan sistemas de sitios web de construcción propia del mismo modelo y versión a través de la plataforma del motor de búsqueda y luego lanzan un ataque. La solución es encontrar una empresa con capacidades de desarrollo de sitios web independientes para diseñar su sitio web corporativo. Al encapsular el código fuente del diseño del sitio web en un componente ".dll", esto no solo garantiza la seguridad del diseño del sitio web, protege el código fuente, sino que también mejora el factor de seguridad del sitio web y reduce el daño de la intrusión en el sitio web. porque los piratas informáticos suelen atacar el sitio web estudiando el código fuente del sitio web y encontrando vulnerabilidades del programa.
Solución al problema de la "biblioteca violenta" de Gugel
A algunos programadores les gusta usar rutas virtuales para llamar a la base de datos cuando desarrollan sitios web, por lo que necesitan usar el servicio WWW para guardar la base de datos en En una carpeta, esto naturalmente no puede escapar a los ojos de los astutos piratas informáticos. Una vez que los piratas informáticos descifran la ubicación de almacenamiento real de la base de datos, pueden abrir y descargar la base de datos desde la barra de direcciones del navegador, lo cual es muy peligroso para el sitio web. Para garantizar que los piratas informáticos no descarguen la base de datos de su sitio web, puede evitar por completo que los piratas informáticos descarguen la base de datos de su sitio web corporativo guardando la base de datos en una carpeta fuera del servicio WWW y llamando a la base de datos a través de una conexión física (real). ) camino.
Crear archivos robots
Para evitar que los motores de búsqueda recopilen carpetas importantes (como la administración de backend) y archivos (como archivos de programa puro) del sitio web, cree " robots" en el directorio raíz del archivo de texto sin formato .txt" del sitio web para evitar que los motores de búsqueda recopilen archivos importantes u otra información confidencial del sitio web; sitio web, primero encuentra el archivo robots en el directorio raíz del sitio web y luego lee el contenido del archivo robots para determinar su rango de inclusión en el sitio web. Se puede decir que los archivos de robots son una gestión limitada de los permisos de los robots de los motores de búsqueda para evitar exponer documentos importantes u otra información confidencial del sitio web en Internet y actuar como un bloqueo defensivo para la seguridad del sitio web. Los diseñadores de sitios web pueden escribir libremente archivos de robots bajo el protocolo de robot de acuerdo con la situación real del sitio web.
Es imposible prevenir por completo los ataques e intrusiones de piratas informáticos, y también es imposible filtrar y convertir por completo cadenas ilegales en cada interfaz del sitio web. Por ejemplo, al cargar archivos, los piratas informáticos astutos evitarán filtrar y convertir cadenas ilegales y guardarán el código de script malicioso ejecutable en formato ".gif" o ".jpg" para lograr ataques de vulnerabilidad de carga de archivos. La solución es importar todos los archivos cargados en archivos de texto sin formato ".txt" y luego leerlos y juzgarlos. Hay muchas formas en que los piratas informáticos pueden acceder a un sitio web. Miles de software gratuito pueden hacer que el sitio web de su empresa sea vulnerable, pero las defensas anteriores son factibles para los piratas informáticos novatos.
Algunos piratas informáticos experimentados también dedicarán algo de energía y tiempo a entrar en su sitio web corporativo. ¿Pensaría que valió la pena? Después de todo, su sitio web es solo un sitio web corporativo, no un sitio web donde los bancos y los valores negocian transacciones en efectivo (su seguridad de programación es mayor). En la mayoría de los casos, los piratas informáticos "héroes" no visitarán el sitio web de su empresa.
1. Invasión de vulnerabilidades de inyección SQL
Este es un método de intrusión del sitio web de ASP ACCESS. La información de la cuenta y la contraseña del administrador se enumeran en la base de datos a través del punto de inyección y luego en el sitio web. Se adivina la dirección de fondo, luego inicie sesión con la cuenta y la contraseña para encontrar el lugar donde se carga el archivo, cargue el caballo de Troya ASP y obtenga un WEBSHELL del sitio web. Esta es la primera parte de la cadena negra y debería usarse con más frecuencia. Ahora hay demasiada gente vendiendo webshell en línea.
2. Uso de la vulnerabilidad de carga ASP
Este enfoque técnico consiste en utilizar la función de carga ASP de algunos sitios web para cargar troyanos ASP. Muchos sitios web limitan los tipos de archivos que se pueden cargar. En términos generales, no se permite cargar archivos con el sufijo ASP, pero los piratas informáticos pueden romper esta restricción. Los piratas informáticos pueden cargar troyanos ASP mediante el engaño de COOKIE para obtener los permisos WEBSHELL del sitio web.
3. Obtenga WEBSHELL haciendo una copia de seguridad de la base de datos backend.
Esta es principalmente una función de utilizar el backend del sitio web para realizar copias de seguridad y restaurar la base de datos de ACCESS. Debido a que variables como la ruta de la base de datos de respaldo no se filtran, el sufijo de cualquier archivo se puede cambiar a ASP. Luego use la función de carga del sitio web para cargar un troyano ASP con el nombre del archivo cambiado al sufijo JPG o GIF, y luego use la función de copia de seguridad y restauración de la biblioteca de recuperación para restaurar el troyano a un archivo ASP, logrando así el propósito de obtener permisos de control WEBSHELL. en el sitio web.
4. Intrusión en el borde del sitio web
Esta tecnología utiliza la función de consulta de nombre de dominio vinculado a IP para averiguar cuántos sitios web hay en el servidor y luego se entromete a través de algunos sitios web débiles para obtener permisos y luego controlar otros sitios web en el servidor.
No entiendo lo siguiente, pero los webmasters con un poco de alta tecnología los entenderán.
Tecnología de intrusión utilizada por el punto de inyección 5.sa.
Así es como se piratea el sitio web ASP MSSQL. Encuentre el punto de inyección SQL con autoridad SA, luego use la extensión de almacenamiento XP_CMDSHELL de la base de datos SQL para ejecutar el comando del sistema para establecer una cuenta a nivel del sistema y luego inicie sesión a través de 3389, o use NC para abrir el puerto de escucha en un asador. y luego use el troyano VBS para descargar un NC en En el servidor, ejecute el comando de conexión inversa NC para conectar inversamente el servidor al asador remoto, de modo que el asador remoto tenga uno.
6. Tecnología de intrusión de contraseñas débiles de SA
Este método consiste en utilizar un escáner para detectar la información de la cuenta SQL y la contraseña para obtener la contraseña de SA, y luego utilizar herramientas como SQLEXEC para pase 1433 Conecte el puerto al servidor remoto, luego abra una cuenta del sistema e inicie sesión a través de 3389. Entonces este método de intrusión también se puede utilizar con WEBSHELL. Generalmente, los sitios web ASP MSSQL suelen escribir la contraseña de conexión MSSQL en un archivo de configuración. Puede utilizar WEBSHELL para leer la contraseña de SA en el archivo de configuración y luego cargar el troyano SQL para obtener control del sistema.
7. Presentar el término invasión troyana.
Este enfoque técnico consiste en invadir algunos sitios web cuyas direcciones de bases de datos se convierten en archivos ASP. Un pirata informático envía un caballo de Troya a la base de datos a través del tablero de mensajes del sitio web, el sistema de foros y otras funciones, y luego ingresa la dirección de la base de datos del sitio web en el cliente troyano y la envía. Luego, se puede escribir un caballo de Troya ASP en el sitio web y obtenerlo. los permisos WEBSHELL del sitio web.
8. Este foro utiliza el modo de intrusión.
Esta técnica consiste en aprovechar las vulnerabilidades de seguridad de algunos foros y subir troyanos ASP para obtener permisos WEBSHELL. La más típica es que existen vulnerabilidades de seguridad en las versiones 6.0 y 7.0 de la red móvil.
Tomando la versión 7.0 como ejemplo, registre a un usuario normal, luego use una herramienta de captura de paquetes para capturar la COOKIE del archivo ASP enviado por el usuario y luego use software como Mingxiaozi para hacer trampa y cargar un troyano ASP para obtener el WEBSHELL de el sitio web.