Averiguar sobre las inyecciones SQL
Antes de hablar de sql inject debemos saber que es sql.
Sql (STRUCTUREC QUERY LANGUAJE)
Lenguaje de consultas estructuradas
SQL es un Lenguaje que permite especifica mediante consultas diversos tipos de operaciones
en un gestor de base de datos.
SQL Injection es una falla en la codificación de una aplicación cualquiera (web o local) que
posibilita por medio de un input cualquiera, la manipulación de una consulta SQL. Esta
manipulación se denomina inyección, por lo que el término de inyección de SQL.
Resumiendo: Es una técnica de ataque basada en la manipulación del código SQL, que es el
lenguaje utilizado para el intercambio de información entre aplicaciones y bases de datos
relacionales.
Es el lenguaje de patrón universal para la manipulación de datos en bases de datos
relacionales a través de los DBMS (Sistema de gestión de bases de datos relacionales). Es un
tipo de ataque donde el “Hacker” puede insertar comandos maliciosos (sql querys) en la base
de datos a través de los campos de formularios o de URL de una aplicación vulnerable,
ambicionando extraer información guardada en la base de datos.
“Piense en SQL Injection como una simple falla lógica, es simplemente una falla que, por dejar
abierta a interpretaciones, ocurren manipulaciones indeseables.”
Inurl Brasil, un grupo de investigación de seguridad, desarrollo de herramientas y activismo
digital, dijo: “La computación es perfecta, pero quien programa los dispositivos y aplicaciones
son menos favorecidos, no ven todas las posibilidades, no se preocupan nada más “el camino
que determiné”, se olvidan que existen siempre muchos otros caminos y que es función del
desarrollador y del probador de software (algo que no existe mucho en las empresas) hacer
todos esos caminos y garantizar que el software se comporte adecuadamente; si no lo hace, un
hacker hará “.
Narrando como se hace una inyección SQL.
Imagínese que usted está viajando y su coche pierde la capacidad de la batería, o sea, ella
muere. ¿Que hacer? Si usted tiene un cargador en el coche puede intentar algo para guardar.
Pero si no lo tiene, hay otros métodos para hacer que la batería funcione, por ejemplo, el
famoso “acoplar”, que es cuando usted conecta su batería en otra que esté en
funcionamiento.
Digamos que usted no posee ese cargador, entonces necesita encontrar otro conductor que
suministre la batería. Usted lo encuentra y hace la siguiente pregunta: “Amigo, necesito una
recarga, ¿le daría?”. ¿El otro conductor no va a entender lo que quieres, correcto?
Esto es porque usted no ha detallado que necesita una recarga en la batería de su coche.
Usted no fue explícito y lo mismo ocurre en la cuestión de SQL: Son varias interpretaciones.
Cuando una consulta normal con entrada de filtro se realiza con una vulnerabilidad, un hacker
puede inyectar un código malicioso en su consulta y manipularla, ya que la dejó abierta a
varias interpretaciones.
Operaciones como:
Crear, modificar, eliminar, añadir información en un gestor de base de datos.
Que es una inyección Sql?
El sql Injection es una vulnerabilidad que permite la inyección de Código Sql mediante la
entrada de datos preveniente del lado del cliente hacia el servidor.
El cual permite alterar el funcionamiento normal del programa y lograr así que se ejecute el
código inyectado
Que se puede hacer?
- Consultar.
- Eliminar.
- Modificar.
- Añadir.
Información en una base de datos.
Historial del SQL Injection
La vulnerabilidad SQL injection fue probablemente documentada por primera vez en
1998 por Jeff Forristal. La cual afectaba a Microsoft SQL Server.
Owasp Top 10 2003 – Sexta Vulnerabilidad mas común
Owasp Top 10 2007 – Segunda Vulnerabilidad más común
Owasp Top 10 2010 – Primera Vulnerabilidad más común
Owasp Top 10 2013 – Primera Vulnerabilidad más común
Owasp Top 10 2016 – Primera Vulnerabilidad más común
Tipos de inyecciones SQL
Inyecciones Sql in-Band (SQL Injection Clasico):
- Inyection SQL Basado en Error (Error-Based)
- Inyection SQL Basado en Uniones (Union-Based)
Inyecciones SQL Inferencial (Blind SQL Inject8ion):
- Inyecciones SQL Basado en Booleanos (Boolean- Based)
- Inyecciones SQL Basado en Tiempo (Time-Based)
Inyecciones SQL Out-Band:
- Envió de peticiones a servidor controlado por atacante
Métodos de Inyeccion
Entrada de valores enteros en el URL.
Entrada de valores de cadena en el URL.
Entrada de datos en formularios
- Entrada de dato Libre
- Dropdown Box
Entrada de datos mediante cabeceras Modificadas
- Cookies
- User-Agent
Todo sobre SQL ijection
Identificado SQL Injection & Uso de Dorks
Trabajaremos en dos ambientes controlados
Y el otro
SQL Query SELECT 8FROM user WHERE name=’hary’
Esto pasa cuando se aumenta una comilla simple
Identifica que son suceptibles en sql Blind
Da informe, de que es subseptible por lo tanto existe en la base
de datos
LOGIN FORM BYPASS -SQL INJECTION
Son sentencias que se cumple y que admite comillas simples y generan un error
Ya paso el Loguin con una sentencia lógica
DETECTAR EL GESTOR DE LA BASE DE DATOS
Con la herramienta nmap me puede escanear que servidor me esta corriendo y escuche que
puertos están corriendo.
Concatenacion
GESTOR a'||'b' a'+'b' concat('a','b')
Oracle 'ab' ERROR 'ab'
PosgreSQL 'ab' ERROR ERROR
MySQL 0 'ab' 'ab'
SQL Server ERROR 'ab' ERROR
DETECTAR NUMERO DE COLUMNAS CON ENTEROS – SQL INJECTION
DETECTAR NUMERO DE COLUMNAS CON CADENAS – SQL INJECTION\
SQL Query: SELECT *FROM user WHERE id user= 0 LIMIT 1
192.168.1.67/bricks/content-2/index.php?user=hary
192.168.1.67/bricks/content-2/index.php?user=%27