Вы находитесь на странице: 1из 26

UNIVERSIDAD

PONTIFICIA BOLIVARIANA SECCIONAL BUCARAMANGA


METODOLOGA DE PRUEBAS DE INYECCIN SQL PARA


ENTORNOS WEB
Gerson Geovanny Delgado Caballero1
Universidad Pontificia Bolivariana
Bucaramanga, Colombia

Resumen
La naturaleza de las aplicaciones Web, principalmente por el amplio mercado que
ofrecen y por la capacidad de permitir su acceso a personas de todo el mundo las
ha convertido en un flanco de ataque por parte de delincuentes cibernticos, entre
las tcnicas encontradas para vulnerar los sitios Web se encuentra la inyeccin
SQL la cual generalmente involucra las base de datos de un sitio Web, de ah su
nombre y se basa principalmente en explotar la relacin que existe entre la
aplicacin y el servidor de base de datos. Esta relacin es explotada para atacar
la base de datos directamente a travs de la aplicacin, utilizando el servidor de
base de datos para atacar otros sistemas en la organizacin. Con el presente
artculo se busca proveer la suficiente informacin para que el lector pueda
entender sta tcnica de ataque, adems que logre dimensionar su alcance,
causas y consecuencias. Este artculo no cubre la sintaxis SQL de base de base
datos. Se supone que el lector tiene una slida comprensin de estos temas. Este
documento se centrar en definir qu es una inyeccin SQL, identificar una
metodologa de pruebas, identificar las tcnicas de evasin y la forma de
defenderse.
Palabras claves
Inyeccin SQL, ataque, seguridad, aplicaciones Web.

Gerson Geovanny Delgado Caballero, Ingeniero de Software y Comunicaciones. Especialista en


Telecomunicaciones. Email: jirusonu@gmail.com


Revista Digital Apuntes de Investigacin | ISSN: 2248-7875
Vol 3 Septiembre 2012
Disponible en: http://apuntesdeinvestigacion.upbbga.edu.co/

UNIVERSIDAD PONTIFICIA BOLIVARIANA SECCIONAL BUCARAMANGA


Abstract
The nature of Web applications, mainly for the broad market offering and the ability to allow
access to people around the world, has become a flank attack by cybercriminals, among the
techniques found to infringe sites Web is SQL injection which usually involves a database of
Web site, hence its name and is mainly based on exploiting the relationship between application
server and database. This relationship is exploited to attack the database directly through the
application using the database server to attack other systems within the organization. The
present article seeks to provide sufficient information to enable the reader to understand this
attack technique that achieves dimension also its scope, causes and consequences. This article
does not cover the basic syntax of SQL database. It is assumed that the reader has a solid
understanding of these issues. This paper will focus on defining who is a SQL injection, to
identify a test methodology to identify the evasion techniques and how to defend themselves.
Keywords:
SQL injection, attack, security, Web applications.

1. Introduccin
Las aplicaciones en ambiente Web ofrecen a todo tipo de atacantes cibernticos un mercado
amplio y exquisito porque encuentran en ellas un punto de convergencia de un nmero muy
importante de organizaciones y usuarios a nivel mundial ms an cuando stas cada da se
enriquecen cada vez con mejores contenidos como multimedia, msica, informacin de todo
tipo, entretenimiento, entre otras muchas ventajas, adicionalmente porque comercialmente
tienen gran acogida por todo tipo de empresas independientemente de su objeto social.
Lograr vulnerar estos sitios de encuentro comn con el fin de obtener determinados beneficios
es una tarea que cada vez mejoran ms los atacantes cibernticos, una tcnica utilizada con
gran frecuencia y con buenos resultados es la inyeccin SQL. Esta tcnica permite que un
atacante logre con esta vulnerabilidad de inyeccin SQL recuperar el contenido de la base de
datos detrs de un firewall y de esta manera penetrar en la red interna, adems puede causar la
contaminacin de toda la informacin sensible almacenada en la base de datos de una
aplicacin, incluida la informacin til como nombres de usuario, contraseas, direcciones,
nmeros de telfono, datos de la tarjeta de crdito, entre otros.
Entre los grandes problemas que enfrentan los administradores ante ataques de este tipo, es
que es una de las vulnerabilidades ms devastadoras para el impacto de un negocio ya que
permite a los usuarios remotos acceder a informacin confidencial.
La mayor importancia que se le da a este ataque radica en que el atacante aprovecha la
sintaxis y las funcionalidades que le brinda el SQL2 en s mismo, para la ejecucin de dichas
consultas, lo cual lo hace potencialmente peligroso ya que con ello puede realizar en el servidor

2

SQL (Structured Query Language, Lenguaje Estructurado de Consultas).


Revista Digital Apuntes de Investigacin | ISSN: 2248-7875
Vol 3 Septiembre 2012
Disponible en: http://apuntesdeinvestigacion.upbbga.edu.co/

UNIVERSIDAD PONTIFICIA BOLIVARIANA SECCIONAL BUCARAMANGA


