Caso Práctico de Intrusión Web

ACTUALIZACIÓN: El texto aqui posteado está escrito en un lenguaje muy coloquial y sin florituras para que todo el mundo, incluso los que no tienen ni papa, sepan más o menos de que hablo. Para el que quiera rigurosidad (yo le llamo floritura) puede leer el comentario de Felipe Alfaro.

Bueno, el título es un poco peliculero ya que no es ni mucho menos intrusión, si no más bien errores comunes que cometen los webmasters y dichos errores son las principales puertas de acceso a los portales que administran. Lo que aqui explico se podria hacer con unos conocimientos muy muy básicos, asi que casi cualquiera habría sido capaz de entrar a la administración de uno de los blogs más visitados de la blogosfera.

El caso en cuestión es referente al famosísimo blog de mi amigo Javi Moya y de como he logrado acceder al panel de administración de su blog. Antes de nada decir que antes de publicar este post me puse en contacto con Javi Moya para solucionar el problema. Así que este texto será solo informativo y de curiosidad.

intrusion javimoya por fotomurciaEn la captura de la derecha, podemos ver el panel de administración del blog de Javi, como prueba de haber estado alli. Aunque tranquilos, no le cambié nada ni husmeé ni nada por el estilo. Nada más tener el acceso se lo comenté a Javi porque si lo he logrado yo, alguien con no tan buenas intenciones ha podido o podría hacerlo.

Bien, entremos en materia. En la mayoría de portales web con sistema de administración, la contraseña se guarda en la base de datos encriptada en MD5 (de 32 bits de numeros y letras, es decir, 32 caracteres 128 bits representado en 32 digitos en hexadecimal). Entonces en la base de datos podemos encontrar que cada usuario tiene la pareja nombre y contraseña en md5

admin - e07186fbff6107d0274af02b8b930b65

El problema reside en que no se puede hacer la función inversa, es decir, a partir del MD5, sacar la contraseña. Solo se puede hacer por fuerza bruta, es decir, probando todas las combinaciones posibles de dichos caracteres. De ahi el principal problema de los webmaster.

Situemonos. Durante la migración de Javi a su nuevo host (felicidades por ello Javi), Javi no se dió cuenta y puso el backup (copia de ‘porsiaca’) de su base de datos al descubierto. Solo fue durante un dia creo. Es posible que nadie se percatase, pero yo como soy muy curioso me di cuenta. Primer error. Las bases de datos pueden contener datos muy importantes que en manos listas pueden ser revelados. En dicha base de datos estaba el MD5 de la contraseña de Javi y me decidí a probar que tal era.

Como dije antes, la robusted del MD5 reside en la longitud y caracteres de la contraseña. Ejemplo, para adivinar una contraseña de 8 numeros (tipo dni) solo se tardan unos 2 minutos en romper la clave a partir de su MD5 (solo se combinan 10 elementos o números, del 0 al 9). En cambio, para adivinar la misma contraseña, pero con la letra del dni en mayúscula se pueden tardar meses ya que ahora hay que combinar los 10 números y las 29 mayúsculas del alfabeto. 39 en total. Segundo error. La contraseña de Javi era medianamente robusta ya que contenia numeros y letras minúsculas, pero era muy corta, lo que facilitaba el ataque. Esto era el hash MD5 de Javi y el tiempo del ataque. (Las X son para guardar algo de privacidad)

Hash MD5 - X5c4Xc889c4d0286X281327XX5ca6a0X	

Process started - 2006-03-01 09:38:01

Process finished - 2006-03-01 11:17:40

Password - XXXXXXXXXXX

En algo menos de dos horas se pudo sacar la contraseña. Resultado, acceso garantizado al panel del blog de Javi. ¿Y esto es un problema? Bueno, lo es. Se podrían borrar post, poner noticias de cualquier tipo aunque todo esto se resolvería con un backup. Pero yendo (se escribe asi no?) mas allá se podría llegar a obtener la cuenta ftp de host o de las bases de datos (pudiendo hacer inyecciones SQL), subir alguna shell y en el peor de los casos rootear el server si este no estuviera actualizado, consiguiendo que todo tu trabajo fuera a parar a alguien no deseado o incluso borrado. Todo un peligro en algunas manos.

