módulo de inyección Pikahu-SQL (SQL inject) (artículos de alfabetización)

https://baike.baidu.com/item/sql%E6%B3%A8%E5%85%A5/150289 1 (referirse a la página web)

1. ¿Qué es la inyección de SQL:

inyección SQL que significa la aplicación web no juzgar la legalidad de los datos de entrada del usuario laxas o filtro, un atacante puede agregar mención adicional de consulta SQL predefinido en el buen fin de la aplicación web, sin el conocimiento del Administrador logrado en el caso de una operación ilegal, a fin de lograr cualquier servidor de base de datos de consultas de engaño para llevar a cabo no autorizado a obtener aún más los datos correspondientes .

2, el proceso de inyección:
El primer paso: la detección del punto de inyección SQL. SQL punto de detección de inyección es un paso crítico, a través de aplicaciones analíticas apropiadas, punto de inyección SQL puede determinar qué áreas. Por lo general, siempre y cuando la entrada presentada con las páginas web dinámicas, y el acceso web dinámica a la base de datos, puede existir vulnerabilidad de inyección SQL. Si el programador no es fuerte conciencia de seguridad de la información, el uso de sentencias SQL de forma dinámica construidos para acceder a la base de datos y validación de entrada de usuario no se realiza, hay una gran posibilidad de vulnerabilidades de inyección SQL. Por lo general, si se le da la página de información para determinar si la vulnerabilidad de inyección SQL.
Paso dos: Recopilar información de base de datos de fondo. método de inyección de diferentes bases de datos, funciones son diferentes, así que antes de la inyección, es necesario determinar qué tipo de base de datos. Muchos determinación de método de tipo de base de datos, puede introducir caracteres especiales, tales como comillas simples, por lo que el programa devuelve un mensaje de error, se determinó de acuerdo con la presentación de la información de error; también puede utilizar la función específica para determinar, como la entrada "1 y la versión ()> 0 ", base de datos de fondo el programa vuelve a la versión normal, lo que indica (se ejecuta la función), y para identificar la base de datos, la función de la versión () es una función específica de MySQL, se puede inferir es MySQL.
El tercer paso: adivinar los nombres de usuario y contraseñas. nombres de las tablas de base de datos y de campo son generalmente regular. Mediante la construcción de unas declaraciones especiales SQL seguidas adivinar el nombre de la tabla en la base de datos, nombres de campo, el número de campos, el nombre de usuario y contraseña.
Paso cuatro: Encontrar el portal web de administración. gestión de fondo web no usuarios por lo general ordinario abierto, para encontrar el fondo de gestión de URL de inicio de sesión, puede utilizar Web herramientas de exploración de directorio (por ejemplo: wwwscan, AWVS) buscar rápidamente pueden inscribirse en la dirección, y luego uno a uno a tratar, se puede encontrar la plataforma de inicio de sesión de gestión de fondo URL.
Paso cinco: la invasión y destrucción. Antecedentes generales de gestión tiene una autoridad superior y más funciones, previamente descifrados usando el nombre de usuario y la contraseña de inicio de sesión después de la exitosa plataforma de gestión de fondo, puede destruir cualquier, como por ejemplo la posibilidad de subir troyanos, la manipulación de las páginas web, modificar y robar información, también puede mencionar además el derecho de invadir el servidor web y el servidor de base de datos.