de base de datos casi cualquier cosa que le sea permitida realizar.
As como existe el ataque existe la forma de protegerse de ellos y no se requiere implementar
acciones extraordinarias que involucren una demora tan significativa en el desarrollo de las
aplicaciones que prolongue de manera exagerada la puesta en produccin del mismo, ms an
cuando los propios lenguajes de programacin y servidores Web ofrecen mecanismos para
contrarrestar este tipo de ataques. Mediante la informacin proporcionada por este artculo el
lector comprender la importancia de implementar las medidas de seguridad necesarias para
minimizar el riesgo de sufrir ataques de tipo Inyeccin SQL y con ello crear aplicaciones ms
seguras y confiables.

2. Qu es la inyeccin SQL?
La inyeccin SQL es un tipo de ataque en el que el atacante incluye declaraciones SQL
malintencionados, a travs de campos de entrada de cualquier tipo de software que precise del
uso de base de datos, o una aplicacin web que interacte con una base de datos para funcionar,
el cual se aprovecha de las vulnerabilidades que tienen dichas aplicaciones debido a que el
desarrollador acepta que los datos del usuario se almacenen o depositen directamente en una
sentencia SQL y no filtran correctamente los caracteres peligrosos.[1][2][3][4].
Tabla 1. Comandos DCL, DDL, DML,
Clusulas y Operadores de Comparacin
Tomado de:
http://www.siclabs.com/descargas.php


Revista Digital Apuntes de Investigacin | ISSN: 2248-7875
Vol 3 Septiembre 2012
Disponible en: http://apuntesdeinvestigacion.upbbga.edu.co/

UNIVERSIDAD PONTIFICIA BOLIVARIANA SECCIONAL BUCARAMANGA

La Inyeccin SQL recibe su nombre debido a que hace uso del lenguaje llamado SQL. Estas
sentencias SQL pueden modificarla estructura de las bases de datos (usando instrucciones del
lenguaje de definicin de datos, o DDL) y manipular el contenido de las bases de datos
(usando instrucciones del lenguaje de manipulacin de datos, o DML). Dentro de los
comandos bsicos de SQL, se identifican cuatro grupos principales: Figura 1, Tabla 1 a), b), c),
d), e). [5] [6]

Los ataques de inyeccin SQL son ayudados la mayora de las veces por los mensajes de error
detallados y datos sin filtrar devueltos por la aplicacin que se muestran en la interfaz del
usuario. Con cada error, ayuda al atacante obtener informacin sobre la base de datos y a crear
y a refinar el ataque. Algunos administradores desactivan estos errores (SHOW_ERRORS y
SHOW_WARNINGS) para que no se muestren posibles errores provocados en el intrprete

Revista Digital Apuntes de Investigacin | ISSN: 2248-7875
Vol 3 Septiembre 2012
Disponible en: http://apuntesdeinvestigacion.upbbga.edu.co/

UNIVERSIDAD PONTIFICIA BOLIVARIANA SECCIONAL BUCARAMANGA


SQL, esto hace que la explotacin de un posible ataque de inyeccin SQL sea ms difcil pero
no imposible, el atacante puede robar datos haciendo una serie de consultas de
Verdadero/Falso (Lgica Booleana) a travs de sentencias SQL. En la Tabla 6 se puede
observar una lista de caracteres muy tiles para la inyeccin SQL. Estos smbolos son usados
es SQL993. [7][8][9]
Tabla 2. Caracteres para Inyeccin SQL
Tomado de:
http://www.siclabs.com/descargas.php

Aunque la tarea inicial para el atacante es identificar los sitios que poseen este tipo de
vulnerabilidad. Casi todas las bases de datos y lenguajes de programacin son potencialmente
vulnerables: MS SQL Server, Oracle, MySQL, PostgreSQL DB2, MS Access, Sybase, Informix,
etc, porque se trata de un problema de validacin de entrada que tiene que ser considerado y
programado por el desarrollador de aplicaciones web. [9]
3. METODOLOGA DE PRUEBAS PARA LA INYECCIN SQL

3

La versin SQL3 (Tambin referida por algunos como SQL99). http://en.wikipedia.org/wiki/SQL:1999


Revista Digital Apuntes de Investigacin | ISSN: 2248-7875
Vol 3 Septiembre 2012
Disponible en: http://apuntesdeinvestigacion.upbbga.edu.co/

UNIVERSIDAD PONTIFICIA BOLIVARIANA SECCIONAL BUCARAMANGA

Pasos a seguir:
3.1 Entender el Funcionamiento de la Aplicacin Web.
Aunque las diferentes aplicaciones se comportan de diferentes maneras, el fundamento es el
mismo, debido a que todos los entornos son basados en Web. Hay que observar cmo el
navegador enva las peticiones al servidor Web. Las peticiones que se envan al servidor Web
pueden ser de dos posibles formas: Visibles (Mtodo GET) u ocultos (Mtodo POST).

