You are on page 1of 38

Sql Injection.

Inyección SQL
Sql Injection.
Inyección SQL es un método de infiltración de
código intruso que se vale de una vulnerabilidad
informática presente en una aplicación en el nivel
de validación de las entradas para realizar
operaciones sobre una base de datos. El origen de
la vulnerabilidad radica en la incorrecta
comprobación o filtrado de las variables utilizadas
en un programa que contiene, o bien genera,
código SQL. Es, de hecho, un error de una clase más
general de vulnerabilidades que puede ocurrir en
cualquier lenguaje de programación o script que
esté embebido dentro de otro.
Sql Injection.
Se dice que existe o se produjo una inyección SQL
cuando, de alguna manera, se inserta o "inyecta"
código SQL invasor dentro del código SQL
programado Este tipo de intrusión normalmente es
de carácter malicioso, dañino o espía

Si el operador escribe un nombre, por ejemplo "Alicia", nada anormal


sucederá, la aplicación generaría una sentencia SQL similar a la siguiente,
que es perfectamente correcta, en donde se seleccionarían todos los registros
con el nombre "Alicia" en la base de datos
Sql Injection.
Pero si un operador malintencionado escribe como nombre de usuario a
consultar

se generaría la siguiente consulta SQL, (el color verde es lo que pretende


el programador, el azul es el dato, y el rojo, el código SQL inyectado):
Inyección SQL Ciega
Sql Injection.
Ataque a ciegas por inyección SQL, en inglés, Blind SQL injection, es una técnica de
ataque que utiliza la inyección SQL. Se evidencia cuando en una página web, por
una falla de seguridad, no se muestran mensajes de error al no producirse
resultados correctos ante una consulta a la base de datos, mostrándose siempre el
mismo contenido (es decir, solo hay respuesta si el resultado es correcto).

Existen programas que automatizan este proceso de “tanteos” letra por letra en el
resultado de la consulta SQL, que un intruso podría enviar inyectado.

Esta técnica se usa cuando una web no muestra los típicos mensajes de error de
datos, al no haber un resultado positivo en una consulta especifica, o sea que solo
se enviará una respuesta por parte del servidor se el resultado es correcto. Es por
ello sentencias que contengan entre sus condiciones valores comparativos como
1=1 o 0=1 ofrecen respuestas, bien sea respuestas negativas o positivas, esta es la
base de esta técnica de inyección SQL.
Sql Injection.
Algunas formas de inyectar código a ciegas en distintos gestores:

Microsoft SQL Server:

http://server/ejemplo.php?id=35; if (exists(select * from Passwords)) waitfor delay


‘0:0:8’—

Mysql_

http://server/ejemplo.php?id=35 and exists(select * from Passwords and


benchmark(8000000,md5(rand()))=0

Mysql (Versión 5)

http://server/ejemplo.asp?id=35 and exists(select * from Passwords) and sleep(8)

Oracle:

http://server/ejemplo.php?id=1; begin if (exists(select * from Passwords)) then


dbms_lock.sleep(8); end if; end;
Sql Injection.
2
El usuario MALICIOSO modifica el envío Get La aplicación recibe la solicitud y consulta la BD
1 (por ejemplo), colocando en la url la para obtener el resultado, es decir, realiza una
sentencia SQL consulta SQL MODIFICADA POR EL ATACANTE

http://www.pagina.com/producto.php?ID=10 UNION SELECT SHOW DATABASE()

La Base de Datos ejecuta la sentencia SQL y


4 El usuario recibe el resultado mostrado por 3 devuelve el resultado. POR LO GENERAL
la aplicación SQL
DEVUELVE INFORMACIÓN CONFINDECIAL
Como encontrarSql Injection.
una Vulnerabilidad de
inyección SQL.

Es un procedimiento muy sencillo no es