3, modo de inyección SQL se divide a grandes rasgos en dos tipos: de inyección numérico, carácter inyección, (hay un tipo de búsqueda: texto como '% {$ _ GET [' search ']}%' ")

@ 1, inyección numérico:
cuando el parámetro de entrada es un número entero, tal como identificación, edad, número de página, si está presente vulnerabilidad de inyección, puede ser considerado como un implante de tipo digital. Esto parece implante tipo más digital de ASP, PHP y otro idioma tipos débiles, un lenguaje de tipos débiles se deriva tipo automáticamente variable de, por ejemplo, el parámetro id = 8, PHP variable derivada automáticamente de tipo de tipo de datos int id, id = 8 y 1 = 1, que se derivan del tipo cadena, que es característica de un lenguaje de tipos débiles. Para Java, C # Tal lenguaje fuertemente tipado, si se intenta convertir una cadena en un tipo int, una excepción parece incapaz de continuar. Por lo tanto, hay un lenguaje fuertemente tipado raramente vulnerabilidad de inyección numérica. [7]
@ 2, el carácter de inyección
cuando el parámetro de entrada es una cadena, llamado el carácter. Numérica y la inyección de carácter mayor diferencia es que: las comillas simples de tipo digital, no necesitan cerca, mientras que el tipo de cadena generalmente se utiliza para cerrar comillas simples.
Ataque Características:
ataque de inyección SQL es uno de los ataques a la red de aplicaciones web es el medio más común mayor riesgo para la seguridad, en cierta medida, de las vulnerabilidades de desbordamiento de búfer, y firewall en el mercado en busca de vulnerabilidades de inyección SQL no puede ser eficaz la detección y la prevención. Servidor de seguridad Con el fin de hacer que las aplicaciones normales de la red a los datos de acceso en el lado del servidor, se debe permitir que las conexiones hacia adelante desde Internet al servidor Web, por lo que no es la vulnerabilidad de inyección una vez que la aplicación web web, un atacante puede obtener los derechos para acceder a la base de datos y luego coger el servidor en el que el acceso a la base de datos justo en algunos casos, SQL riesgo de ataque de inyección es superior a todas las otras vulnerabilidades como la vulnerabilidad de desbordamiento de búfer. ataques de inyección SQL una amplia gama de comunes y fáciles de poner en práctica, y así grandes destructiva

Notas técnicas:

Desde el carácter '#' del final de la línea

Del - secuencia hasta el final de la línea, por favor nota que '' "-" (guión) Nota requisito de viento después de la segunda guión seguido por un carácter de espacio, al menos,

De / a * después * de la secuencia / la secuencia, la secuencia no puede terminar en la misma fila, por lo que la sintaxis permite comentario abarcar varias líneas.

4, los métodos de ataque:

@ 1, sobre la base de las persianas de Boole
ya que las páginas web son devueltos los valores verdadero o falso, para que los ciegos booleana después de la inyección de una forma de obtener información de base de datos de acuerdo con el valor de la página de retorno.
@ 2, Notas, basado en el tiempo ciego
cuando no hay inyección de resultado booleano (páginas se muestran correctamente) cuando es difícil juzgar si se ejecuta el código inyectado, el análisis final, esto puede ser el punto de inyección existe o no? Esta inyección de Boole vez no será capaz de jugar su papel en el. ciega basada en el tiempo han llegado a ser, así llamada ciega basada en el tiempo que juzgar si la página es el punto de inyección SQL según la diferencia de tiempo entre la página web correspondiente.
@ 3, la inyección de investigación conjunta
mediante la inyección de investigación conjunta premisa es que queremos inyectar una página debe tener una posición de visualización. Es decir, un llamado a la implantación investigación conjunta mediante la unión de dos o más conjuntos de resultados fusión de instrucción de selección, debe seleccionar dos o más de las mismas columnas, y los tipos de datos de las columnas también son los mismos. Las consultas se pueden inyectar en la articulación para añadir el último eslabón en orden por 9 números aleatorios basados en la inyección, según la página devuelve el resultado para determinar el número de sitios de campo.
@ 4, la información de error en base a la inyección
método no se muestra en el bit de página, pero el eco mysql_error (); función de salida de error de tiempo antes de usar. La ventaja es la velocidad de inyección rápida, la desventaja es declaraciones más complejas, pero sólo puede adivinar por el límite de forma secuencial. En general, de hecho, se da método de inyección para la inyección de la formulación, principalmente para no mostrar el bit página, pero sustituyendo el eco mysql_error (); mensaje de error utilizando la salida.

5. Detección:
el modo de detección de inyección SQL Hay dos categorías principales, el primero: control dinámico, es decir, un método utilizado generalmente en la fase de etapa de aceptación o sistema de la operación del sistema se está ejecutando en la línea, usando ataques sistema de monitorización dinámico su escanear, y luego en función de si los resultados de la exploración de vulnerabilidades de inyección SQL para determinar. Segundo: pruebas estáticas, también conocido como código estático escaneado, el código para hacer un análisis profundo. [5]
@ 1, el movimiento de detección de
seguimiento de dos tipos dinámicos: supervisión manual y de seguimiento herramientas. Con respecto a los altos costos y la alta tasa de falta controlados manualmente, el proceso de producción real está más interesado en el seguimiento de herramientas, herramientas, pero igualmente graves limitaciones de monitoreo. La razón es que la herramienta es utilizar el mensaje para determinar si la inyección de SQL para tener efecto, pero sólo por el mensaje es difícil determinar con precisión si existe inyección de SQL, existe una alta tasa de falsas alarmas.
@ 2, detección estacionaria
falsa tasa de alarma del detector de relativamente baja estática, caracterizado código SQL se debe principalmente a la inyección vulnerabilidades obvio.
(1) base de datos de código de interacción;
(2) construido utilizando las sentencias de SQL dinámico cadena de concatenación;
(3) el uso de un conjunto de datos sin filtrar no son de confianza.
Existe en los sistemas convencionales para solucionar problemas de vulnerabilidad de inyección aplicación SQL debido a código estático escanear características obvias, la tasa de falsa alarma baja y leer directamente el código en cuestión, reducir la cantidad de beneficios de trabajo, por lo general utilizando exploración estática.

6, precauciones inyectados
ataques de inyección SQL que causan un gran daño, y ataques al cortafuegos difíciles de interceptar, método de prevención de ataques de inyección SQL es principalmente, en particular, en las siguientes áreas.
1, la gestión jerárquica
de la gestión de la clasificación a los usuarios, en sentido estricto control el permiso del usuario, para el usuario medio, prohíben dar la base de datos para crear, eliminar, modificar, y otros derechos relacionados, sólo el administrador del sistema tiene que añadir, eliminar, cambiar permisos de verificación. Por ejemplo, se añadió el ejemplo anterior el usuario tabla de la gota en la consulta. Desde luego, no se les permite ser ejecutado, de lo contrario la seguridad del sistema de base de datos no se puede garantizar. Por lo tanto limitado por la autoridad de diseño. Así que incluso si un atacante malintencionado está incrustado en los datos de los códigos presentados a los ataques pertinentes. Pero debido a que los permisos se establecen para que el código no puede ser ejecutado. la inyección de SQL para reducir amenazas a la seguridad de la base de datos.
2, el valor de parámetro que se pasa
a los programadores escribir en lenguaje SQL, escribe directamente a prohibir la instrucción SQL variable deben pasar las variables relevantes mediante el establecimiento de los parámetros correspondientes. la inyección de SQL es suprimida. Los datos de entrada no pueden ser incorporados directamente en la instrucción de consulta. Mientras que el contenido del filtro de entrada, los datos de entrada para filtrar inseguro. O el uso de los parámetros pasados por valor de transmisión variable de entrada. Para que pueda maximizar los ataques de inyección SQL Prevent.
3, filtro básico y filtro secundario
de inyección de SQL antes del ataque, el intruso enviar "y" otros caracteres especiales mediante la modificación de los parámetros para determinar si hay lagunas, e inyectar sentencias SQL escritas por diversos personajes seleccionar, actualizar y así sucesivamente. Así precauciones para comprobar la entrada del usuario de inyección SQL para garantizar la seguridad de entrada de datos, las variables de entrada o para comprobar el específico presentado para las marcas individuales y dobles comillas, colon o de otro filtro de conversión de caracteres, evitando de este modo eficazmente la inyección SQL. Por supuesto que hay una gran cantidad de personajes peligrosos, en conseguir los parámetros de entrada del usuario enviado primero a la fundación se filtró, y luego el segundo filtro basado en la función de verosimilitud y la entrada del programa de usuario para garantizar la seguridad del sistema.
4, el uso de parámetros de seguridad
El impacto del ataque con el fin de inyección SQL base de datos SQL efectivamente reprimir. diseño de base de datos SQL Server durante estableció un parámetro especial de seguridad de SQL. Para hacer uso de los parámetros de seguridad debe escribir un programa para prevenir ataques de inyección. Para garantizar la seguridad del sistema.
Parámetros Base de datos SQLServer proporcionado, que funciona en la base de datos es el tipo de datos y validación de la longitud de cheques, cuando se añade a la programación programador colección de parámetros, el sistema filtrar automáticamente la ejecución del código en la entrada del usuario, que se identifica valor de carácter. Si el código malicioso está contenido en la entrada del usuario, la base de datos también se puede realizar para comprobar separó por filtración. Al mismo tiempo, la colección de parámetros se puede hacer cumplir cheque. Una vez que el valor de comprobación está fuera de rango. El sistema será de error anormal al enviar el administrador del sistema de información para los administradores hacen las medidas preventivas adecuadas.
5, escaneo de vulnerabilidades
con el fin de prevenir más eficazmente los ataques de inyección SQL, como la configuración de administración de sistemas, además de las medidas preventivas eficaces, deben descubrir existen vulnerabilidades de seguridad sistema de ataque de SQL. Los administradores del sistema pueden comprar algunos de los sistemas especializados de la herramienta de escaneo de vulnerabilidades de SQL, a través de herramienta de análisis profesional que puede escanear de manera oportuna a la vulnerabilidad existe apropiada en el sistema. Aunque escáner de vulnerabilidades sólo puede escanear a la vulnerabilidad de inyección SQL, no protege contra ataques de inyección SQL. Sin embargo, los administradores de sistemas pueden tomar a las vulnerabilidades de seguridad mediante el escaneo dependiendo de las circunstancias precauciones adecuadas bloquean la vulnerabilidad correspondientes, por lo que los ataques de inyección SQL para cerrar la puerta para garantizar la seguridad del sistema.
6, múltiples verificar
las actuales funciones del sistema de sitio cada vez más grandes y complejos. Para garantizar la seguridad del sistema, la entrada de datos visitante debe someterse a una rigurosa verificación para entrar en el sistema, no por la validación de entrada se le niega el acceso directo a la base de datos, y envía el mensaje equivocado al sistema superior. También verifican que los visitantes entran a la información relacionada con el programa de acceso de los clientes, con el fin de prevenir más eficazmente la inyección de SQL simple. Sin embargo, si la verificación de múltiples capas si la verificación de los datos subyacentes, entonces el atacante eludir el cliente podrá acceder libremente al sistema. Por lo tanto, cuando se realiza la verificación de múltiples capas, a cooperar entre sí en todos los niveles, sólo si los sistemas cliente y el fin para la verificación efectiva de protección a mejorar la protección frente ataques de inyección SQL.
7, el cifrado de la base de datos
El método tradicional de cifrado y descifrado se puede dividir aproximadamente en tres tipos:
(1) simétrico de cifrado: lado de encriptación y el lado de descifrado es decir, utilizan el mismo algoritmo de cifrado y la clave, un Guardar clave de esta solución es crítico, porque se da a conocer el algoritmo y la clave se mantiene en secreto, una vez que se vea comprometida la clave, los hackers todavía se pueden descifrar fácilmente. algoritmos de cifrado simétrico comunes: AES, DES, etc.
(2) la criptografía asimétrica: es decir, usando una clave diferente para las claves de cifrado y descifrado se dividen en claves públicas y privadas, los datos cifrados con la clave privada deben ser descifrados usando la clave pública, los mismos datos deben estar cifrados con el público con la clave privada correspondiente para descifrar, algoritmos de cifrado no simétricas comunes: RSA similares.
(3) de cifrado Irreversible: el uso de algoritmo de hash para cifrar los datos después de que los datos no pueden ser desencriptados de nuevo a la original, por lo que el algoritmo hash utilizado comúnmente son: MD5, SHA-1 y así sucesivamente.

 

Nota: El blog hay SQLi-labs y ejerce resumen completo, la situación básica es la misma.

 

Supongo que te gusta

Origin www.cnblogs.com/li2019/p/12633258.html
Recomendado
Clasificación