Como se observa en la figura 2. El usuario realiza a travs del navegador la peticin de una
pgina Web. El servidor Web identifica la solicitud que para este caso, es una pgina dinmica,
por lo tanto esta debe ser interpretada por el motor de PHP el cual ejecuta el cdigo. Dentro del
cdigo se obtiene el valor de las variables enviadas por el usuario, con base en ello procede a
conectarse al servidor de base de datos para realizar la respectiva consulta. Finalmente el
resultado de la ejecucin del cdigo PHP, es tomado por el servidor Web para ser enviado al
navegador del usuario como respuesta a su solicitud. Algunas veces, la respuesta incluir un
error de SQL de la base de datos, esto ayuda a obtener informacin importante, sin embargo,
otras veces hay que estar concentrado y detecta diferencias sutiles. [6][12][13]

3.2

Validar Entradas y Recopilar Informacin.



Revista Digital Apuntes de Investigacin | ISSN: 2248-7875
Vol 3 Septiembre 2012
Disponible en: http://apuntesdeinvestigacion.upbbga.edu.co/

UNIVERSIDAD PONTIFICIA BOLIVARIANA SECCIONAL BUCARAMANGA

La Inyeccin SQL se puede presentar en cualquier parte de la aplicacin Web, por esta razn
se identifican todas las entradas de datos en la aplicacin web, qu tipo de solicitud podra
provocar anomalas y detectar las anomalas en la respuesta del servidor. Se realizan las
validaciones para de esta manera encontrar una entrada vulnerable en la aplicacin Web. Una
vez detectadas las anomalas el siguiente paso es reunir la mayor informacin posible acerca
de la aplicacin Web a travs de lo siguiente:
Los mensajes de error: Estos mensajes de error generan informacin valiosa. Diversas bases
de datos permiten y requieren diferentes sintaxis SQL. Definir el tipo de motor de base de datos
es fundamental para las siguientes etapas. La mayora de los mensajes de error indican con
qu base de datos estn trabajando. Al identificar el sistema operativo y el servidor web a veces
es ms fcil deducir la posible base de datos.
Entender la consulta: La consulta, puede ser un "SELECT", "UPDATE", "INSERT" o algo ms
complejo. Es importante determinar lo que el formulario o la pgina est tratando de hacer con
la entrada para determinar en qu parte modificar la consulta. [6][9][11][12][13]
3.3 Determinar el Nivel de Privilegios de Usuario, el Nombre y la Versin de la Base de
Datos.
Con el uso de caracteres especficos (@@version) puede saber con certeza la versin de la
base de datos. Pero para esto es fundamental identificar el nmero de columnas de la tabla o
campos seleccionados en la consulta. Esto se logra a travs de la utilizacin de la clausula
ORDER BY. La cual le permite ordenar los resultados en funcin de los campos que hayan sido
seleccionados en la consulta.

La consulta anterior (Ejemplo 1) ordena los campos por apellido. Otra alternativa para indicar el
nombre del campo es utilizando su posicin.

Con esta consulta (Ejemplo 2) se podr ir ordenando por el primer campo, luego por el segundo
y as de forma incremental hasta generar un error de este tipo:
La posicin 3 no existe

porque


Revista Digital Apuntes de Investigacin | ISSN: 2248-7875
Vol 3 Septiembre 2012
Disponible en: http://apuntesdeinvestigacion.upbbga.edu.co/

solo

se

UNIVERSIDAD PONTIFICIA BOLIVARIANA SECCIONAL BUCARAMANGA


seleccionaron 2 campos (nombre y apellido), por esta razn genera este tipo de errores.
Cuando esto suceda se sabr cuantos campos se seleccionaron en la consulta sin necesidad
de mirar el cdigo fuente o la estructura de la consulta. Identificado el nmero de campos
seleccionados en la consulta, se debe determinar cul de todos esos campos se muestran en la
aplicacin Web. No todos los campos seleccionados se suelen mostrar en la pgina Web de
respuesta, algunos son utilizados internamente por la aplicacin. Determinar qu campos son
visibles servir para mostrar a travs de ellos la informacin que se quiere de la base de datos
(el tipo y la versin). Para esto es necesaria la utilizacin de la clusula UNION, la cual indica
que se debe unir el resultado de la consulta anterior con los resultados de la consulta posterior.
Para que esto sea posible las consultas deben tener el mismo nmero de campos, de lo
contrario se generara un error; por esta razn, es fundamental determinar el nmero de
campos seleccionados en las consultas. Una vez identificados los campos seleccionados, estos
permiten realizar las respectivas consultas SQL con los caracteres especficos. [user(),
versin(), database()].

La unin de estas dos consultas (Ejemplo 3) muestra como resultado los datos de los usuarios
con id 1 y 2. SQL integra varias funciones que funcionan en la mayora de las bases de datos:

user or current_user
session_user
system_user
' and 1 in (select user )

