Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Download
Standard view
Full view
of .
Look up keyword
Like this
33Activity
0 of .
Results for:
No results containing your search query
P. 1
Inyeccion SQL a Ciegas

Inyeccion SQL a Ciegas

Ratings:

5.0

(1)
|Views: 3,787|Likes:
Published by Alexander Cuervo
Documento que explica la vulnerabilidad Blind SQL y las formas de explotarla
Documento que explica la vulnerabilidad Blind SQL y las formas de explotarla

More info:

Published by: Alexander Cuervo on Oct 24, 2008
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

04/30/2013

pdf

text

original

 
 
Hacking NewbieHacking NewbieHacking NewbieHacking Newbie
Inyeccion a ciegas SQLInyeccion a ciegas SQLInyeccion a ciegas SQLInyeccion a ciegas SQL
CUCUCUCUHHHH eeee----zinezinezinezine 3333
ª
EEEEdiciodiciodiciodicionnnn
INYECCION SQL A CIEGAS I PARTE
By Alesteir
INYECCIONINYECCIONINYECCIONINYECCION SQLSQLSQLSQL AAAACIEGASCIEGASCIEGASCIEGAS
((BLIND SQL INJECTION BLIND SQL INJECTION BLIND SQL INJECTION BLIND SQL INJECTION)  ) ) 
Para nadie es un secreto que unasde las mayores vulnerabilidades dela red son las famosas inyeccionesSQL, pero existen variadas técnicas y una de ellas, esla que actualmente se conoce como inyección aciegas de SQL (blind sql injection), este articulo esuna corta introducción al tema, y nos ayudara acomprender lo que son, como funcionan dichastécnicas, y alguna cosilla mas, en un proximonumero del e-zine trataremos la forma de explotardichas vulnerabilidades.Inyección SQLInyección SQLInyección SQLInyección SQLUna inyección de código SQL esta basada en unainteracción de un intruso con el motor de una basede datos, en la cual el atacante puede obtener yhasta modificar los datos, e incluso el atacantepuede llegar a obtener y manipular archivos, con laconsecuencia de poder manejar los datos y elsistema a su antojo y con total libertad. Todo ello sedebe a la mala validación y filtrado de los datosintroducidos por el usuario (Cliente), por parte de laaplicación Web (Servidor) que maneja el gestor de labase de datos, de forma que el intruso puedealterar las sentencias SQL aceptadas por laaplicación server.Injeccion Ciega deInjeccion Ciega deInjeccion Ciega deInjeccion Ciega de SQLSQLSQLSQLEsta técnica se usa cuando una web no muestra lostípicos mensajes de error de la base de datos, al nohaber un resultado positivo en una consultaespecifica, o sea que solo se enviará una respuestapor parte del servidor si el resultado es correcto. Espor ello que sentencias que contengan entre suscondiciones valores comparativos como 1=1 o0=1 ofrecen respuestas, bien sea respuestasnegativas o positivas, esta es la base de esta técnicade inyección SQL. Ahora Supongamos que tenemosuna aplicación web, la cual usa los datos que recibepor parte del usuario (Cliente) para construirsentencias de consulta y de esta forma mostrar lainformación pertinente (solicitando los datos alServidor), ahora resulta que llegado el punto,sabemos de su vulnerabilidad y procedemos ainyectar consultas pero no vemos los datosobtenidos, no obstante, podemos distinguircomportamientos distintos entre consultas quemuestran datos, y las que no lo hacen, es allí dondebasados en valores verdadero (true) o falso (false)que son devueltos por la aplicación, que debemossaber el tipo de inyección ciega pertinente, para deesta manera obtener los datos que deseamos poseer.Para saber si un parámetro es vulnerable a unainyección ciega de sql supongamos que tenemos unaweb, y la pagina 467, por decir algo un ejemplo:
http://www.ejemplo.org/ 
pagina.php?id=467Entonces añadimos abs() de la siguiente manera:
http://www.ejemplo.org/pagina.asp?idpagina=abs(4 67) 
Y si la página se muestra correctamente sabremosque la web es vulnerable a un ataque a ciegas deinyección SQL.
 
 
Hacking NewbieHacking NewbieHacking NewbieHacking Newbie
Inyeccion a ciegas SQLInyeccion a ciegas SQLInyeccion a ciegas SQLInyeccion a ciegas SQL
CUCUCUCUHHHH eeee----zinezinezinezine 3333
ª
EEEEdiciodiciodiciodicionnnn
Inyeccion Inyeccion Inyeccion Inyeccion a ciegas basado en tiempos de respuesta a ciegas basado en tiempos de respuesta a ciegas basado en tiempos de respuesta a ciegas basado en tiempos de respuesta 
Las primeras referencias en cuanto al tema las hizoChrish Anley en el documento: Advanced SQLInjection” en el 2002 hacia referencia de laposibilidad de realizar
ataques a ciegas basado en tiempos de respuesta 
, en dicho documento elexplicaba códigos, métodos y practicas para hacerconsultas sin importar si obteníamos resultadospalpables, e indefectiblemente saber si eran ciertaso no, todo ello dependiendo, de el tiempo en que elmotor de la base de datos tardaba en dar larespectiva respuesta a la consulta. A partir de allí seempezó a indagar por parte de otras mentesinquietas, pronto se descubrieron parámetrosvulnerables a inyección SQL, de forma que sinnecesidad de ver los resultados de la consulta, sepodían conseguir resultados a partir del tiempo derespuesta dado por el gestor (y con un poco delógica se podían transforman en datos reales), otrosmas osados crearon herramientas para explotar(exploits) dichos parámetros vulnerables ainyecciones ciegas y hasta que con el tiempo sevolvió ya todo un tópico, a la hora de penetrar unsistema basado en consultas a un gestor de base dedatos. La técnica consiste en generar retardos en lasinyecciones, y la mejor forma de usar estavulnerabilidad, es conociendo las funcionesespecificas cada motor de base de datos,
benchmar benchmar benchmar benchmark (sleep 
en la versión 5 y posteriores
 ) 
