🛡️
Hacking para Juniors - [CPPJ]
Comprar cursoYouTubeTwitterLinkedIn
  • La Biblia del Hacker
    • ADVERTENCIA
    • Aprende GRATIS con El Curso De Junior a Senior en Hacking
    • Conoce tu Academia
    • Aprende con nuestro curso
    • Conoce a tu instructor
  • Fundamentos de la ciberseguridad ofensiva
    • ¿Que es el Ethical Hacking?
      • Tipos de Hackers
        • APTs (Advanced Persistent Threats)
    • ¿Que es el pentesting?
      • Tipos de Caja en Pentesting
      • Tipos de tecnologia
      • Etapas de un pentest
        • Escalacion de privilegios
    • ¿Qué es un CVE?
    • ¿Que es un escaneo de vulnerabilidades?
    • ¿Que es un Red Team?
      • Command and Control
    • ¿Que es la ingenieria social?
      • Kevin Mitnick
      • Libros Recomendados
    • El papel de los Juniors y la IA
  • OSINT for Juniors
    • Open-source intelligence (OSINT)
    • Tipos de fuentes OSINT
    • Herramientas para OSINT
    • Dorks de Google
  • OS for Juniors
    • Introduccion a Sistemas Operativos
    • Archivo y extensiones
    • Windows
      • Estructura del SO
        • Kernel De Windows
        • Servicios Importantes
        • Procesos en Windows
        • Registros en Windows
        • Gestion de archivos en Windows
      • Versiones relevantes
      • La importancia de identificar la version de windows durante una auditoria
      • Tips
    • Linux
      • Tips
    • Android
      • Versiones relevantes
      • Tips
    • IOS
      • Versiones Relevantes
      • Tips
    • macOS
      • Versiones Relevantes
      • Tips
    • Sistemas operativos para Hackers
    • Instalacion de Kali Linux
  • Networking for Juniors
    • ¿Que es el Networking?
    • Fundamentos de Redes
    • Estructura de Redes
    • Topologías de Red
    • Modelo OSI (Open Systems Interconnection)
    • Modelo TCP/IP
    • IP (Internet Protocol)
    • TCP (Transmission Control Protocol)
    • UDP (User Datagram Protocol)
    • Protocolos de red
      • Protocolos de la capa de acceso al medio
      • Protocolos de la capa de red
      • Protocolos de la capa de transporte
      • Protocolos de la capa de aplicación
      • Protocolos de aplicación en correo electrónico
    • Puertos y servicios
      • Puerto 21: FTP
      • Puerto 22: SSH
      • Puerto 23: Telnet
      • Puerto 25: - SMTP
      • Puerto 53: DNS
      • Puerto 80: HTTP
      • Puerto 443: HTTPS
      • Puerto 139 y 445: SMB - CIFS
      • Puerto 3389: RDP
      • Puerto 389: LDAP
      • Puerto 5000: Docker
      • Puerto 5900: VNC
  • Nmap for Juniors
    • ¿Que es Nmap?
    • Tu Primer Nmap
    • Parametros de Nmap
    • Comandos utiles
    • Scripts de Nmap
  • Wi-Fi y Radiofrecuencias
    • Fundamentos de Wireless
    • Fundamentos del Hacking de Wi-Fi
    • Fundamentos en Radiofrecuencias
    • RFID (Radio Frequency Identification)
    • Infrarrojo (IR)
    • Bluetooth
    • NFC (Near Field Communication)
    • Herramientas de un hacker
    • Fundamentos en Hardware Hacking
  • AppWeb For Juniors
    • ¿Porque deberia aprender hacking web?
    • Fundamentos de Aplicaciones Web
      • Códigos de estado HTTP
    • Fundamentos de APIs
      • Métodos HTTP
      • Practica Gratis
    • Cabeceras de seguridad
    • Analisis de certificados SSL
    • Mecanismos de autenticacion y autorizacion en AppWeb
    • Atacando CMS
    • La Seguridad en el Desarrollo de Aplicativos: Frameworks vs. Desarrollo Manual
    • OWASP Top Ten
  • Databases for Juniors
    • ¿Base de Datos?
      • SQL
      • NoSQL
    • Puerto 6379: Redis
    • Puerto 27017: MongoDB
    • Puerto 5432: PostgreSQL
    • Puerto 3306: MySQL
    • Puerto 1433: Microsoft SQL Server
    • Puerto 1521: - Oracle Database
  • Transferencia de Archivos
    • Introduccion a la Transferencia de archivos
    • Descargando desde Windows
      • Utilizando LOLBAS
    • Descargando desde Linux
    • Despliegue de servicio HTTP
    • Despliegue de servicio SMB
    • Despligue de servicio FTP
    • Utilizando Base64
  • Fundamentos en Vulnerabilidades
    • ¿Qué es una Vulnerabilidad?
    • ¿Qué es un 0day?
    • Common Vulnerabilities and Exposures - [CVE]
    • RCE (Remote Code Execution)
    • Buffer Overflow
  • Malware For Junior
    • ¿Que es Malware?
    • ¿Que es un AntiVirus?
      • Microsoft Defender
    • ¿Que es un EDR?
      • Mejores EDRs actuales
    • Desarrollo de Malware
    • Malware for Windows
      • Golang
      • Nim
      • C#
    • Ofuscacion de Malware
  • Shell
    • ¿Shell?
      • CMD (Command Prompt) en Windows
      • PowerShell en Windows
      • Bash en Unix/Linux
    • ¿Reverse Shell?
    • ¿Web Shell?
    • ¿Bind Shell?
    • Enumeracion de Windows
    • Enumeracion de Linux
  • Privilege Escalation for Juniors
    • ¿Que es la escalacion de privilegios?
    • PrivEsc For Windows
      • WinPEAS
    • PrivEsc For Linux
      • LinPEAS
    • PrivEsc For Active Directory
    • PrivEsc For Cloud Computing
  • Tecnicas de persistencia
    • Fundamentos de Persistencia
    • Persistencia en Windows
    • Persistencia en Linux
    • Persistencia Avanzada
  • Pivoting for Juniors
    • ¿Que es pivoting?
    • ¿Que es Socks?
    • Doble Pivoting y Triple Pivoting
    • RPivot y Chisel
  • Active Directory For Juniors
    • Fundamentos de Active Directory
    • Utilizando ADPeas para el reconocimiento
  • Cloud Computing For Juniors
    • Fundamentos de cloud computing
    • Amazon Web Services
    • Microsoft Azure
    • Google Cloud Platform
  • Introduccion a Blue Team
    • ¿Blue Team?
    • ¿SOC?
    • ¿Threat Hunting?
    • SIEM (Security Information and Event Management)
    • La fatiga del SOC
    • ¿SOAR?
  • Defensas y herramientas de seguridad perimetral
    • Soluciones de Seguridad Perimetral Esenciales
    • Firewall
    • IDS (Intrusion Detection System)
    • IPS (Intrusion Prevention System)
    • WAF (Web Application Firewall)
    • Firewalls de Próxima Generación (NGFW)
    • Gateways de Seguridad Web (SWG)
    • Gateways de Seguridad de Correo Electrónico (SEG)
    • Sistemas de Prevención de Fugas de Datos (DLP)
    • Network Access Control (NAC)
  • Muchas gracias
    • 🛡️ ¡Muchísimas Gracias por Participar! 🛡️
    • Importante