Estas funciones devuelven el nombre de usuario dentro de un mensaje de error. Para tener el
mayor xito en la inyeccin SQL se requiere altos niveles de privilegios de usuario. Esto nos
indica lo que puede o no puede hacer el usuario, que al final servir para ahorrar tiempo.
[6][8][9][13]
3.4 Realizar el Ataque.
Conociendo la informacin bsica de la base de datos, la estructura de la consulta y los
privilegios, se procede a iniciar el ataque. Descubrir la estructura de la base de datos. MySQL
guarda los metadatos de las bases de datos en una base de datos llamada
INFORMATION_SCHEMA (Figura 3), la cual es la base de datos de informacin, donde se
almacena informacin sobre todas las otras bases de datos que mantiene el servidor MySQL.
Dentro de INFORMATION_SCHEMA hay varias tablas de slo lectura. Aunque se puede
seleccionar INFORMATION_SCHEMA como base de datos por defecto con el comando USE,
slo se puede leer el contenido de las tablas, no efectuar operaciones INSERT, UPDATE o
DELETE. [6][9] [11][12]


Revista Digital Apuntes de Investigacin | ISSN: 2248-7875
Vol 3 Septiembre 2012
Disponible en: http://apuntesdeinvestigacion.upbbga.edu.co/

UNIVERSIDAD PONTIFICIA BOLIVARIANA SECCIONAL BUCARAMANGA

Nos enfocaremos en las siguientes tablas:

SCHEMATA: Bases de datos.


TABLES: Tablas en las bases de datos.
COLUMNS: Columnas en las tablas.

Enumeracin de la base de datos. En MySQL un esquema es una base de datos, por lo tanto
la tabla SCHEMATA (Figura 4), proporciona informacin acerca de las bases de datos. En el
campo SCHEMA_NAME se encuentran los nombres de todas las base de datos.[6][9]


Revista Digital Apuntes de Investigacin | ISSN: 2248-7875
Vol 3 Septiembre 2012
Disponible en: http://apuntesdeinvestigacion.upbbga.edu.co/

UNIVERSIDAD PONTIFICIA BOLIVARIANA SECCIONAL BUCARAMANGA


Enumeracin de las tablas del sistema. En MySQL la tabla TABLES (Figura 5) proporciona
informacin acerca de las tablas en las bases de datos. El campo TABLE_SCHEMA contiene
informacin de los nombres de la base de datos y el campo TABLE_NAME contiene el nombre
de las tablas. [6][9][11][13]

Enumeracin de las columnas de las tablas de diferentes bases de datos: Algunos


servidores tienen varias bases de datos. Se pueden extraer al interrogar a las tablas del sistema
de informacin de metadatos sobre las bases de datos. En MySQL la tabla COLUMNS (Figura
6) proporciona informacin acerca de las columnas en las tablas. En el campo COLUMN_NAME
se encuentran los nombres de las columnas. Las tablas TABLES y COLUMNS, contienen 3
columnas que son compartidas:

TABLE_SCHEMA: Contiene los metadatos de las bases de datos.


TABLE_NAME: Contiene el nombre de las tablas.
COLUMN_NAME: Contiene el nombre de las columnas de la tabla en cada base de
datos. [13][15]


Revista Digital Apuntes de Investigacin | ISSN: 2248-7875
Vol 3 Septiembre 2012
Disponible en: http://apuntesdeinvestigacion.upbbga.edu.co/

UNIVERSIDAD PONTIFICIA BOLIVARIANA SECCIONAL BUCARAMANGA


3.5 Extraccin de Datos.
La extraccin de los datos es fcil una vez que la base de datos ha sido enumerada y las
consultas se han entendido. Estos datos se utilizan para extraer la informacin o los datos.

Extraer el nombre de usuario y contrasea de una tabla definida por el usuario.


Extraer los hash de las contraseas de base de datos.
Transferir la estructura de la base de datos y los datos a travs de una conexin inversa
a un servidor SQL Server local.
Crear una estructura de base de datos idntica. Mediante la transferencia de los
metadatos de la base de datos se puede crear la estructura de base de datos en el
sistema local.
Transferir la base de datos. Creada la estructura, los datos pueden transferirse
fcilmente. Este mtodo permite al atacante recuperar el contenido de una tabla incluso
si la aplicacin est diseada para ocultar mensajes de error o resultados no vlidos de
la consulta. [6][9][13]

3.6 Interaccin con el Sistema Operativo.


Dependiendo del tipo de base de datos y los privilegios que se obtengan es posible interactuar
directamente con el sistema operativo subyacente. Dos formas de interactuar con el sistema
operativo:

Lectura y escritura de archivos del sistema desde disco.


Ejecucin directa de comandos

