DES(Unix) Example: IvS7aeT4NzQPM Used in Linux and other similar OS. Length: 13 characters. Description: The first two characters are the salt (random characters; in our example the salt is the string "Iv"), then there follows the actual hash.
Domain Cached Credentials Example: Admin:b474d48cdfc4974d86ef4d24904cdd91 Used for caching passwords of Windows domain. Length: 16 bytes. Algorithm: MD4(MD4(Unicode($pass)).Unicode(strtolower($username)))
MD5(Unix) Example: $1$12345678$XM4P3PrKBgKNnTaqG9P0T/ Used in Linux and other similar OS. Length: 34 characters. Description: The hash begins with the $1$ signature, then there goes the salt (up to 8 random characters; in our example the salt is the string "12345678"), then there goes one more $ character, followed by the actual hash. Algorithm: Actually that is a loop calling the MD5 algorithm 2000 times.
MySQL5 Example: *E6CC90B878B948C35E92B003C792C46C58C4AF40 Used in the new versions of MySQL. Length: 20 bytes. Algorithm: SHA-1(SHA-1($pass)) Note: The hashes are to be loaded to the program without the asterisk that stands in the beginning of each hash.
Pero seguro que hay alguna manera de sacarlos todos juntos, pq así dejas mucho rastro, me refiero que en el server quedan registradas las peticiones SQLi, una web por la que pase el otro día, me dejo una atenta nota, pero al cambiar la ip ya me dejaba volver.
Este es otro tema por el que tengo curiosidad, vosotros borráis las huellas?? como?? o solo usáis proxy??
Buenas a todos. Este es mi primer pos en este foro despues de la presentacion. Como anillo al dedo me viene, pues este tuto me lo he currado en un dia, mientras hacia SQLi, para no perder detalle.
Empezamos.
1. buscar una web vulnerable, a esta parte no le dedico tiempo, todos conocemos los DORKs, packetstorm, vbulletin.....
2. Como se que esta web es vulnerable??? Facil, la mayoria de las web te devolveran, cuando les modiques la peticion a algo como esto:
Citar
Warning: mysql_query() [function.mysql-query]: Access denied for user '*******'@'localhost' (using password: NO) in /home/justonli/public_html/demo_online_store/themes/2/func_util.php on line 3
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/********/public_html/demo_online_store/themes/2/func_util.php on line 3
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/*********/public_html/demo_online_store/themes/2/func_util.php on line 4
Warning: mysql_query() [function.mysql-query]: Access denied for user '***********'@'localhost' (using password: NO) in /home/*********/public_html/demo_online_store/themes/2/index.php on line 39
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/********/public_html/demo_online_store/themes/2/index.php on line 39
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/*********/public_html/demo_online_store/themes/2/index.php on line 40
En mi caso usé otro DORK. Que como se modifica una peticion?? Pues en la barra de direccion, donde esta la URL, algunas webs ponen algo como:
Código:
index.php?id=1 search.php?ID=25
Si nosotros cambiamos en la barra de direccion el 1 o el 25 por algo como -1, ', '2, etc, la web que no esta preparada para recibir estos datos nos devuelve un error como los de arriva. En mi caso le añadi "+and+1=0" (sin comillas).
Ya sabemos cuando es vulnerable.
3. Como aprobecho esa Vulnerabilidad??? pues hay varias formas, yo explicaare la que use. Tenemos que encontrar el numero de "Union Columns" que con mi poco ingles supongo que sera "uninon de columnas" :-) esto es el numero de comunlas del la tabla que tiene la base de datos, para entender esto: en la base de datos <deportes> tenemos la tabla <acuaticos> y dentro de esta columna <surf>, que contiene srfing, bodyboard, sky_surfing,... pues en las web que almacenan bd sulen tener algo como <db_usuarios> y dentro la tabal <user> y una columna con el nombre <pass>. Dentro de una bd tendremos muchas tablas y dentro de estas cada una tendrá varias columnas.
y nos muestra unos numeros en la pantalla, en lugar de la web.
En mi caso muestra un "2".
Esta es la posicion donde tenemos que meter las peticiones SQL. Tendremos que sustituir el numero, por la peticion.
Ahora queremos saber el nombre de las tablas. Para esto añadimos en la posicion del numero "2" esto "group_concat%28table_name%29%" y al final de la url "from+information_schema.tables" esto traducido seria algo como: dame el nombre de todas la tablas que tienes en information.schema
Ya tenenos las tablas, en mi caso estan en Italiano, nos interesa conocer el numero de columnas dentro de la tabla por la cual tenemos curiosidad, para esto cambiamos lo que escribimos antes en el lugar del "2" por "group_concat%28column_name%29%" esta vez preguntamos por las columnas de una tabla, tambien cambiamos el final por "+from+information_schema.columns+where+table_name=%20char%2895,117,116,101,110,116,105%29".
Donde el número "95,117,116,101,110,116,105" es el nombre de la tabla,pero con los caracteres ascii. En internet teneis un monton cuadros y programillas para pasarlo.
Ya casi terminamos, lo que ahora queremos es saber que tenemos en cada columna, la pregunta seria algo como: que hay dentro de la columna pass dentro de la tabla usuarios dentro de la bd_principal? mas o menos. En este caso tenemos que hacer una nueva peticion con: "concat_ws%28char%2858%29,NOMBRE_DE_LA_COLUMNA%29" en el lugar del numero "2" y al final "+from+NOMBRE_DE_LA_TABLA"
Me encontre con esto, pero ahora no se que hacer. No tengo intencion de j**** la web de nadie. no se si esta bien mostrar esto.
Se que esto no es ninguna novedad, me di cuenta cuando empezaron a aparecer montones hackeadas, que si los sirios, que si los chinos, .... y yo por medio sin saber que hacer con una de estas. Mañana empiezo a documentarme.
Saludos a tod@s. Estoy bloqueado en esta prueba, os dejo mis experiencias/pruebas, para animaros a contestarme, aunque esto no es una pregunta.
Sabemos que tiene filtrado, y buscando sobre este tema, encontré mucho en google:
magic quotes. Este filtro se ocupa de adherir una \ a las comillas que pongamos en nuestro código malicioso.
Strip_Tags . Esta función se encarga de eliminar de una variable todo lo que esté entre < >, elimina etiquetas html.
htmlspecialchars. Convierte caracteres especiales en entidades HTML(para codigo PHP)
PHP Input Filter. es una clase escrita en PHP que permite filtrar código malicioso ingresado en los formularios para prevenir ataques XSS de manera sencilla, tiene la cualidad de no limpiar determinadas etiquetas o atributos.
Bueno, y así toda la vida.....
Que nos interesa a nosotros, pues ni p*** idea, porque no se programar, perooooooo. Bueno el caso es:
en el area de texto introducimos: "<script>alert('XSS')</script>" en la web se nos muestra: "alert(\'XSS\')" y en codigo fuente vemos:
Esta vez no filtra los caracteres especiales, porque ya están codificados con "htmlspecialchars" de la que ya os hable antes.
Otras pruebas:
He intentado añadir HTML al final de mi xss para cerrar asi el "<div>" pero esto tampoco funciona, en la fuente siempre aparece un "</div>" al final de linea que impide seguir a delante.
Para mi, el camino que tiene mejor pinta es el de "htmlspecialchars" puesto que conseguí que publique "<script>" y "</script>" que con las otras formas no pude, la cosa ahora es, que se ejecute ese maldito codigo, para lo cual pienso que necesito mas tag´s en mi declaración.