Con tecnología de GitBook
En esta página
  • ¿Qué es una Inyección SQL?
  • Tipos de Inyección SQL
  • 1. Inyección SQL Basada en Errores
  • 2. Inyección SQL Basada en Unión (UNION)
  • 3. Inyección SQL a Ciegas (Blind SQL Injection)
  • 4. Inyección SQL Basada en Tiempo (Time-Based Blind SQL Injection)
  • Impacto de las Inyecciones SQL
  • Ejemplos de Inyección SQL
  • Ejemplo 1: Inyección SQL Basada en Errores
  • Ejemplo 2: Inyección SQL Basada en Unión
  • Ejemplo 3: Inyección SQL a Ciegas
  • Medidas de Mitigación
  • 1. Validación de Entrada
  • 2. Consultas Preparadas (Prepared Statements)
  • 3. Procedimientos Almacenados
  • 4. Principio de Menor Privilegio
  • 5. Monitoreo y Auditoría
  • Herramientas para Detectar y Explotar Inyecciones SQL
  • 1. sqlmap
  • 2. Burp Suite
  • 3. Havij

¿Te fue útil?

  1. Databases for Juniors
  2. ¿Base de Datos?

SQL

Las vulnerabilidades de inyección, en particular las inyecciones SQL, son una de las amenazas más comunes y peligrosas para las bases de datos. Este capítulo explora la relación entre las bases de datos y las inyecciones, cómo se explotan estas vulnerabilidades y las medidas de mitigación que se pueden implementar para proteger las bases de datos.

¿Qué es una Inyección SQL?

La inyección SQL (SQL Injection) es un tipo de vulnerabilidad de seguridad que permite a un atacante interferir con las consultas que una aplicación realiza a su base de datos. Esta vulnerabilidad ocurre cuando los datos proporcionados por el usuario son insertados en una consulta SQL de manera insegura, permitiendo al atacante manipular la consulta y ejecutar comandos no deseados.

Tipos de Inyección SQL