En ambos casos se ver restringido por los privilegios y permisos del usuario con el que se
ejecuta el motor de base de datos. No siempre es posible evadir al sistema operativo para la
ejecucin directa de comandos a travs de la inyeccin SQL. En la mayora de base de datos,
la ruta de acceso al sistema operativo no es directa. Se debe realizar la bsqueda de
contraseas y en algunos casos reemplazar archivos de configuracin para lograr acceder
indirectamente. Otra forma de ejecutar comandos es a travs de la automatizacin de Scripts
para ActiveX. [9][13]
3.7 Ampliar la influencia.
En esta etapa final el atacante puede ampliar su influencia saltando a otras aplicaciones o
servidores de base de datos. Vincula estos servidores remotos para comunicarse de forma
transparente con ellos y de esta manera realizar consultas distribuidas e incluso controlar estos
servidores de base de datos de forma remota y utilizar esa capacidad para acceder a la red
interna. Tambin es posible subir archivos a travs de una conexin inversa y de una inyeccin
SQL y ejecutar de forma remota procedimientos almacenados, debido que algunos servidores
estn configurados nicamente para permitir la ejecucin remota de dichos procedimientos.[9]


Revista Digital Apuntes de Investigacin | ISSN: 2248-7875
Vol 3 Septiembre 2012
Disponible en: http://apuntesdeinvestigacion.upbbga.edu.co/

UNIVERSIDAD PONTIFICIA BOLIVARIANA SECCIONAL BUCARAMANGA


4. APLICACIN DE LA METODDOLOGA.
4.1 Funcionamiento de la Aplicacin Web: La aplicacin web de ejemplo permite que
mediante un formulario de inicio de sesin le pida al usuario su identificador (ID), para que
posterior a su validacin le muestre al usuario la informacin o el acceso que la aplicacin Web
tiene disponible para l. (Figura 7)

Al observar la URL de la aplicacin se identifican los parmetros que van despus del signo de
interrogacin (?) separados entre si por el signo et (&), estos parmetros indican exactamente
el nmero de ID a consultar en la pgina Web (Figura 8). Se identifica que el mtodo utilizado
es el mtodo GET donde claramente se observa la variable y su valor en la URL 01020304.

4.2 Validar Entradas y Recopilar Informacin: Los mensajes de error. Con el mensaje de
error suministrado se puede determinar que la base de datos utilizada en la aplicacin es
MySQL (Figura 9).

Entender la consulta.
Identificado en el paso anterior que se utiliza el mtodo GET, se puede deducir en las lineas del
codigo PHP (Ejemplo 4) que los valores enviados no tienen ninguna validacin. Esta es una
posible forma como se obtienen los valores enviados por el usuario:


Revista Digital Apuntes de Investigacin | ISSN: 2248-7875
Vol 3 Septiembre 2012
Disponible en: http://apuntesdeinvestigacion.upbbga.edu.co/

UNIVERSIDAD PONTIFICIA BOLIVARIANA SECCIONAL BUCARAMANGA

Luego se puede deducir que ms adelante se concatena el valor de la variable $id para formar
la consulta SQL (Ejemplo 5).

Si por ejemplo el $id fuera 1 la consulta quedara de la siguiente manera (Ejemplo 6):

La orden SELECT sirve para consultar registros de la base de datos. En el ejemplo 6 se


estaran consultando todos los registros de la tabla users cuyo valor de la columna id sea igual
a 1.
4.3 Determinar el Nivel de Privilegios de Usuario, el Nombre y la Versin de la Base de
Datos.

Obteniendo el nmero de campos seleccionados. Figura 10 a), b), c).


Revista Digital Apuntes de Investigacin | ISSN: 2248-7875
Vol 3 Septiembre 2012
Disponible en: http://apuntesdeinvestigacion.upbbga.edu.co/

UNIVERSIDAD PONTIFICIA BOLIVARIANA SECCIONAL BUCARAMANGA

Identificando los campos que son visibles. Figura 11 a), b).


Revista Digital Apuntes de Investigacin | ISSN: 2248-7875
Vol 3 Septiembre 2012
Disponible en: http://apuntesdeinvestigacion.upbbga.edu.co/

UNIVERSIDAD PONTIFICIA BOLIVARIANA SECCIONAL BUCARAMANGA

Obteniendo el nombre de la base de datos, el nombre de usuario y la versin de la base


de datos. Figura 12 a), b).


Revista Digital Apuntes de Investigacin | ISSN: 2248-7875
Vol 3 Septiembre 2012
Disponible en: http://apuntesdeinvestigacion.upbbga.edu.co/

UNIVERSIDAD PONTIFICIA BOLIVARIANA SECCIONAL BUCARAMANGA


4.4 Realizar el Ataque.

Descubriendo la estructura de la base de datos. Figura 13.


Enumeracin de la base de datos. Figura 13.

Enumeracin de las tablas del sistema. Figura 14.


Revista Digital Apuntes de Investigacin | ISSN: 2248-7875
Vol 3 Septiembre 2012
Disponible en: http://apuntesdeinvestigacion.upbbga.edu.co/

UNIVERSIDAD PONTIFICIA BOLIVARIANA SECCIONAL BUCARAMANGA

Enumeracin de las columnas de las tablas de diferentes bases de datos. Figura 15.

4.5 Extraccin de Datos.


Informacin obtenida de la enumeracin.

Base de datos: dvwa


Tabla: users
Columnas: user, password

Extraccin de la informacin o los datos:

