Tutorial de Inyección SQL para Principiantes

Ver el tema anterior Ver el tema siguiente Ir abajo

Tutorial de Inyección SQL para Principiantes

Mensaje por EHKing el Sáb Nov 28, 2015 12:31 pm

Aunque hay miles de exploits diseñados para aprovecharse de páginas web diseñadas de forma inadecuada, la Inyección de SQL es sobradamente uno de los ataques más eficaces, más fáciles, y de gran alcance. Los ataques por inyección de SQL se producen a diario a medida que más y más sitios web confían en diseños basados en datos para crear contenido dinámico para los lectores. Estos diseños dinámicos usan MySQL u otro gestor de base de datos que probablemente se basa en SQL; por lo tanto, haciéndolos vulnerables a este ataque.

Dado que un ataque de Inyección SQL trabaja directamente con bases de datos, debería tener conocimiento básico de SQL antes de comenzar. Aprende SQL es un recurso excelente para aquéllos que no están familiarizados con el Lenguaje Estructurado de Consultas.

En este artículo, aprenderá cómo realizar un ataque por inyección de SQL en un sitio web. Por favor tenga en cuenta que este artículo se realiza sólo con fines académicos. Si realiza un ataque en un sitio web que no le pertenece, está violando leyes y podría enfrentarse a la encarcelación y a fuertes multas. Dicho esto, es útil entender cómo funciona la inyección de SQL para que pueda prevenir que ocurra en su propio sitio web.

¿Qué es la Inyección de SQL?

La inyección de SQL es una técnica de inyección de código que explota una vulnerabilidad de seguridad dentro de la capa de base de datos de una aplicación. Esta vulnerabilidad puede encontrarse cuando la entrada del usuario se filtra de forma incorrecta debido a caracteres de escape embebidos en sentencias SQL.

Aunque la inyección de SQL se utiliza en su mayoría para atacar sitios web, puede también ser usado para atacar cualquier base de datos SQL. En el último año, una empresa de seguridad informó que una aplicación web media es atacada al menos cuatro veces al mes por técnicas de inyección de SQL. Los distribuidores en internet reciben más ataques que cualquier otra industria con una presencia online.

Escogiendo un Blanco

El primer paso para realizar un ataque por inyección de SQL es encontrar un sitio web vulnerable. Este es seguramente el proceso que consume más tiempo de todo el ataque. Más y más páginas web se están protegiendo de las inyecciones SQL por lo que encontrar un objetivo vulnerable puede llevar algún tiempo.

Una de las formas más sencillas de encontrar sitios vulnerables se conoce como Google Dorking. En este contexto, un dork es una consulta de búsqueda específica que encuentra sitios web que cumplen los parámetros de la consulta avanzada que introduces. Algunos ejemplos de dorks que puede usar para encontrar sitios vulnerables de un ataque por inyección de SQL son:

inurl:index.php?id=

inurl:trainers.php?id=

inurl:buy.php?category=

inurl:article.php?ID=

inurl:play_old.php?id=

inurl:declaration_more.php?decl_id=

inurl:pageid=

inurl:games.php?id=

inurl:page.php?file=

inurl:newsDetail.php?id=

inurl:gallery.php?id=

inurl:article.php?id=

inurl:show.php?id=

inurl:staff_id=

inurl:newsitem.php?num= andinurl:index.php?id=

inurl:trainers.php?id=

inurl:buy.php?category=

inurl:article.php?ID=

inurl:play_old.php?id=

inurl:declaration_more.php?decl_id=

inurl:pageid=

inurl:games.php?id=

inurl:page.php?file=

inurl:newsDetail.php?id=

inurl:gallery.php?id=

inurl:article.php?id=

inurl:show.php?id=

inurl:staff_id=

inurl:newsitem.php?num=

Por supuesto, hay muchos otros también. El componente clave de estas consultas de búsqueda específicas es que todas ellas se centran en sitios web que se basan en scripts PHP para generar contenido dinámico de una base de datos SQL en algún lugar del backend del servidor. Puede aprender más sobre PHP con este curso sobre Fundamentos de programación en PHP.

