![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/Alvaro_Chirou_Hacking-Web-Inyeccion-SQL-Ciega.jpg?resize=1024%2C576&ssl=1)
Bienvenido a este post donde hablaremos de Hacking Web – Inyección SQL Ciega. La inyección ciega de SQL, una forma sigilosa y astuta de ataque de inyección de SQL, plantea un desafío único para los profesionales de la seguridad debido a su naturaleza esquiva y su dificultad de detección y explotación. En este completo artículo, profundizaremos en el mundo de la inyección SQL ciega y descubriremos los matices sutiles que la distinguen de otros ataques de inyección SQL.
A lo largo del artículo, analizaremos varias herramientas y métodos, centrándonos en Kali Linux como nuestra plataforma preferida, aunque puede utilizar las herramientas mencionadas en la mayoría de los sistemas operativos. A medida que concluimos, le brindaremos un conjunto de mejores prácticas probadas para defender sus aplicaciones web contra estos ataques esquivos y potencialmente dañinos. Al final de este artículo, estará bien versado en cómo comprender, explotar y defenderse contra las vulnerabilidades de inyección SQL ciega.
Ahora, profundicemos en esta guía detallada y prepárese con los conocimientos y técnicas esenciales para abordar de manera efectiva los desafíos que plantea este tipo de vulnerabilidad.
¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?
![](https://i0.wp.com/achirou.com/wp-content/uploads/2023/11/image.png?resize=549%2C67&ssl=1)
¿Qué es la inyección SQL ciega?
La inyección SQL es una vulnerabilidad frecuente de las aplicaciones web que ocurre cuando un atacante logra ejecutar código SQL no autorizado en la base de datos de una aplicación web. Los atacantes hacen esto insertando declaraciones SQL maliciosas en los campos de entrada del usuario, como cuadros de búsqueda o formularios de inicio de sesión. Cuando tiene éxito, un atacante puede obtener información confidencial de la base de datos, modificar o eliminar datos e incluso ejecutar comandos administrativos.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-207.png?resize=691%2C995&ssl=1)
La inyección ciega de SQL, una variante más oculta, ocurre cuando el atacante no puede ver directamente el resultado de sus consultas inyectadas. En este caso, deben deducir los resultados indirectamente utilizando técnicas basadas en contenido o en tiempo. Este tipo de ataque se utiliza cuando la aplicación no muestra visiblemente los resultados de una consulta SQL inyectada, lo que dificulta que el atacante confirme el éxito de sus acciones.
El beneficio de utilizar la inyección SQL ciega sobre un ataque de inyección SQL estándar radica en su sutileza. Dado que el atacante no ve directamente el resultado, puede resultar más difícil para los sistemas de seguridad o los administradores detectar el ataque. El atacante suele utilizar respuestas condicionales ( basadas en booleanos ) o retrasos en el tiempo de respuesta de la aplicación ( basadas en tiempos ) para inferir si el código SQL inyectado ha tenido el efecto deseado.
Al recopilar lenta y metódicamente información sobre la estructura y el contenido de la base de datos, un atacante aún puede explotar una vulnerabilidad de inyección SQL ciega para acceder a datos confidenciales y manipular el sistema sin levantar sospechas inmediatas.
Descargo de responsabilidad
Queremos ser absolutamente claros sobre la importancia de cumplir con las leyes aplicables con respecto al escaneo y la explotación de vulnerabilidades de aplicaciones web. Antes de realizar cualquier forma de piratería ética o prueba de penetración en un sistema, asegúrese de haber obtenido el permiso explícito del sistema o del propietario de la red.
La piratería o el escaneo no autorizados pueden parecer triviales, pero pueden acarrear graves consecuencias legales, incluidas multas o prisión, según su jurisdicción. No lo hagas. Algunas de las leyes que rigen esta actividad incluyen:
- La Ley de Abuso y Fraude Informático (Estados Unidos)
- Secciones 184, 342.1, 380 y 430 del Código Penal de Canadá (Canadá)
- Ley de uso indebido de computadoras de 1990 (Inglaterra)
- Segundo. 202a y 202b del Código Penal alemán (Alemania)
- Ley de Tecnología de la Información Sec. 43 y 66 (India)
- Ley sobre la prohibición del acceso no autorizado a ordenadores (Japón)
Si duda si está actuando con claridad, consulte el acuerdo o el alcance de sus actividades autorizadas con una entidad específica o revise el código de conducta o las pautas de divulgación con cualquiera de los programas de recompensas por errores mencionados al final de este artículo.
Descubriendo y explotando SQLi ciego
Ahora que tiene un conocimiento sólido de la inyección SQL ciega y en qué se diferencia de la inyección SQL normal, profundicemos en el proceso de descubrir y explotar estas vulnerabilidades. Primero, lo guiaremos en la configuración de su entorno de laboratorio, luego realizaremos pruebas manuales de inyección ciega de SQL y, finalmente, usaremos herramientas como SQLMap y Burp Suite para agilizar el proceso de explotación.
Configurando su laboratorio
Para comenzar, deberá configurar su laboratorio para descubrir y explotar vulnerabilidades de inyección SQL ciega. Hay varias herramientas que puede utilizar y usaremos las siguientes herramientas y recursos:
Maldita aplicación web vulnerable (DVWA): DVWA es una aplicación web intencionalmente vulnerable que proporciona un entorno seguro para practicar diversas técnicas. Viene preinstalado en Kali Linux o puedes descargarlo con sudo apt install dvwa. Una vez instalado, establezca el nivel de dificultad en “bajo” o “medio” y navegue hasta el desafío “Inyección SQL (ciega)”. Usaremos esto para simular un escenario del mundo real y demostrar métodos de prueba. Para iniciar la aplicación DVWA:
- Abra la terminal y escriba el comando: dvwa-start.
- Si no está en la cuenta raíz, se le pedirá que lo permita.
- El navegador debería abrirse automáticamente en DVWA.
- (Alternativamente) Si no se abre, vaya al navegador e ingrese: http://127.0.0.1:42001en la barra de direcciones.
- Para detener el servidor DVWA, regrese a la terminal y escriba el comando: dvwa-stop.
SQLMap: esta poderosa herramienta de código abierto automatiza la detección y explotación de vulnerabilidades de inyección SQL. Viene preinstalado en Kali Linux , por lo que si ese es el sistema operativo que estás usando, no necesitas descargarlo por separado. Usaremos SQLMap para automatizar la explotación de la vulnerabilidad de inyección SQL ciega descubierta en DVWA.
Burp Suite: Burp Suite es un conjunto de herramientas de prueba de seguridad de aplicaciones web ampliamente utilizado. Para este artículo, usaremos la Community Edition, que viene preinstalada en Kali Linux . Esto se utilizará para interceptar las solicitudes realizadas a la DVWA. Demostraremos un método alternativo de prueba con SQLMap capturando una solicitud con Burp, guardándola como un archivo de texto y luego ejecutándola a través de SQLMap. Se recomienda que sólo ejecute DVWA u otras aplicaciones intencionalmente vulnerables en un entorno virtual.
Pruebas de inyección SQL ciega
La detección de una inyección SQL ciega implica enviar consultas que producen respuestas condicionales o retrasan el tiempo de respuesta del servidor. Lo guiaremos a través de cada paso del proceso para que pueda realizar pruebas exhaustivas de inyección SQL ciega y comprender el razonamiento o el comportamiento detrás de cada acción. Como nota, la estructura de consulta exacta o los comandos pueden variar según la base de datos utilizada. Se demuestra MySQL.
Paso 1: respuesta normal
Comience enviando una respuesta normal, como ingresar ‘2’, para ver cómo se comporta la aplicación en circunstancias normales. Esto ayuda a establecer una base para el comportamiento esperado sin necesidad de inyectar código SQL.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-169.png?resize=900%2C520&ssl=1)
Paso 2: prueba sencilla
Realice una prueba sencilla ingresando una comilla simple ( 2‘#) después del ‘2’ para verificar si esto podría indicar una vulnerabilidad potencial en la aplicación web. Si se produce un error o el comportamiento cambia, podría sugerir que la aplicación está manejando incorrectamente la entrada del usuario y puede ser susceptible a la inyección SQL. Este ( ‘) no es obligatorio en todos los casos y puede variar según la base de datos en la que esté probando.
NOTA: Al realizar pruebas dentro de un campo de formulario, debe colocar un #al final de su consulta para comentar cualquier texto que el programa pueda agregar posteriormente.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-172.png?resize=1024%2C585&ssl=1)
Paso 3: prueba de verdadero/falso
Realice las pruebas de verdadero/falso inyectando condiciones ” ” 2’ AND 1=1#(siempre verdadera) y ” 2’ AND 1=0#” (siempre falsa) y observe las respuestas de la aplicación a ambas consultas. Si el comportamiento de la aplicación cambia según la veracidad de la condición inyectada, indica que el código SQL se está ejecutando, confirmando la presencia de una vulnerabilidad.
En un ataque de inyección SQL normal, esta condición verdadera podría devolver información adicional de una tabla, pero ese no es el caso en un ataque ciego. Nuevamente, estás buscando cambios en la respuesta.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-178.png?resize=900%2C510&ssl=1)
El resultado de 1=1, una condición intencionalmente verdadera.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-168.png?resize=1024%2C583&ssl=1)
El resultado de 1=0, una condición intencionalmente falsa.
Paso 4: prueba basada en el tiempo
Pruebe el método basado en tiempos introduciendo ” 2’ AND SLEEP(5)#” en la consulta. Compare el tiempo de respuesta con y sin el comando de suspensión. Un retraso notable indica una vulnerabilidad potencial, ya que demuestra que la aplicación está ejecutando el comando SQL inyectado y esperando el tiempo especificado antes de devolver una respuesta.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-176.png?resize=1024%2C585&ssl=1)
Ejecutar el ataque basado en el tiempo.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-177.png?resize=900%2C514&ssl=1)
Ataque basado en tiempo completo.
Paso 5: determinar las columnas
Determine la cantidad de columnas en la base de datos usando la 2’ ORDER BY X#condición ” “, donde X es la cantidad de columnas que estamos probando. Incremente el número hasta que cambie el comportamiento de la aplicación, lo que significa que ha encontrado la longitud correcta. Este paso es esencial para comprender la estructura de la base de datos, lo que puede resultar útil a la hora de explotar la vulnerabilidad.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-178.png?resize=900%2C510&ssl=1)
Prueba manual para una longitud de columna de 1.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-172.png?resize=1024%2C585&ssl=1)
Prueba manual para una longitud de columna de 2.
En nuestro caso, la aplicación web arrojó un error cuando probamos una longitud de columna de 3. Este cambio en el comportamiento nos permite saber que hemos identificado que el número correcto de columnas es 2, ya que esa fue la última prueba exitosa antes del cambio. . Esto se aprende observando el cambio en respuesta.
Paso 6: Determinar la longitud de DB
A continuación, demostraremos la 2’ AND LENGTH(DATABASE())=X#condición ” “, donde X es el número de caracteres que se prueban. Esto se puede utilizar para determinar la longitud del nombre de la base de datos. Usaremos el mismo enfoque que acabamos de usar para determinar el número de columnas, excepto que esta vez intentamos obtener el número de caracteres en el nombre de la base de datos. Para hacer esto, probaremos por longitud de caracteres de manera iterativa.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-175.png?resize=900%2C514&ssl=1)
Prueba para una longitud de carácter de 1.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-173.png?resize=900%2C512&ssl=1)
Finalmente, un cambio indica una longitud de nombre de base de datos de 4.
Esto también se puede realizar con un comando de suspensión en los casos en que no haya un indicador visual disponible. Por ejemplo, utilice ” 2’ AND LENGTH(DATABASE())=X AND SLEEP(5)#” donde X es la longitud sospechosa de la base de datos. Si el comando de suspensión retrasa la respuesta de la aplicación, confirma la longitud correcta de la base de datos.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-175.png?resize=900%2C514&ssl=1)
Paso 7: determinar el nombre de la base de datos
Finalmente, podemos comenzar a enumerar el nombre real de la base de datos. Ya sabemos que tiene cuatro caracteres, pero podemos hacer más determinando cuáles son esos caracteres. Para hacer esto, probaremos diferentes caracteres ASCII usando 2’ AND ASCII(SUBSTR(DATABASE(),X,X))>YY#. En este caso X, es la posición del carácter que estamos probando y YY es el carácter decimal ASCII .
Con este método, le pregunta a la base de datos si el primer carácter es mayor que una letra establecida. Si no es así, responderá con una negativa. Comenzaremos en algún lugar cerca de la mitad del alfabeto minúsculo con “l” (que es el decimal ASCII 108). Entonces la consulta se ve así: 2’ AND ASCII(SUBSTR(DATABASE(),1,1))>108#.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-179.png?resize=1024%2C587&ssl=1)
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-173.png?resize=900%2C512&ssl=1)
Según la respuesta, sabemos que el primer carácter no es mayor que “l”, por lo que tenemos que cambiar la operación para preguntar si es menor que “l”. Hacemos esto cambiando la consulta a 2’ AND ASCII(SUBSTR(DATABASE(),1,1))<108#.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-171.png?resize=1024%2C585&ssl=1)
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-176.png?resize=1024%2C585&ssl=1)
Según esta respuesta, ahora sabemos que la primera letra está en algún lugar entre la “l” minúscula y todos los caracteres ASCII anteriores. Técnicamente, esto incluye todas las mayúsculas, números y caracteres especiales. Sabiendo esto podemos empezar a probar de forma incremental hasta que veamos un cambio en la respuesta. En nuestro caso, vemos una respuesta modificada una vez que ingresamos 100.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-173.png?resize=900%2C512&ssl=1)
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-170.png?resize=1024%2C588&ssl=1)
Esto ahora nos dice que el carácter no es menor que una “d” minúscula. Podemos confirmar que esta es la letra correcta invirtiendo la consulta.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-180.png?resize=1024%2C585&ssl=1)
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-177.png?resize=900%2C514&ssl=1)
Hemos confirmado con éxito el primer personaje.
Ahora, podemos usar este mismo método cambiando la consulta a la ubicación del segundo carácter y repitiendo esto nuevamente. Nos aseguraremos de cambiar la ubicación ingresando 2’ AND ASCII(SUBSTR(DATABASE(),2,2))<108#.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-172.png?resize=1024%2C585&ssl=1)
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-174.png?resize=1024%2C585&ssl=1)
Con este resultado, sabemos que el segundo carácter es mayor que la “l” minúscula.
A estas alturas, debería comprender el fundamento de cada paso. Al observar el comportamiento de la aplicación en respuesta a varios comandos SQL inyectados, puede identificar y comprender eficazmente las vulnerabilidades de inyección SQL ciega.
En la siguiente sección, demostraremos cómo explotar estas vulnerabilidades con la ayuda de SQLMap. Continúe practicando estas técnicas en un entorno controlado para perfeccionar sus habilidades y convertirse en un experto en la detección y explotación de ataques de inyección SQL ciega.
Ejemplo 1: Explotación de la inyección SQL ciega
Ahora que hemos confirmado la vulnerabilidad, seguiremos los pasos para explotarla usando SQLMap. Preste atención a las capturas de pantalla de cada paso para una mejor comprensión. Aún mejor, sigue las instrucciones para consolidar realmente el proceso y el aprendizaje en tu mente y desarrollar esta habilidad.
Paso 1: familiarizarse con SQLMap
Abra la página de ayuda de SQLMap para familiarizarse con el tipo de información necesaria para un ataque y la estructura de comando de la herramienta. En concreto veremos que podemos utilizar una URL con la -ubandera y la información de la cookie con la bandera –cookie=COOKIE.
sqlmap -h
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-181.png?resize=895%2C959&ssl=1)
Paso 2: recuperar información de la sesión
Recopile las cookies requeridas y el nivel de seguridad del Panel de desarrollador del navegador en la pestaña Almacenamiento.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-184.png?resize=900%2C506&ssl=1)
Paso 3: comando URL de SQLMap
Ejecute SQLMap con la información -uy –cookie=. Revise la información resultante, que incluye los parámetros, la carga útil y la ubicación de los archivos de salida.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-185.png?resize=898%2C606&ssl=1)
SQLMap ejecutando ataque URL.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-186.png?resize=900%2C312&ssl=1)
Devolución de parámetros y ubicación de salida.
Paso 4: abrir el archivo de sesión
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-187.png?resize=463%2C78&ssl=1)
Ahora iremos a la terminal y navegaremos hasta la ubicación del archivo de salida. Primero, lo usaremos para ver con qué archivos tenemos para trabajar. Utilícelo sqlitebrowser para abrir el session.sqlite
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-188.png?resize=627%2C54&ssl=1)
Paso 5: Navegador de base de datos
En el navegador sqlite, examine la estructura de la base de datos y explore las pestañas de datos.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-189.png?resize=900%2C696&ssl=1)
Visualización de la pestaña “Estructura de la base de datos” en DB Browser.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-191.png?resize=900%2C696&ssl=1)
Visualización de la pestaña “Buscar datos” en DB Browser.
Paso 6: ver el archivo de destino
Regrese a la terminal y use cat target.txtpara ver el archivo que contiene el comando que usó.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-192.png?resize=902%2C71&ssl=1)
Paso 7: Ver registro
Úselo cat log para ver el contenido del registro. Esto incluye la misma información de parámetros y carga útil que vimos anteriormente, así como detalles sobre la base de datos y la tecnología de la aplicación web. Toda esta información podría ser útil en cualquier seguimiento de las pruebas de penetración que podamos realizar en etapas posteriores.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-193.png?resize=900%2C554&ssl=1)
Paso 8: URL de SQLMap con indicador de nombre de base de datos
Ahora regresaremos a la terminal y ejecutaremos el mismo comando en SQLMap, pero esta vez agregaremos ‘–dbs’ para descubrir el nombre de la base de datos. Sabemos que tiene cuatro caracteres debido a nuestra prueba manual anterior, pero queremos saber más sobre esta base de datos.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-194.png?resize=898%2C735&ssl=1)
¡Y ahí está, “dvwa”!
Paso 9: URL de SQLMap con indicador de columna
A continuación, queremos obtener las columnas de usuario con las banderas -D dvwa -T users –columns. Esto le proporcionará mucha más información sobre lo que realmente hay dentro de la base de datos.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-195.png?resize=896%2C143&ssl=1)
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-196.png?resize=899%2C809&ssl=1)
Paso 10: URL de SQLMap con indicador de volcado de usuario
Ahora llegamos a la parte buena, utilícela -T users –dump para extraer datos de la tabla del usuario. Revise la respuesta y observe cómo SQLMap le solicita que descifre el hash de las contraseñas que descubre y luego le presenta los resultados en una tabla clara y ordenada.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-197.png?resize=898%2C143&ssl=1)
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-198.png?resize=900%2C634&ssl=1)
Aquí revisa la base de datos y extrae información del usuario.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-199.png?resize=900%2C581&ssl=1)
SQLMap ofrece descifrar los hashes de contraseñas. ¡Sí, por favor!
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-200.png?resize=903%2C495&ssl=1)
Observe la ordenada disposición de la información en la imagen de arriba. Además de simplemente descifrar las contraseñas y colocarlas en una tabla ordenada, SQLMap también genera automáticamente esa información en un archivo .csv. Luego, esto se puede incorporar a otras herramientas para realizar más exploits durante un caso de prueba de penetración.
Ejemplo 2: Explotación de la inyección SQL ciega con datos HTTP
Ahora demostraremos un método alternativo para explotar la inyección SQL ciega utilizando SQLMap y la recopilación de datos HTTP de Burp Suite .
Paso 1: Intercepta el tráfico con Burp Suite
Abra Burp Suite, que ha configurado para capturar el tráfico HTTP. Luego navegue hasta la pestaña Proxy y localice el envío de la consulta en el historial HTTP.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-201.png?resize=900%2C661&ssl=1)
Paso 2: enviar solicitud al repetidor
En el panel Solicitud, haga clic derecho en el envío de la consulta y seleccione ‘Enviar al repetidor’.
Paso 3: copie los datos sin procesar de Burp Suite
Cambie a la pestaña Repetidor y copie los datos de la solicitud sin procesar del panel.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-202.png?resize=900%2C506&ssl=1)
Paso 4: crear archivo de solicitud
Pegue los datos de la solicitud sin procesar en un archivo nuevo que usará con SQLMap. En nuestro ejemplo, llamamos a este archivo request.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-203.png?resize=898%2C341&ssl=1)
Paso 5: SQLMap carga el archivo de solicitud HTTP
Regrese a la terminal y ejecute el comando sqlmap -r request. El -rindicador le indica a SQLMap que analice y utilice la solicitud HTTP sin formato del archivo especificado.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-204.png?resize=901%2C587&ssl=1)
Como en el método anterior, SQLMap ofrecerá descifrar los hash de contraseña del usuario descubierto una vez que haya extraído los datos.
![](https://i0.wp.com/achirou.com/wp-content/uploads/2024/01/image-205.png?resize=900%2C567&ssl=1)
Este método proporciona una alternativa a la introducción manual de información de cookies y URL en la línea de comando, lo que agiliza el proceso utilizando el tráfico HTTP capturado. Como en los métodos anteriores, esta información se envía a su directorio y puede estudiarse o utilizarse para esfuerzos futuros.
Defensa contra la inyección SQL ciega
Si sigue las mejores prácticas y pautas recomendadas por organizaciones acreditadas como OWASP , NIST, W3 y Amazon AWS, puede fortalecer significativamente las defensas de su aplicación contra estos ataques.
Estas organizaciones proporcionan información y recursos valiosos que cubren una amplia gama de temas, incluidas prácticas de codificación segura, seguridad de bases de datos, defensas de aplicaciones web y monitoreo y respuesta a incidentes. En esta sección, exploraremos estas mejores prácticas en detalle y le brindaremos pasos prácticos para ayudar a proteger su aplicación web contra vulnerabilidades de inyección SQL ciega.
Prácticas de codificación segura
La implementación de prácticas de codificación segura es crucial para defenderse contra ataques de inyección SQL ciega. OWASP recomienda utilizar declaraciones preparadas o consultas parametrizadas para separar la entrada del usuario del código SQL, lo que reduce el riesgo de inyección. Además, la incorporación de técnicas de validación de entradas, como las listas blancas, ayuda a restringir los tipos de datos que pueden introducir los usuarios, lo que mejora aún más la seguridad.
Seguridad de la base de datos
Las medidas de seguridad de la base de datos son esenciales para minimizar el impacto potencial de un ataque. Limitar los privilegios de los usuarios de la base de datos garantiza que los atacantes no puedan obtener acceso a información confidencial ni realizar acciones no autorizadas. Actualizar y parchear periódicamente su sistema de administración de bases de datos ayuda a abordar las vulnerabilidades conocidas, lo que dificulta que los atacantes las exploten. Puede leer más sobre esto en NIST SP 800-44 versión 2 (la Sección 6.4.2 analiza esto específicamente).
Defensas de aplicaciones web
La implementación de defensas de aplicaciones web, como un firewall de aplicaciones web (WAF), puede ayudar a detectar y bloquear los intentos de inyección de SQL. Amazon AWS analiza cómo un WAF analiza el tráfico entrante y filtra solicitudes maliciosas a través de grupos de reglas administrados por bases de datos, lo que reduce la probabilidad de un ataque exitoso.
Seguimiento y respuesta a incidentes
Monitorear y registrar la actividad de las aplicaciones es vital para identificar actividades sospechosas y detectar posibles ataques desde el principio. NIST recomienda establecer un sistema sólido de registro y monitoreo, junto con un plan de respuesta a incidentes bien definido, que garantice respuestas rápidas y efectivas a los incidentes de seguridad.
Preguntas frecuentes
¿Cuáles son los tipos de inyección SQL ciega?
Hay dos tipos principales de inyección SQL ciega:
Inyección SQL ciega basada en booleanos : en este tipo, los atacantes infieren información de las respuestas de la aplicación web, como cambios en el contenido, mensajes de error o códigos de estado HTTP, aunque el resultado de la consulta real no es directamente visible.
Inyección SQL ciega basada en el tiempo : en este tipo, los atacantes introducen retrasos en sus consultas SQL utilizando funciones sensibles al tiempo (por ejemplo, SLEEP o WAITFOR DELAY) y observan el tiempo de respuesta de la aplicación web para inferir información sobre la base de datos. Los diferentes tiempos de respuesta indican si la condición inyectada era verdadera o falsa.
¿Qué es la respuesta condicional de inyección SQL ciega?
Una respuesta condicional de inyección SQL ciega, también conocida como inyección SQL ciega basada en contenido o booleana, es una técnica utilizada por los atacantes para extraer información de una aplicación web vulnerable sin ver directamente el resultado de sus consultas SQL inyectadas.
En cambio, los atacantes inyectan declaraciones SQL con condiciones verdaderas o falsas y observan cambios en el comportamiento o contenido de la aplicación web en función de la veracidad de estas condiciones. Al analizar estas respuestas, el atacante puede inferir indirectamente la información que busca en la base de datos.
Piense en esto como un juego malicioso de 20 preguntas.
¿Qué herramientas se pueden utilizar para explotar la inyección SQL ciega?
Existen varias herramientas que se pueden utilizar para explotar las vulnerabilidades de inyección SQL ciega. Algunas de las herramientas más populares y efectivas incluyen:
1. SQLMap: SQLMap, una herramienta de código abierto poderosa y ampliamente utilizada, automatiza la detección y explotación de vulnerabilidades de inyección SQL.
2. Burp Suite: Esta es una plataforma integral de prueba de seguridad de aplicaciones web, que incluye una gama de herramientas para detectar y explotar vulnerabilidades de inyección SQL ciega, como los módulos Repetidor e Intruso.
3. Pruebas manuales: si bien las herramientas automatizadas pueden resultar muy útiles, las pruebas manuales siguen desempeñando un papel esencial en la detección y explotación de vulnerabilidades de inyección SQL ciega.
¿Cuáles son las señales de que un sitio web es vulnerable a la inyección SQL ciega?
Si bien ningún indicador garantiza la presencia de una vulnerabilidad, los siguientes signos pueden sugerir que una aplicación web podría ser susceptible a una inyección SQL ciega:
1. Comportamiento inesperado: si la aplicación muestra un comportamiento inusual cuando ciertos caracteres (como comillas simples o dobles) se ingresan en los campos de entrada del usuario, puede indicar que la aplicación no está manejando o desinfectando adecuadamente la entrada del usuario.
2. Respuestas condicionales: al inyectar consultas SQL que deberían devolver verdadero o falso, si la aplicación muestra un comportamiento diferente según la veracidad de la condición inyectada, puede sugerir una vulnerabilidad de inyección SQL ciega.
3. Retrasos de tiempo: la aplicación experimenta retrasos notables en el tiempo de respuesta cuando se inyectan consultas SQL específicas (por ejemplo, al usar la SLEEP()función).
4. Mensajes de error: si bien es posible que los mensajes de error no sean directamente visibles en los ataques de inyección SQL ciega, se debe evaluar cualquier mensaje de error o respuesta inusual de la aplicación.
¿Cuáles son las mejores prácticas para prevenir la inyección SQL ciega?
Las mejores prácticas para prevenir la inyección ciega de SQL implican una combinación de prácticas de codificación segura, medidas de seguridad de bases de datos, defensas de aplicaciones web y estrategias de monitoreo y respuesta a incidentes.
Conclusión
A lo largo de este artículo, hemos profundizado en la inyección SQL ciega, explorando sus características únicas y las técnicas utilizadas para descubrir y explotar estas vulnerabilidades. Desde configurar un entorno de prueba con DVWA y Kali Linux hasta realizar pruebas manuales y utilizar herramientas como SQLMap y Burp Suite, le proporcionamos orientación práctica y consejos prácticos para adquirir habilidades en este tema complejo.
Además, hemos enfatizado la importancia de implementar medidas de seguridad sólidas, como prácticas de codificación segura, seguridad de bases de datos, defensas de aplicaciones web y monitoreo y respuesta a incidentes para protegerse contra ataques de inyección SQL ciega.
Como hemos demostrado, la inyección ciega de SQL es un desafío formidable en la seguridad cibernética para aplicaciones web, pero con el conocimiento y las habilidades adecuados, puede defenderse eficazmente contra estas amenazas. Continúe su aprendizaje tomando estos cursos para reforzar su aptitud en defensa y piratería ética de aplicaciones web:
No te detengas, sigue avanzando
Aquí tienes un propósito para este 2024 que debes considerar seriamente: si has querido mejorar tus habilidades en hacking, Ciberseguridad y programación ahora es definitivamente el momento de dar el siguiente paso. ¡Desarrolla tus habilidades aprovechando nuestros cursos a un precio increíble y avanza en tu carrera!
Pentesting Web. Prácticas de un Ethical Hacker Profesional
Aprende Pentesting Web, Hacking Ético y Ciberseguridad. Practicas reales y aprender todo sobre Vulnerar entornos Web.
Calificación: 4,2 de 54,2 (609 calificaciones) 30.473 estudiantes Creado por Alvaro Chirou • 1.800.000+ Enrollments Worldwide, Walter Coto || +440,000 Estudiantes
Lo que aprenderás
- Hacking Ético Web
- El TOP 10 Vulnerabilidades Web de OWASP
- Uso de Burp Suite
- Identificar Vulnerabilidades Web
- Explotar Vulnerabilidades Web
- Identificar Vulnerabilidades que NO son de OWASP TOP 10
- Prácticar con Escenarios Reales de Hacking Web
- Las 5 Fases del Pentesting Web
El Pentesting Web se enfoca principalmente en aplicaciones y paginas funcionando en internet. Esto genera que su demanda laboral sea además de muy alta, sumamente importante.
La gran ventaja de esta profesión es que efectivamente, puedes llevarla adelante desde cualquier parte del mundo, con una computadora e internet.
Nosotros te brindaremos los fundamentos teóricos y la base necesaria para que empieces desde 0, y vayas avanzando hacia el ámbito profesional, con laboratorios simulando entornos reales
Hemos creado esta formación profesional donde aprenderás todo lo que necesitas para ser un experto, y con practicas que podrás aplicar en escenarios reales.
Contaras con nuestra supervisión, experiencia y respuesta a todas tus preguntas que tengas sobre el contenido. Así también sobre las actualizaciones que hagamos sobre el curso, el cual será tuyo de por vida y recibirás dichas actualizaciones sin tener que volver a pagar.
Empieza a aprender ya mismo y acompáñame en este increíble curso.
¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?
![](https://i0.wp.com/achirou.com/wp-content/uploads/2023/11/image.png?resize=549%2C67&ssl=1)
Sobre los autores
Álvaro Chirou
Yo soy Álvaro Chirou, tengo más de 20 Años de experiencia trabajando en Tecnología, eh dado disertaciones en eventos internacionales como OWASP, tengo más de 1.800.000 estudiantes en Udemy y 100 formaciones profesionales impartidas en la misma. Puedes serguirme en mis redes:
Laprovittera Carlos
Soy Laprovittera Carlos. Con más de 20 años de experiencia en IT brindo Educación y Consultoría en Seguridad de la Información para profesionales, bancos y empresas. Puedes saber más de mi y de mis servicios en mi sitio web: laprovittera.com y seguirme en mis redes:
¿Quieres iniciarte en hacking y ciberseguridad pero no sabes por dónde empezar? Inicia leyendo nuestra guia gratuita: https://achirou.com/como-iniciarse-en-ciberseguridad-y-hacking-en-2024/ que te lleva de 0 a 100. Desde los fundamentos más básicos, pasando por cursos, recursos y certificaciones hasta cómo obtener tu primer empleo.