en mysqlm,
waitfor waitfor waitfor waitfor 
en SQL server,
DBMS_Lock.Sleep() DBMS_Lock.Sleep() DBMS_Lock.Sleep() DBMS_Lock.Sleep() 
enOracle;
por nombrar solo algunas.Veamos pues la forma de inyectar código a ciegas en distintos gestores: Mysql Mysql Mysql Mysql_http://server/ejemplo.php?id=35 and exists(select * from Passwords and benchmark(8000000,md5(rand()))=0 Mysql Mysql Mysql Mysql 
(versiones 5):(versiones 5):(versiones 5):(versiones 5):
http://server/ejemplo.asp?id=35 and exists(select * from Passwords) and sleep(8) Oracle: Oracle: Oracle: Oracle: http://server/ejemplo.php?id=1; begin if (exists(select * from Passwords)) then dbms_lock.sleep(8); end if; end; Microsoft SQL Server : Microsoft SQL Server : Microsoft SQL Server : Microsoft SQL Server : http://server/ejemplo.php?id=35; if (exists(select * from Passwords)) waitfor delay ‘0:0:8’— 
En la anterior consulta el motor evalúa si la tablaPasswords existe y si contiene registros, al cumplirsela condición la respuesta se retardará por un lapsode 8 segundos, es bueno recalcar que no todos losgestores permiten la técnica de inyección a ciegascon retardo de tiempo
Inyección a ciegas basado en tiempos de respuesta Inyección a ciegas basado en tiempos de respuesta Inyección a ciegas basado en tiempos de respuesta Inyección a ciegas basado en tiempos de respuesta usando consultas pesadas usando consultas pesadas usando consultas pesadas usando consultas pesadas 
Existe otra técnica que se basa en usar consultaspesadas, las cuales al exigir al motor de bases dedatos y de manera obvia generar un retardo detiempo ante respuestas positivas. Supongamos quesabemos cual es el parámetro vulnerable de unaconsulta y queremos saber si existe una tabla X enespecial, aquí optaríamos por elaborar una consultaque solo haga trabajar al motor un tiempo extra connuestra consulta pesada si dicha sentencia cumple lacondición de que la tabla X exista en la base dedatos, de otra forma no lo haría y por lógica eltiempo de respuesta seria distinto, es aquí donde sedeben conocer las clausulas y el tipo de condicionesque se pueden llegar a manejar, (tal como sucedecon la clausula Where), para así mismo poderelaborar adecuadamente nuestro consulta , para ellose hace necesario conocer la evaluación de lascondiciones por parte de los gestores, en el caso dela clausula Where , si la cláusula tiene encadenadasus condiciones por operadores de tipo OR laconsulta se evaluará, mientras ninguna condicióndevuelva un resultado verdadero, contrariamentecuando están encadenadas por operadores de tipoAND las condiciones se evaluarán mientras ningunadevuelva un valor falso, basado en este mecanismoes que se optimiza el tiempo de respuesta para lascondiciones, es por ello que los motores tienen unorden a la hora de hacer la evaluación, pero es elprogramador quien realmente define el orden de lascondiciones en una clausula Where, veamos porejemplo la siguiente consulta:
Select nombre from Passwords where nombre=Aleks and and and and pass=qwerty; Select pass from Passwords where nombre=Aleks or or or or  pass=qwerty; 
En el primer caso usamos una condición AND, si alevaluar la primera condición obtenemos un valorFALSO el gestor no evaluar la otra, en la segundaconsulta con el operador OR si la primera condiciónes VERDADERO no se evalúa la siguiente condición.Sucede que no siempre es el gestor el que realiza la

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->