necesario utilizar un programa unicamente
con un navegador de preferencia Google o
San Google como lo conocen algunos
informáticos ya que este navegador tiene la
capacidad de indexar todas las paginas de
internet con una coincidencia.
Sql Injection.
En el navegador escribir lo siguiente.
php?id=
Esto generara varias respuestas.
Sql Injection.
Abrimos cualquier pagina que se encuentre en los
resultados. Y al final de php?id= agregara un
numero por ejemplo 200 y le agregamos 200'
Sql Injection.
Nos aparecera el siguiente error , este error nos
indicara que la pagina cuenta con una
vulnerabilidad. El error que debe presentar es el
siguiente.
Sql Injection.
Como funciona el ataque SQL Injection?
Como se indico anteriormente agregandole una
comilla
Se dice que existe o se produjo una inyección
Sql Injection.
SQL cuando, de alguna manera, se inserta o "inyecta"
código SQL invasor dentro del código SQL
programado, a fin de alterar el funcionamiento normal
del programa y lograr así que se ejecute la porción de
código "invasor" incrustado, en la base de datos.
Este tipo de intrusión normalmente es de carácter
malicioso, dañino o espía, por tanto es un problema
de seguridad informática, y debe ser tomado en
cuenta por el programador de la aplicación para poder
prevenirlo. Un programa elaborado con descuido,
displicencia o con ignorancia del problema, podrá
resultar ser vulnerable, y la seguridad del sistema
(base de datos) podrá quedar eventualmente
comprometida.
Se dice que existe o se produjo una inyección
Sql Injection.
SQL cuando, de alguna manera, se inserta o "inyecta"
código SQL invasor dentro del código SQL
programado, a fin de alterar el funcionamiento normal
del programa y lograr así que se ejecute la porción de
código "invasor" incrustado, en la base de datos.
Este tipo de intrusión normalmente es de carácter
malicioso, dañino o espía, por tanto es un problema
de seguridad informática, y debe ser tomado en
cuenta por el programador de la aplicación para poder
prevenirlo. Un programa elaborado con descuido,
displicencia o con ignorancia del problema, podrá
resultar ser vulnerable, y la seguridad del sistema
(base de datos) podrá quedar eventualmente
comprometida.
Que se puede obtener de una inyección SQL.
Acceder al panel administrativo de una pagina web.
Sqlrobar
Modificar el diseño Injection.
informacion de la base de
datos.
Un ejemplo de un panel de administración.

Sql Injection.
Un ejemplo de un panel de administración.