Conclusiones y consejos

Para todos los webmastes o bloggers un par de consejillos. Sobre todo no publiqueis ni dejeis por ahi vuestras bases de datos o backups ya que es un riesgo tanto para vosotros como para los usuarios ya que revelareis muchos datos de ellos. Y sobre todo usar contraseñas más robustas, es decir, al ser posible de más de 10 caracteres incluyendo en ellos números, minúsculas, mayúsculas y si es posible, algún carácter especial. Con eso seguro que aun teniendo la base de datos, puedan lograr la contraseña y hacer daño en el blog.

Nunca pasa nada, hasta que te pasa. Y casi siempre pasa por un fallo o despiste humano.

12 Comentarios

  1. Comentado el Miércoles 1 Marzo 2006 |
    Permalink

    Pero como supiste donde tenia el backup de la base de datos? :S

  2. Comentado el Miércoles 1 Marzo 2006 |
    Permalink

    Si entras a http://www.javimoya.com, osea, el directorio raiz, te lleva directamente a /blog/. Cuando migraba esto no ocurria y se veian carpetas y demas archivos. Navegando un poco di con la base de datos.

    Ademas, la gente que guarda backups en el ftp (grave error) siempre lo hace en el directorio raiz o en /wp-content/backup/ o similares. Buscando un poco se descubren cosas increibles

  3. Comentado el Jueves 2 Marzo 2006 |
    Permalink

    En primer lugar, MD5 no es una función de cifrado (el cifrado es una operación reversible), sino una función de resumen digital (no reversible).

    En segundo lugar, MD5 produce un resultado de 128 bits. Teniendo en cuenta que un byte son 8 bits, 128/8 = 16, es decir, que el resultado de resumir algo con MD5 produce 16 bytes, y no 32.

    En tercer lugar, la robustez de MD5 no radica en la longitud de la contraseña. MD5 no entiende de contraseñas, tan sólo de cadenas de bits. La robustez del sistema que se describe en el artículo no reside en la robustez de MD5, sino en la selección de una contraseña que pueda resistir un ataque de fuerza bruta basado en diccionario, y una contraseña que sea lo suficientemente larga tal que, para poder probar todas las posibles combinaciones de letras, números y símbolos, necesite estadísticamente de muchos intentos como para que sea factible. El hecho de que la contraseña sea larga, y por ello, mejor, no depende de si se utiliza MD5 o SHA-1.

  4. Comentado el Jueves 2 Marzo 2006 |
    Permalink

    Lo que has dicho me parece muy bien y solo me retracto en lo de los 32 bits puesto que no me acordaba bien.

    Se perfectamente que es la funcion hash MD5, SHA-1, o algoritmos de cifrado como DES, RSA, base 64 o similares asi que no hace falta que me lo expliques. Si te das cuenta el texto esta escrito para gente que no tiene ni papa del tema. Pero gracias por tu aporte "mas técnico". La proxima vez hare dos post: uno para los entendidos y otro para los demás.

    De todas formas, gracias por la aclaración para el resto de los usuarios.

  5. Comentado el Jueves 2 Marzo 2006 |
    Permalink

    Muy interesante articulo que a mas de uno nos ha puesto en alerta de tal situacion. muchas gracias

  6. Comentado el Martes 7 Marzo 2006 |
    Permalink

    Sólo quería comentar que Base64 no es un algoritmo de cifrado, sino de sustitución simple sin clave (sustituir 6 bits de la cadena de la entrada por un carácter alfanumérico), y que hay mucha gente que lo confunde con un algoritmo de cifrado.

    Bueno, y que no quería poner en entredicho los conocimientos de nadie. Tan sólo quería ser riguroso.

    Perdón si, por mis comentarios, alguien se ha sentido incómodo.

  7. Comentado el Martes 7 Marzo 2006 |
    Permalink

    Sabrás que las dos técnicas más básicas de cifrado son sustitución y trasposicón, y ya que el cifrado es el proceso de convertir el texto plano en un galimatías ilegible… se puede considerar base64 como un método de cifrado.

    Para el que quiera saber más tiene la wikipedia o a nuestro riguroso Felipe.

    Gracias por tus aclaraciones Felipe.

  8. Comentado el Viernes 10 Marzo 2006 |
    Permalink

    “Ejemplo, para adivinar una contraseña de 8 numeros (tipo dni) (…) pero con la letra del dni en mayúscula…”

    Jeje, todavia no logro descubrir como poner numeros en mayuscula :D al menos que quede algo asi (del 1 al 8, intercalando Mayusculas y Minusculas)…

    !2·4%6/8

    …lo cual podria ser un buen consejo para los que se empecinan en escribir numeros facilmente obtenibles “a mano” (lease: año de nacimiento, numero de telefono, etc)

    PD: Por suerte (para Javi) sos un “hacker” bueno.

  9. Comentado el Viernes 10 Marzo 2006 |
    Permalink

    Como bien has puesto, es la letra la que está en mayuscula, no los numeros. No se pueden poner numeros en mayusculas. En ningun lado he dicho que se pongan numeros en mayusculas. Es de cajón. En lo que hago la distinción es en la letra en minúscula o la letra en mayúscula, que no es lo mismo.

    Y no soy hacker. Ni nada por el estilo. Solo un amigo de Javi. No me gusta que me califiquen de hacker.

    Saludos desde España.

  10. Patito
    Comentado el Martes 23 Mayo 2006 |
    Permalink

    Muy wena data y eso de ser tratado de hacker es como una difamacion de ciertas personas hacia una persona con un intelecto que se sale de lo normal y trivial, es más facil de decirle a alguien hacker, que decirle sos un tipo con alto grado de intelecto y que no piensa como el resto de los mortales.
    Por cierto, decile a lo lammers que se dejen de opinar y corregir, y antes de postear que mejor agarren un libro de .NET y se suiciden.

    “Según las estadísticas en España de cada 1 que protege hay 10 que saltan una protección y eso representa el 35% de la poblacion total de informáticos” By MicroHobby Ed. 1988

  11. Sty
    Comentado el Jueves 29 Junio 2006 |
    Permalink

    hola a todos.

    Interesante la raíz de este “cuelgue”, pero puestos a no aportar nada interesante diré que, después de ella, tanto digo que dije q diría q dijo, lejos de aportar nada confunde mucho.

    Al leer contenido me quedo mas bien claro lo que entendí quería transmitir el autor. Al leer la serie de dijes que diría…. mas bien me han confundido que aclarado. Y digo esto solo por que creo que escribir por escribir hasta yo lo hago…(baste la presente para demostrarlo), pero si algo hacen de estos “hilos” cosas interesantes, creo que son las aportaciones constructivas o matizaciones aclaratorias COÑO!, basta de basura que te hace perder el tiempo leyendo cosas para darte cuenta que no aportan NADAAAAAAAAAAAAAAAAA… un poquito de por favor….. (y disculpenn….me)

  12. pepe
    Comentado el Martes 30 Enero 2007 |
    Permalink

    he estado leyendo un poco de sus blogs y quisiera saber algo
    tengo dudas…
    quiero acceder a una maquina que no es la que se conecta directamente al internet..o sea que no es un servidor sino una maquina en red pero no logro llegar a ella..ni por medio de telnet, http://ftp..nbtstat, net view…
    para llegar a una maquina por estos medios debe de ser un servidor o una maquina conectada directamente a intrnet??
    saludos

4 Trackbacks

  1. Por meneame.net en Miércoles 1 Marzo 2006 a las 19:29
  2. Por Mpc Digital » Blog Archive » Seguridad en los blogs en Martes 23 Mayo 2006 a las 12:33

Escribe un Comentario

O

free web hit counter