Recuerde que el ataque por inyección SQL puede funcionar en cualquier base de datos SQL, pero las páginas web basadas en PHP son sus mejores objetivos porque pueden configurarse por todo el mundo (p.e. WordPress) y a menudo contienen mucha información valiosa sobre clientes dentro de la base de datos que intenta atacar.

Sin embargo, sólo porque Google le devuelta un resultado usando esos dorks no significa que sea vulnerable al ataque. El siguiente paso es probar cada sitio web hasta encontrar uno que sea vulnerable.

Navegue a uno de esos sitios web que ha encontrado. Por este ejemplo, supongamos que uno de los resultados de búsqueda ha sido http://www.udemy.com/index.php?catid=1. Para averiguar si este sitio es vulnerable a la inyección SQL, simplemente añada un apóstrofe al final de la URL así:

http://www.udemy.com/index.php?catid=1’

Pulse enter y vea lo que hace el sitio. Si la página devuelve un error SQL, el sitio web es vulnerable a técnicas de inyección SQL.

En este punto, entender SQL es incluso más importante ya que empezará a manipular la base de datos directamente desde la página vulnerable. Puede comenzar a practicar su SQL por ejemplo, con una base de datos Access. Este curso Bases de Datos con Microsoft Access 2013 le ayudará a diseñar tablas y ejecutar consultas y mucho más.

Comenzando el Ataque

Después de localizar un sitio vulnerable, necesita averiguar cuántas columnas existen en la base de datos y cuántas de esas columnas son capaces de aceptar sus consultas. Añada una sentencia order by a la URL así:

http://www.udemy.com/index.php?catid=1 order by 1

Continúe aumentando el número detrás del “order by” hasta que devuelva un error. El número de columnas de la base de datos es el mayor número que pudo obtener antes de recibir el error. También necesita averiguar qué columnas aceptan consultas.

Puede hacer esto añadiendo una sentencia “Union Select” a la URL. Una sentencia union select en esta URL se parecería a esto:

http://www.udemy.com/index.php?catid=-1 union select 1,2,3,4,5,6

Hay un par de cosas a tener en cuenta en este ejemplo. Antes del número uno (después de catid), necesita añadir un guión (-). Además, el número de columnas que descubrió en el paso anterior es el número de dígitos que debe poner después de la sentencia union select. Por ejemplo, si descubrió que la base de datos tiene 12 columnas, debería añadir:

catid=-1 union select 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12

Los resultados de esta consulta corresponderá a los números de columna que aceptan consultas. Puede elegir cualquiera de estas columnas para inyectar sus sentencias SQL.

Explotar la Base de Datos

En este punto, ya sabe a qué columnas dirigir sus sentencias SQL y puede comenzar a explotar la base de datos. Se apoyará en sentencias union select para realizar la mayoría de las funciones de aquí en adelante.

Este tutorial acaba aquí. Ha aprendido cómo seleccionar un sitio web vulnerable y detectar qué columnas responden a sus consultas. Lo único que resta es añadir comandos SQL a la URL. Algunas de las funciones más comunes que puede realizar en este momento incluyen obtener una lista de las bases de datos disponibles, obtener el usuario actual, obtener las tablas, y por último, las columnas dentro de estas tablas. Las columnas son donde se almacenan toda la información personal.

Si no conoce los comandos SQL para acabar la explotación, debería estudiar varios comandos antes de intentar un ataque por inyección de SQL.

Usando esta información, puede buscar vulnerabilidades dentro de sus sitios web y realizar pruebas de intrusión en otras. Recuerde que lo que hace con esta información es únicamente responsabilidad suya. Hackear puede ser muy divertido – pero no significa que deba quebrantar las leyes para pasarlo bien.
avatar
EHKing
Admin

Mensajes : 23
Fecha de inscripción : 24/11/2015

Ver perfil de usuario http://theshadow.geekaddict.net

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.