tag:blogger.com,1999:blog-21555208.post5390373446817045103..comments2024-03-21T18:48:30.830+01:00Comments on Un informático en el lado del mal: Blind SQL Injection (IV). El Valor por DefectoChema Alonsohttp://www.blogger.com/profile/16328042715087424781noreply@blogger.comBlogger13125tag:blogger.com,1999:blog-21555208.post-9619050409275886222007-07-30T22:39:00.001+02:002007-07-30T22:39:00.001+02:00Buena, buena. Los IIS6 tiene URLScan activado, hay...Buena, buena. Los IIS6 tiene URLScan activado, hay que encajarla en el espacio disponible!Chema Alonsohttps://www.blogger.com/profile/16328042715087424781noreply@blogger.comtag:blogger.com,1999:blog-21555208.post-18511685745840326362007-07-30T22:39:00.000+02:002007-07-30T22:39:00.000+02:00Buena, buena. Los IIS6 tiene URLScan activado, hay...Buena, buena. Los IIS6 tiene URLScan activado, hay que encajarla en el espacio disponible!Chema Alonsohttps://www.blogger.com/profile/16328042715087424781noreply@blogger.comtag:blogger.com,1999:blog-21555208.post-54154536174847358562007-07-30T20:49:00.000+02:002007-07-30T20:49:00.000+02:00He encontrado una forma que parece funcionar al 10...He encontrado una forma que parece funcionar al 100%! ;-)<BR/><BR/>Después de haber intentado de todo con las funciones matemáticas me he parado a pensar... ¿qué es lo peor que le puedes hacer a una BD a través consulta? Y la respuesta está en hacerle unas cuantas "natural join" que solamente se ejecutarán si todas las condiciones AND que la preceden son ciertas. Lógicamente, una de ellas debería ser la clave para hacer el Blind.<BR/><BR/>Cuando perfeccione el método, os lo comento con más detalle...<BR/><BR/>Un saludoAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-21555208.post-23244851041670758492007-07-30T18:02:00.000+02:002007-07-30T18:02:00.000+02:00Sí, pero seguro que se nos ocurre algo. Yo una de ...Sí, pero seguro que se nos ocurre algo. Yo una de las cosas que hice fue usar las funciones matemáticas, pero no se cual puede tardar mucho en access, ¿las raices cuadradas?. ¿Tal vez la raiz cuadrada del hash de la contraseña pasada a integer?Chema Alonsohttps://www.blogger.com/profile/16328042715087424781noreply@blogger.comtag:blogger.com,1999:blog-21555208.post-22689295516407216972007-07-30T17:52:00.000+02:002007-07-30T17:52:00.000+02:00Cierto, siempre me acabo liando con las tablas MSy...Cierto, siempre me acabo liando con las tablas MSysAccessObjects y MSysObjects. A una se puede acceder y a la otra no (y la ley de Murphy hace que pruebes con la que no toca)<BR/><BR/>La verdad es que el tema es interesante. Probaremos a ver si sale algo, aunque de entrada parece complicado generar una consulta que tarde tanto como para diferenciar claramente el caso verdadero del falso (la BD tenía poquísimos datos). ¿Habrá que jugar con un poco de probabilidades y lógica difusa? ;-)<BR/><BR/>Un saludoAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-21555208.post-7341491079560219932007-07-30T17:32:00.000+02:002007-07-30T17:32:00.000+02:00Hola señor Kachakil.Se puede acceder, lo que pasa ...Hola señor Kachakil.<BR/><BR/>Se puede acceder, lo que pasa es que es un Access 2000 y no tiene las mimas tablas que el Access 2003, pero aquí tienes un acceso al catálogo. <BR/><BR/><A HREF="http://www.informatica64.com/retohacking/pista.aspx?id_pista=2%20and%20exists%20(select%20*%20from%20MSysAccessObjects)" REL="nofollow">http://www.informatica64.com/retohacking/pista.aspx?id_pista=2%20and%20exists%20(select%20*%20from%20MSysAccessObjects)</A>.<BR/><BR/>yo creo que haciendo una consulta pesada con la tabla contrasena, MsysAccessObjects y pistas, que son las tres tablas que se podían sacar, se puede intentar generar un retardo en Access. ¿medible? Esa es la cuestión.Chema Alonsohttps://www.blogger.com/profile/16328042715087424781noreply@blogger.comtag:blogger.com,1999:blog-21555208.post-8861137413168382592007-07-30T17:27:00.000+02:002007-07-30T17:27:00.000+02:00Hola:Si ponemos como ejemplo el Reto I, yo no teng...Hola:<BR/><BR/>Si ponemos como ejemplo el Reto I, yo no tengo tan claro que se tenga acceso a ninguna tabla del catálogo de Access desde la aplicación web.<BR/><BR/>Que yo sepa, si se usa una conexión de las típicas que se usan en .NET, te salta una excepción (por falta de permisos de lectura) al intentar acceder a la tabla MSysObjects.<BR/><BR/>Ya que habéis sacado el tema, ¿alguien me lo podría comprobar usando, por ejemplo, alguna condición del tipo "idPista=2 and (select count(*) from MSysObjects)>=0" ?<BR/><BR/>Un saludoAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-21555208.post-49883735833878520992007-07-30T17:19:00.000+02:002007-07-30T17:19:00.000+02:00Yo jugando a mano lo he hecho con el wget que te m...Yo jugando a mano lo he hecho con el wget que te marca tiempos, pero su precisión es muy baja, habrá que scriptar algo. mmmm. Comentaré con Rodol, a ver que se nos ocurre.Chema Alonsohttps://www.blogger.com/profile/16328042715087424781noreply@blogger.comtag:blogger.com,1999:blog-21555208.post-66526425728914094692007-07-30T17:14:00.000+02:002007-07-30T17:14:00.000+02:00Hombre, esa opción siempre está ahí, pero es más o...Hombre, esa opción siempre está ahí, pero es más o menos teórica; o en otras palabras, "unreliable", que dirían los guiris. ¿O no? }:-)<BR/><BR/>¿Algún PoC? Supongo que se podría hacer en 2 fases: la primera para calibrar tiempos, y la segunda para llevar a cabo la fuerza bruta basada en tiempos. ¿Alguna util que implemente esto de forma más o menos fiable?<BR/><BR/>-rAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-21555208.post-26924247456244738662007-07-30T16:45:00.000+02:002007-07-30T16:45:00.000+02:00Pues no hay nada sobre el tema, pero sí que se pue...Pues no hay nada sobre el tema, pero sí que se puede conseguir de forma artesana realizando consultas complejas con las pocas tablas del catalogo que tiene, sin embargo la diferencia en tiempo es muy pequeña y se necesita una conexión de red con una latencia pequeñísima para poder sacarlo.Chema Alonsohttps://www.blogger.com/profile/16328042715087424781noreply@blogger.comtag:blogger.com,1999:blog-21555208.post-53119998886717696302007-07-30T16:36:00.000+02:002007-07-30T16:36:00.000+02:00Ahora respóndame Vd., Sr. (e Ilmo.) Maligno: ¿Se t...Ahora respóndame Vd., Sr. (e Ilmo.) Maligno: <BR/><BR/>¿Se te ocurre cómo hacerlo en el caso concreto del Reto I (=MS Access)? Ojo que no va con trampa, es que no recuerdo ahora mismo si hay algún truquillo para este caso... (para MySQL, p.ej, tienes benchmark pero para Access...).<BR/><BR/>-rAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-21555208.post-69936524944013730972007-07-30T16:19:00.000+02:002007-07-30T16:19:00.000+02:00Mu bien, mu bien. Estás puesto, eh, pieza?Mu bien, mu bien. Estás puesto, eh, pieza?Chema Alonsohttps://www.blogger.com/profile/16328042715087424781noreply@blogger.comtag:blogger.com,1999:blog-21555208.post-39175934602500508962007-07-30T09:15:00.000+02:002007-07-30T09:15:00.000+02:00Si sólo hay valor por defecto y la inyección es ci...Si sólo hay valor por defecto y la inyección es ciega (no devuelve errores la página), pues hay que buscar otra forma de poder "notar" si ha funcionado o no nuestra inyección. Por ejemplo, basándonos en tiempo:<BR/>... waitfor delay '0:0:5'<BR/>Aunque en el caso del reto I creo recordar que era un Access, no recuerdo de memoria si hay métodos similares para esta bd (estas son las cosas que se acaban mirando cuando te quedas atrancado en una parte del reto y por las que al final resulta fructífero, i.e., aprendes cosas).<BR/><BR/>-rAnonymousnoreply@blogger.com