1. Inyección SQL Basada en Errores

  • Descripción: El atacante utiliza los mensajes de error del servidor de base de datos para obtener información sobre la estructura de la base de datos.

  • Ejemplo: Insertar una comilla simple ('), lo que puede generar un error SQL que revele información sensible.

2. Inyección SQL Basada en Unión (UNION)

  • Descripción: El atacante utiliza la cláusula UNION para combinar los resultados de múltiples consultas SELECT en una sola consulta, extrayendo datos de otras tablas.

  • Ejemplo: SELECT nombre, contraseña FROM usuarios WHERE id=1 UNION SELECT nombre, contraseña FROM admins.

3. Inyección SQL a Ciegas (Blind SQL Injection)

  • Descripción: El atacante no recibe mensajes de error visibles, pero puede deducir la estructura de la base de datos y su contenido a través de pruebas y observaciones indirectas.

  • Ejemplo: Manipulando condiciones booleanas en la consulta para inferir datos, como AND 1=1 (verdadero) o AND 1=2 (falso).

4. Inyección SQL Basada en Tiempo (Time-Based Blind SQL Injection)

  • Descripción: Similar a la inyección ciega, pero utiliza retardos de tiempo para deducir la respuesta del servidor.

  • Ejemplo: SELECT nombre FROM usuarios WHERE id=1 AND IF(1=1, SLEEP(5), 0).

Impacto de las Inyecciones SQL

Las inyecciones SQL pueden tener graves consecuencias, incluyendo:

  • Exfiltración de Datos: El atacante puede acceder y extraer datos sensibles almacenados en la base de datos.

  • Modificación de Datos: El atacante puede modificar o eliminar datos en la base de datos, alterando la integridad de la información.

  • Compromiso del Sistema: En casos extremos, el atacante puede obtener acceso administrativo a la base de datos y ejecutar comandos del sistema operativo.

  • Negación de Servicio (DoS): El atacante puede ejecutar consultas que agoten los recursos del servidor de base de datos, causando una denegación de servicio.

Ejemplos de Inyección SQL

Ejemplo 1: Inyección SQL Basada en Errores

SELECT * FROM usuarios WHERE nombre='admin' AND contraseña=''; --';
  • Explicación: El atacante cierra la consulta original con '; --, lo que convierte el resto de la consulta en un comentario, potencialmente otorgando acceso sin una contraseña válida.

Ejemplo 2: Inyección SQL Basada en Unión

SELECT nombre, contraseña FROM usuarios WHERE id=1 UNION SELECT nombre, contraseña FROM admins;
  • Explicación: El atacante combina los resultados de la consulta original con una segunda consulta que accede a la tabla de administradores.

Ejemplo 3: Inyección SQL a Ciegas

SELECT nombre FROM usuarios WHERE id=1 AND 1=1;
SELECT nombre FROM usuarios WHERE id=1 AND 1=2;
  • Explicación: El atacante envía dos consultas, una que siempre es verdadera y otra que siempre es falsa, y observa las diferencias en las respuestas.

Medidas de Mitigación

1. Validación de Entrada

  • Descripción: Validar y sanitizar todas las entradas del usuario para asegurarse de que contienen solo datos esperados.

  • Técnicas: Utilizar listas blancas de caracteres permitidos, restringir los tipos de datos y longitudes de las entradas.

2. Consultas Preparadas (Prepared Statements)

  • Descripción: Utilizar consultas preparadas con parámetros, que separan los datos de los comandos SQL, evitando la inyección.

  • Ejemplo:

    cursor.execute("SELECT nombre FROM usuarios WHERE id = %s", (id,))

3. Procedimientos Almacenados

  • Descripción: Utilizar procedimientos almacenados en lugar de consultas dinámicas, lo que puede reducir la superficie de ataque.

  • Ejemplo:

    CREATE PROCEDURE ObtenerUsuario(IN id INT)
    BEGIN
      SELECT nombre FROM usuarios WHERE id = id;
    END;

4. Principio de Menor Privilegio

  • Descripción: Configurar las cuentas de la base de datos con los mínimos privilegios necesarios para su funcionamiento.

  • Técnicas: Asegurarse de que las cuentas de aplicaciones no tengan privilegios administrativos.

5. Monitoreo y Auditoría

  • Descripción: Implementar sistemas de monitoreo y auditoría para detectar y responder rápidamente a intentos de inyección.

  • Técnicas: Utilizar herramientas de detección de intrusiones y registrar todas las actividades de la base de datos.

Herramientas para Detectar y Explotar Inyecciones SQL

1. sqlmap

  • Descripción: Herramienta automatizada de código abierto para la detección y explotación de vulnerabilidades de inyección SQL.

  • Funcionalidad: Detecta y explota diferentes tipos de inyecciones SQL, extrae datos de la base de datos, y permite la ejecución de comandos del sistema operativo.

2. Burp Suite

  • Descripción: Plataforma para pruebas de seguridad de aplicaciones web.

  • Funcionalidad: Intercepta y modifica solicitudes y respuestas HTTP, lo que permite detectar y explotar inyecciones SQL manualmente.

3. Havij

  • Descripción: Herramienta automatizada para la explotación de inyecciones SQL.

  • Funcionalidad: Facilita la extracción de datos y la explotación de vulnerabilidades en bases de datos.

Anterior¿Base de Datos?SiguienteNoSQL

Última actualización hace 11 meses

¿Te fue útil?