Nombre de usuario y contrasea. Figura 16.


Hash de las contraseas. Figura 16.


Revista Digital Apuntes de Investigacin | ISSN: 2248-7875
Vol 3 Septiembre 2012
Disponible en: http://apuntesdeinvestigacion.upbbga.edu.co/

UNIVERSIDAD PONTIFICIA BOLIVARIANA SECCIONAL BUCARAMANGA

Crackear las contraseas encriptadas con MD5.


Revista Digital Apuntes de Investigacin | ISSN: 2248-7875
Vol 3 Septiembre 2012
Disponible en: http://apuntesdeinvestigacion.upbbga.edu.co/

UNIVERSIDAD PONTIFICIA BOLIVARIANA SECCIONAL BUCARAMANGA

Contrasea crackeada: password

4.6 Interaccin con el Sistema.

Lectura y escritura de archivos del sistema. Figura 19.


Revista Digital Apuntes de Investigacin | ISSN: 2248-7875
Vol 3 Septiembre 2012
Disponible en: http://apuntesdeinvestigacion.upbbga.edu.co/

UNIVERSIDAD PONTIFICIA BOLIVARIANA SECCIONAL BUCARAMANGA

4.7 Ampliar la Influencia.

Subir archivos a travs de una conexin inversa o de una inyeccin SQL. Figura 20.


Revista Digital Apuntes de Investigacin | ISSN: 2248-7875
Vol 3 Septiembre 2012
Disponible en: http://apuntesdeinvestigacion.upbbga.edu.co/

UNIVERSIDAD PONTIFICIA BOLIVARIANA SECCIONAL BUCARAMANGA

5. TCNICAS DE EVASIN Y DEFENSA CONTRA INYECCIN SQL.


Algunas son del tipo predictivo que permiten detectar y bloquear los ataques, incluso en tiempo
real y otros son del tipo preventivos. Actualmente existen varias formas para evadir y
defenderse de los ataques de inyeccin SQL. Es importante recordar que las soluciones
analizadas son complementarias, en su conjunto las tcnicas que se plantean ayudan a
conseguir una arquitectura de seguridad multicapa. [18]
5.1 Defensas a Nivel de Cdigo.
Es la defensa ms eficaz contra los ataques de inyeccin SQL. [18]

Conexiones con mnimos privilegios.


Validar los datos especificados por el usuario mediante comprobaciones de tipo,
longitud, formato e intervalo.
No hacer suposiciones sobre el tamao, tipo de contenido de los datos que recibir la
aplicacin.
Comprobar el tamao y el tipo de los datos especificados y aplique los limites
adecuados.
Comprobar el contenido de las variables de cadena y aceptar nicamente los valores
esperados.
Rechazar las especificaciones que contengan datos binarios, secuencias de escape y
caracteres de comentario.
Para los entornos de varios niveles, todos los datos deben validarse antes de que se
admitan en la zona de confianza. Los datos que no superen el proceso de validacin
deben rechazarse, y debe devolverse un error al nivel anterior.

Revista Digital Apuntes de Investigacin | ISSN: 2248-7875
Vol 3 Septiembre 2012
Disponible en: http://apuntesdeinvestigacion.upbbga.edu.co/

UNIVERSIDAD PONTIFICIA BOLIVARIANA SECCIONAL BUCARAMANGA

Implementar varias capas de validacin, es decir, validar los datos especificados por el
usuario en la interfaz de usuario y, despus, en todos los puntos posteriores que
atraviesen un lmite de confianza.
No concatene los datos especificados por el usuario que no se hayan validado.
Rechazar los datos que contengan diversidad de caracteres. [17] [20]

5.2 Defensas a Nivel de Base de Datos.