Sql Injection.
Sql Injection.
Como realizar un ataque de inyeccion sql en kali.
En kali linux utilizaremos sql map. En el comando U
escribiremos la direccion de la pagina web vulnerable
ejecutamos y realizara su trabajo.
Con esto obtendremos el nombre de la base de datos
o bases de datos Sql Injection.
disponibles.
Sql Injection.
Apuntaremos hacia la base de datos para obtener las
tablas. Al final debemos de agregar –tables. Ya que
eso es nuestro objetivo.
Sql Injection.
Apuntaremos hacia la base de datos para obtener las
tablas. Al final debemos de agregar –tables. Ya que
eso es nuestro objetivo.
Apuntaremos hacia la base de datos para obtener las
Sql Injection.
tablas. Al final debemos de agregar –tables. Ya que
eso es nuestro objetivo. Y la que necesitamos es la del
administrador para acceder al panel de administrador.
Extraeremos los datos de la tabla webmaster. El
comando que seSql usaInjection.
es el siguiente sqlmap u(se
refiere a la url) (pagina vulnerable) –D (datos) –T la
tabla –C (usuario, el de acceso, contraseña la que se
necesita –Dump(extraer datos).
Extraeremos los datos de la tabla webmaster. El
comando que seSql usaInjection.
es el siguiente sqlmap u(se
refiere a la url) (pagina vulnerable) –D (datos) –T la
tabla –C (usuario, el de acceso, contraseña la que se
necesita –Dump(extraer datos).
Al finalizar nos indicara un mensaje que
hemos extraidoSql los
Injection.
datos de la tabla de
panel de administrador.
Sql Injection.

.
Escapar los caracteres especiales utilizados en las
consultas SQL Sql Injection.

Al hablar de “escapar caracteres” estamos haciendo


referencia a añadir la barra invertida “\” delante de las
cadenas utilizadas en las consultas SQL para evitar que
estas corrompan la consulta. Algunos de estos
caracteres especiales que es aconsejable escapar son
las comillas dobles (“), las comillas simples (‘) o los
caracteres \x00 o \x1a ya que son considerados como
peligrosos pues pueden ser utilizados durante los
ataques
Delimitar los valores de las consultas
Aunque el valor de la consulta sea un entero, es
Sql Injection.
aconsejable delimitarlo siempre entre comillas
simples. Una instrucción SQL del tipo:

SELECT nombre FROM usuarios WHERE id_user = $id

Será mucho más fácilmente inyectable que:

SELECT nombre FROM usuarios WHERE id_user = ‘$id’

Donde $id es un número entero.


Delimitar los valores de las consultas
Sql Injection.
Delimitar los valores de las consultas
Sql Injection.
Delimitar los valores de las consultas
Sql Injection.
Delimitar los valores de las consultas
Sql Injection.
Herramientas de Análisis de inyección SQL.

Sql Injection.
Otra de las opciones que podemos utilizar para realizar un análisis de
nuestro código es el uso de herramientas que testeen nuestras aplicaciones
en busca de vulnerabilidades por inyección SQL. Algunas de estas
herramientas son:

SQLiHelper 2.7 SQL Injection: Se trata de una aplicación cuyo objetivo es


facilitar la extracción de información procedente de bases de datos
utilizando para ello técnicas de inyección SQL. Una vez indicada la url que
queremos analizar, la aplicación realizará peticiones inyectando código SQL
con el fin de comprobar si es realmente vulnerable.

Pangolin: Se trata de una herramienta de pago que ofrece más posibilidades


que la vista en el punto anterior y que está destinada a descubrir
vulnerabilidades tanto del tipo inyección SQL como inyección SQL ciego.

SQLMap: Se trata de una herramienta de pruebas de código abierto que


automatiza el proceso de detectar y explorar los errores de inyección SQL
Ciberataque SQL injection

Sql Injection.
En Junio de 2012, la gran empresa cinematográfica Sony Pictures
Entertainment fue objetivo de los ciberdelincuentes. El grupo de hackers
conocido como LulzSec se atribuye el robo de datos personales de un
millón de usuarios de Sony Pictures Entertainment, la división de cine de
Sony.
La técnica empleada para perpetrar el ataque es la conocida como SQL
injection, mediante la cual lograron los datos de más de 1.000.000 de
usuarios, incluyendo contraseñas, direcciones de correo electrónico,
direcciones postales y fechas de nacimiento. También han podido
acceder a detalles de la administración de Sony Pictures, incluidas las
contraseñas, además de 75.000 “códigos de la música” y 3,5 millones de
“cupones de la música”.
Ciberataque SQL injection

Sql Injection.
Datos de Yahoo! expuestos a través de inyección SQL

Tuvieron acceso total a los archivos de copia de respaldo de uno de los


servidores de dominio de Yahoo! y a doce bases de datos. Los agujeros
de seguridad que permitieron dichos ataques son la explotación de
una vulnerabilidad de inyección SQL en uno de los dominios de la
compañía y a otra del tipo Cross Site Scripting (XSS). De acuerdo al portal
de noticias The Hacker News, los problemas fueron reportados por
Virus_Hima hace algún tiempo sin conseguir ningún tipo de respuesta
por parte de la empresa afectada
Ejemplo de Ciberataque SQL injection

Sql Injection.

Atacan la web de MySQL a través de SQL Injection


El sitio web de MySQL ha sido objeto de un ataque a través de una vulnerabilidad de
inyección ciega de código SQL. Se trata de un fallo en el código de la aplicación web y
no de la base de datos.
MySQL es una popular base de datos de código abierto. MySQL es propiedad de
Oracle tras la compra de SUN, su antigua propietaria.
El ataque se atribuye a TinKode y Ne0h del grupo Rumano Slacker.Ro. Los datos
extraídos han sido publicados en el sitio pastebin.com; algo que viene siendo habitual
en este tipo de “hazañas”.
Además del sitio principal los atacantes replicaron el ataque en las versiones
localizadas de MySQL.com. En concreto las versiones francesa, alemana, italiana y
japonesa.
Los datos expuestos se corresponden con las credenciales de los usuarios del servidor
MySQL y el volcado de la base de datos principal del sitio. Entre las credenciales
pueden observarse nombres de usuario, contraseñas hasheadas, correos y direcciones
Ciberataque SQL injection

Sql Injection.
Anonymous Guatemala ataca sitios web del gobierno

La red de ciberpiratas Anonymous Guatemala se atribuyó el fallo de las


páginas web del Ministerio de Agricultura, el Ministerio de Trabajo, la
Corte de Constitucionalidad y la Policía Nacional Civil (PNC).
Sql Injection.

Muchas gracias por su


atención.

You might also like