Nunca confi en su aplicacin Web, las aplicaciones cambian a travs del tiempo y las
vulnerabilidades inesperadas pueden aparecer, por es necesario el realizar el endurecimiento
Hardening al servidor de base de datos.
En lo posible separar la base de datos del servidor de aplicaciones.
Deshabilitar o Restringir el acceso remoto.
Deshabilitar el uso de permisos que puedan leer ficheros del sistema operativo desde la
base de datos.
Cambiar el nombre de usuario y la contrasea del usuario root.
Eliminar la base de datos por defecto Test que se distribuye con el servicio.
Eliminar las cuentas annimas y obsoletas.
Utilizar privilegios mnimos del sistema.
Utilizar privilegios mnimos de la base de datos.
Configurar los log.
Cambiar el directorio raz a una particin distinta al sistema operativo.
Eliminar el historial de la lnea de comandos del usuario de la base de datos.
Aplicar actualizaciones de seguridad del sistema operativo y del motor de base de datos.
5.3 Defensas a Nivel de Plataforma.
Una defensa a nivel de plataforma es cualquier mejora o cambio de configuracin en tiempo
real que se puede hacer para aumentar la seguridad global de la aplicacin. [12] Aunque la
proteccin en tiempo real proporciona muchos beneficios, es necesario considerar algunos de
los costos que pueden estar implicados, pero tambin existen soluciones de software gratuitas
que estn disponibles para su descarga en internet. La solucin mas conocida en la seguridad
de las aplicaciones Web es el uso de un firewall de aplicacin Web (WAF).
Un WAF es un dispositivo de red o solucin basada en software que agrega caractersticas de
seguridad para una aplicacin Web. Uno de los WAF mas utilizados y de cdigo abierto es el
ModSecurity, el cual se implementa como un modulo del servidor web Apache. ModSecurity
puede proteger prcticamente cualquier aplicacin Web, incluso las aplicaciones Web basadas
en ASP y ASP.NET. [12][24] Puede utilizar ModSecurity para la prevencin de ataques, la
vigilancia, la deteccin de intrusos y en general el endurecimiento de las aplicaciones. [12][24]
La fortaleza de ModSecurity es la combinacin de directivas de configuracin y un lenguaje de
programacin simple aplicado a las peticiones y respuesta HTTP. El pronstico generalmente
es una accin especfica, como permitir el paso de la solicitud, registrar la solicitud o el bloqueo
de la misma. GreenSQL es otro firewall de aplicaciones que brinda seguridad a las bases de
datos. Soporta MySQL y PostgreSQL en su versin Express y en su versin comercial soporta
Microsoft SQL Server. GreenSQL es un firewall de base de datos de cdigo abierto utilizado
para la proteger las bases de datos de los ataques de Inyeccin SQL. Opera como un proxy
entre el servidor de base de datos (MySQL, PostgreSQL o Microsoft SQL Server) y la aplicacin

Revista Digital Apuntes de Investigacin | ISSN: 2248-7875
Vol 3 Septiembre 2012
Disponible en: http://apuntesdeinvestigacion.upbbga.edu.co/

UNIVERSIDAD PONTIFICIA BOLIVARIANA SECCIONAL BUCARAMANGA


Web. Su lgica se basa en la evaluacin de los comandos SQL utilizando una matriz de
calificacin de riesgos, as como el bloqueo de comandos conocidos utilizados en la
administracin de las bases de datos (DROP, CREATE, etc.) GreenSQL puede ser utilizado
para operar en los siguientes modos: [23]

Modo simulacin. (Modo IDS).


Bloqueo de comandos sospechosos. (Modo IPS)
Modo Aprendizaje.
Proteccin activa para consultas desconocidas.

La peticiones que son enviadas a la aplicacin Web, se envan a travs del puerto de escucha
de GreenSQL (Puerto 3305), el cual las analiza y las reenva al servidor de base de datos. [23]
Se recomienda para su configuracin inicial habilitar en modo aprendizaje con el objetivo de no
generar ningn impacto en las consultas que son enviadas o generadas para la aplicacin Web.
En este modo todas las consultas se aaden automticamente a una lista blanca (Whitelist) o
lista permitida. Una vez determinadas las consultas que son importantes para la aplicacin Web
se puede proceder a cambiar al modo de proteccin activa. Ofrece una intrerfaz grfica de
gestin compatible con los navegadores ms comunes, con un conjunto de opciones para su
configuracin. [23]


Revista Digital Apuntes de Investigacin | ISSN: 2248-7875
Vol 3 Septiembre 2012
Disponible en: http://apuntesdeinvestigacion.upbbga.edu.co/

UNIVERSIDAD PONTIFICIA BOLIVARIANA SECCIONAL BUCARAMANGA


6. Conclusiones
El eslabn ms dbil en una aplicacin Web para que permita ataques de inyeccin SQL es la
poca o ninguna validacin de las variables de entrada. Los desarrolladores deben reconocer
que la seguridad es un componente fundamental de cualquier producto de software y deben
incluir buenas prcticas de programacin en el software que se est desarrollando. Construir la
seguridad en un producto es mucho ms fcil y mucho ms rentable que cualquier intento
posterior a la eliminacin o mitigacin de los defectos descubiertos por los intrusos. Es una de
las vulnerabilidades que genera mayor impacto porque permite el acceso a la informacin
sensible o confidencial de una organizacin o entidad. Los diferentes motores de bases de
datos y los mismos lenguajes de programacin implementan tcnicas para contrarrestar este
tipo de ataques pero la principal responsabilidad se encuentra en el desarrollador quien debe
validar correctamente las entradas de datos.
7. Agradecimientos
Agradecimientos para Dios por las capacidades intelectuales otorgadas, a mis padres por su
constante e incondicional apoyo y a todos los autores de las diversas referencias bibliogrficas
consultadas.
8. Biografa

Gerson Delgado naci en Piedecuesta Santander, Especialista en Telecomunicaciones de la


Universidad Industrial de Santander Bucaramanga, Colombia en 2011. Ingeniero de Software
y Comunicaciones de la Universidad de Santander Bucaramanga Colombia en 2004. Amplio
inters por la seguridad informtica, la investigacin y las nuevas tecnologas. Actualmente se
desempea como profesional de seguridad informtica de una prestigiosa entidad Financiera.


Revista Digital Apuntes de Investigacin | ISSN: 2248-7875
Vol 3 Septiembre 2012
Disponible en: http://apuntesdeinvestigacion.upbbga.edu.co/

UNIVERSIDAD PONTIFICIA BOLIVARIANA SECCIONAL BUCARAMANGA


9. Referencias
[1].
SQL
Injection
(2010).
http://www.owasp.org/index.php/SQL_Injection

[Online].

Disponible

en:

[2]. Sagar, Joshi (2005). SQL Injection Attack and Defense. [Online]. Disponible en:
http://www.securitydocs.com/library/3587
[3]. Kenkeiras (2010). SQL Injection. [Online]. Disponible en: http://talleres.hackxcrack.es/
[4]. Litchfield, David (2005). Data-mining with SQL Injection and Inference. [Online]. Disponible
en: http://www.databasesecurity.com/webapps/sqlinference.pdf
[5]. Anley, Chris (2002). Advanced SQL Injection In SQL Server Applications. [Online].
Disponible
en:
http://www.ngssoftware.com/Libraries/Documents/Advanced_SQL_Injection_in_SQL_Server_Ap
plications.sflb.ashx
[6]. Racciatti, Hernn (2005). SQL Injection. Tres aos despus Deteccin y Evasin.
[Online].
Disponible
en:
http://www.sicinformatica.com.ar/media/SQL%20Injection%20%20Deteccion%20y%20Evasion.zip
[7].
Blindfolded
SQL
Injection
(2009).
http://www.imperva.com/docs/Blindfolded_SQL_Injection.pdf

[Online].

Disponible

en:

[8]. Ka0x (2008). Tcnicas de inyeccin en MySQL. [Online]. Disponible en: http://www.exploitdb.com/wpcontent/themes/exploit/docs/216.pdf
[9]. Chapela, Vctor (2005). Advanced SQL Injection.
http://www.owasp.org/images/7/74/Advanced_SQL_Injection.ppt

[Online].

Disponible

en:

[10]. OWASP (2010). Open Web Application Security Project. [Online]. Disponible en:
http://www.owasp.org/index.php/Main_Page
[11]. Martorella, Christian (2008). Principales vulnerabilidades en aplicaciones Web. [Online].
Disponible en: http://www.edgesecurity.com/docs/Edge-Security_Rediris2008.pdf
[12]. Clarke, Justin (2009). SQL Injection Attacks and Defense. Ed. Syngress Publishing, Inc.
[13].
McCray,
Joe.
Advanced
http://www.toorcon.org/tcx/9_McCray.pdf

SQL

Injection.

[Online].

Disponible

en:

[14]. Warneck, Brad (2007). Defeating SQL Injection IDS Evasion. [Online]. Disponible en:
http://www.giac.org/certified_professionals/practicals/gcia/1231.php
[15]. Inyeccin SQL en Aplicaciones Web (I) (2007). [Online]. Disponible en:
http://informaticapractica.net/solocodigo/index.php/2007/09/05/inyeccion-sql-enaplicacionesweb-i/

Revista Digital Apuntes de Investigacin | ISSN: 2248-7875
Vol 3 Septiembre 2012
Disponible en: http://apuntesdeinvestigacion.upbbga.edu.co/

UNIVERSIDAD PONTIFICIA BOLIVARIANA SECCIONAL BUCARAMANGA

[16]. Anley, Chris (2002). (more) Advanced SQL Injection. [Online]. Disponible en:
http://www.ngssoftware.com/Libraries/Documents/more_Advanced_SQL_Injection.sflb.ashx
[17]. Cerullo, Fabio (2010). OWASP Top 10 2010, Los diez riesgos ms importantes en
aplicaciones
web.
[Online].
Disponible
en:
http://www.owasp.org/images/1/19/Owasp_top10_spanish.pdf
[18]. Nystrom, Martin (2007). SQL Injection Defenses. Ed. Oreilly Media.
[19].
Fisk,
Harrison
(2004).
Prepared
Statements.
[Online].
http://dev.mysql.com/techresources/articles/4.1/preparedstatements.html

Disponible

en:

[20]. SQL Injection Prevention Cheat Sheet (2010). [Online].


http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet

Disponible

en:

[21]. Ramos, Alejandro (2010). Fortificacin de MySQL 1/3. [Online]. Disponible en:
http://www.securitybydefault.com/search?q=sql+1
[22].
OWASP
Testing
Guide
V3.0
(2008).
[Online].
http://www.owasp.org/images/5/56/OWASP_Testing_Guide_v3.pdf
[23]. GreenSQL. [Online]. Disponible en: http://www.greensql.net/about
[24]. Modsecurity. [Online]. Disponible en: http://www.modsecurity.org/


Revista Digital Apuntes de Investigacin | ISSN: 2248-7875
Vol 3 Septiembre 2012
Disponible en: http://apuntesdeinvestigacion.upbbga.edu.co/

Disponible

en:

Вам также может понравиться