Rincón Informático

Un rincon para hablar sobre GNU/Linux, seguridad informatica, y mas!!

Como explotar la vulnerabilidad en Firefox 3.5

Publicado por Epsilon En julio - 20 - 2009

Antes de empezar con este articulo quiero dejar muy en claro que este es un laboratorio informativo, es decir, un laboratorio de prueba de concepto, el que haga esto no es un hacker. La idea de esta entrada no es ejecutar un exploit, es tratar de entender como es su funcionamiento y la forma de implementarlo.

Hace poco se hizo publica  una vulnerabilidad que afecta a Firerfox, el navegador preferido de muchos internautas, en la web se comento mucho al respecto sobre este fallo e incluso se publicaron algunos exploits que nos permiten explotar la vulnerabilidad y ejecutar algun programa o obtener una shell remota, dependiendo del exploit utilizado.

En esta oportunidad, mostrare lo sencillo que es explotar esta vulnerabilidad, para obtener una shell remota de nuestra victima, para que nuestro exploit funciona de forma adecuada se necesitan algunos requisitos:

  • Un victima xD
  • Obviamente que tenga 3.5
  • Que nuestra victima tenga Windows
  • El exploit alojado en un servidor que soporte

Antes de entrar a la practica, es bueno, hacer un repaso teorico de lo que se va a realizar, la metodologia es sencilla,  subimos nuestro exploit deseado a un servidor web. (en este caso  utilizaremos 2 exploits con diferente finalidad, esto para que dejen volar un poco la imaginacion). Despues de que tengamos nuestro codigo listo para ser ejecutado necesitamos que nuestra victima visite la url de nuestro codigo, esto se logra  con un poco de ingenieria social, y por ultimo si todo ha salido bien, y hemos tenido suerte nuestro exploit sera ejecutado de forma correctamente.

Exploit 1

Ahora si, la parte emocionante, en este primer ejemplo usaremos este exploit, el cual tiene como finalidad ejecutar la calculadora en el PC victima, si es algo sin sentido, ya que no ganamos nada haciendo que la PC victima ejecute la calculadora, sin embargo esto es solo un ejemplo, por que si dejamos volar un poco nuestra imaginacion  y en vez de que se ejecute la calc  se ejecute algun malware? ahh!! ahora si es interesante este exploit!!!

Para hacer este articulo monte los exploit en un apache local, asi que desde la pc con 3.5 visitamos la url del  html que en realidad es nuestro exploit, asi:

exploit1 Como explotar la vulnerabilidad en Firefox 3.5

Instantaneamente, al tratar de entrar a esta url, nos aparecera el texto del exploit, como son los datos del creador, el nombre de la vulnerabilidad y tambien nos mostrara una advertencia, si se da en detener script, el falla, pero si se da caso omiso a las advertencias (como suele ocurrir)  el tendra efecto:

exploit2 Como explotar la vulnerabilidad en Firefox 3.5

Despues de dar en continuar, se cerrara y como por arte de magia la calculadora se abre xD

exploit3 Como explotar la vulnerabilidad en Firefox 3.5

Exploit 2

Este codigo es muy mas interesante no ejecuta ningun programa en la maquina victima, nos da algo mejor, una shell de el sistema vulnerable,  el funcionamiento es el mismo, previamente he subido el exploit a un servidor web, pero este servidor debe tener el modulo de instalado, debido a que este ultimo codigo esta hecho en , asi que tenemos 2 opciones: la primera es montar el codigo en un hosting gratuito que tenga soporte de ,  y la segunda es montar de forma local un apache e instalarle el modulo de .

El se inicia  de la misma forma que el anterior, la unica diferencia es que cuando la victima entra a la url de nuestro exploit, se bloquea, pero por debajo lo que esta haciendo es dejar un puerto a la escucha en este caso es  el 5500, y si hacemos un telnet desde nuestra PC a la ip del pc victima al puerto 5500 obtendriamos la shell. (Obviamente se necesita saber con anterioridad la ip de la victima). Algunos de ustedes estaran pensando. ¿Que ocurre si el en el momento que esta bloqueado se cierra? La respuesta es sencilla, no importa si  el se cierra, ya se habra dejado el puerto a la escucha y se podra conectar a  la pc victima. Una imagen de muestra:

exploit4 Como explotar la vulnerabilidad en Firefox 3.5

Ahora tendremos nuestra pc victima en nuestra manos, sera posible hacer cualquier cosa, extraer informacion, borrar informacion, instalar algun malware etc etc etc.

Como pueden ver, es algo sencillo explotar este tipo de vulnerabilidades, solo es cuestion de hacer un poco de ingenieria social, y malicia indigena, Por ultimo que hay que decir  si se le hacen algunas modificaciones al exploit (cambiar la shellcode)  este seria tambien explotable en plataformas Unix, claro que seria un poco mas limitado y no se podria hacer mucho, pero seria explotable.

Si te gusto la entrada, compartela!!!
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • BarraPunto
  • Bitacoras.com
  • Live
  • Meneame
  • MySpace
  • Yigg
  • email
  • Identi.ca
  • MSN Reporter
  • RSS
  • Socialogs
  • Technorati
  • Yahoo! Bookmarks
  • Twitter

Entradas relacionadas

22 Responses to “Como explotar la vulnerabilidad en Firefox 3.5”

  1. Información Bitacoras.com…

    Valora en Bitacoras.com: Antes de empezar con este articulo quiero dejar muy en claro que este es un laboratorio informativo, es decir, un laboratorio de prueba de concepto, el que haga esto no es un hacker. La idea de esta entrada no es ejecutar un …..

  2. exactlimon dice:

    hey parse que buen articulo.

    y lo bueno es que pàra cambiar la calc por otro proceso creo que es con otro shellcode si no estoy mal, esto hace que no cualquiera sea capaz de poner a correr el proceso que quiera.

    saludos

  3. servant dice:

    Muchas Gracias por este Articulo (y) he aprendido algo nuevo hoy.
    saludos

  4. vitoya dice:

    Excelente articulo ¡Felicitaciones! y gracias!!

  5. axiacamus dice:

    esta muy bueno el articulo, igualmente podemos encontrar payloads en Milw0rm que nos darian shell en Linux, seria bacano escribir un articulo que explique como funcionan y que son los payloads o shellcodes ya que desde mi punto de vista es algo un poco mas avanzado, sobretodo a la hora de implementarlos… saludos

  6. Alex dice:

    Lammer de shit

  7. Epsilon dice:

    @alex Es solo un articulo donde queria mostrar como es de facil explotar este tipo de vulnerabilidades, queria demostrar que no se necesitan muchos conocimientos para hacer este tipo de cosas, incluso al inicio del articulo lo aclaro….

  8. Hieluki dice:

    Muy bueno.. Felicitaciones.. La verdad no pense que fuera tan “simple” el bug. Ajustandolo un poco supongo que se podria hacer un reverse shell y ahi si perfecto.

  9. IagoSRL dice:

    ¿Podéis dar más detalles del contexto? Si la versión de Firefox es la 3.5 o la 3.5.1, en qué codificación se visualiza la página con el exploit por defecto, con qué paquete de idioma usáis Firefox, versión concreta de los sistemas operativos en que os ha funcionado…

    Lo digo, para poder probarlo, ya que en mi WinXP SP3, Firefox 3.5.1 (España), sin extensiones, EL EXPLOIT NO FUNCIONA ¿En qué circunstancias debería funcionar y en cuales no? (como apunte, en ningún momento me muestra la ventana de detener/continuar script).

    Otra duda, es que según se ha publicado en otros lares, el problema parece venir al tratar texto Unicode mal formado, tarea que Firefox delega en el Sistema Operativo (pero que debería controlar para evitar éstos problemas), siendo para MacOS X, Windows y Linux componentes totalmente distintos (Uniscribe on Windows, Pango on Linux, and ATSU on MacOS X), y el fallo provenía de ATSU, por lo que sólo debería afectar a MacOS. Sólo es un apunte con la información varia que se está publicando sobre el tema y que parece necesario tener en cuenta.

    También se ha publicado que el problema no permitiría ejecutar código en ninguna plataforma, aunque ésta es otra cuestión que aquí intentamos probar, por ello:

    Animo desde aquí a los lectores a que prueben los exploits (o al menos el primero, el más simple) y dejen un comentario indicando si les ha funcionado o no y sobre qué versiones/sistemas lo han probado.

    Un saludo.

  10. Epsilon dice:

    @LagoSRL este exploit fue probado en un windows xp sp3 con firefox 3.5 y doy fe que si funciono

  11. SpiderM@N dice:

    @IagoSRL, estas confundiendo las vulnerabilidades, esta aplica para un fallo de manejo del JS en CIERTAS etiquetas de HTML, el que tu dices es otra vulnerabilidad que segun Mozilla no lo es. Cualquier parecido con las Tele-novelas es pura coincidencia.

    Buen pulso.

  12. Antonio Sánchez dice:

    hola, estoy intentando probar esta vulnerabilidad, he metido un Win XP en una máquina virtual bajo vmware, e instalo firefox 3.5 desde aquí:
    http://releases.mozilla.org/pub/mozilla.org/firefox/releases/3.5/win32/es-ES/

    no es la última versión, pero supongo que la última (3.5.1b4)ya estará parcheada…

    el caso es que pruebo los exploits, y me sale el primer mensaje, al que hay que darle a continuar, pero una vez que le doy, no se cierra firefox, ni se queda pillado, ni sale calculadora ni nada…:S

    me puedes pasar el link dnd te bajaste la versión que has usado de firefox??

    gracias!!!

    estupendo blog

  13. Epsilon dice:

    Hola gracias por visitar nuestro blog,

    Firefox no lo descargue, utilice el que WUDE (Windows de la comunidad DragonJAR) traia por defecto, aca dejo una imagen de la version del FF.

    http://img27.imageshack.us/i/firefoxsaf.jpg/

  14. Antonio Sánchez dice:

    Muchas Gracias, voy a probar a ver que tal!

  15. Antonio Sánchez dice:

    Hola, con el windows que me dijiste, en una máquina virtual si que me ha ido el 1er exploit, pero al intenter probar el 2do…

    me instale en una maq virtual donde corre un ubuntu 8.04 Desktop , Apache2, después el módulo de python (libapache-modpython o algo así se llama), y finalmente agregue al apache.conf lo siguiente

    SetHandler mod_python
    PythonHandler mod_python.publisher

    al probar un programa sencillo no dio problemas y funciono bien, pero al intentar el exploit…me da error en el navegador

    Apache/2.2.8 (Ubuntu) mod_python/3.3.1 Python/2.5.2 Server at localhost Port 80

    Y mirando los logs del apache me tira esto

    [Fri Jul 24 08:21:09 2009] [error] [client 127.0.0.1] File “/usr/lib/python2.5/site-packages/mod_python/publisher.py”, line 204, in handler\n module = page_cache[req]
    [Fri Jul 24 08:21:09 2009] [error] [client 127.0.0.1] File “/usr/lib/python2.5/site-packages/mod_python/importer.py”, line 1059, in __getitem__\n return import_module(req.filename)
    [Fri Jul 24 08:21:09 2009] [error] [client 127.0.0.1] File “/usr/lib/python2.5/site-packages/mod_python/importer.py”, line 296, in import_module\n log, import_path)
    [Fri Jul 24 08:21:09 2009] [error] [client 127.0.0.1] File “/usr/lib/python2.5/site-packages/mod_python/importer.py”, line 680, in import_module\n execfile(file, module.__dict__)
    [Fri Jul 24 08:21:09 2009] [error] [client 127.0.0.1] File “/var/www/python/test.py”, line 130, in \n httpd = HTTPServer((”, 80), myRequestHandler)
    [Fri Jul 24 08:21:09 2009] [error] [client 127.0.0.1] File “/usr/lib/python2.5/SocketServer.py”, line 330, in __init__\n self.server_bind()
    [Fri Jul 24 08:21:09 2009] [error] [client 127.0.0.1] File “/usr/lib/python2.5/BaseHTTPServer.py”, line 101, in server_bind\n SocketServer.TCPServer.server_bind(self)
    [Fri Jul 24 08:21:09 2009] [error] [client 127.0.0.1] File “/usr/lib/python2.5/SocketServer.py”, line 341, in server_bind\n self.socket.bind(self.server_address)
    [Fri Jul 24 08:21:09 2009] [error] [client 127.0.0.1] File “”, line 1, in bind
    [Fri Jul 24 08:21:09 2009] [error] [client 127.0.0.1] error: (13, ‘Permission denied’)

    alguna idea..me puedes decir como habilitaste tu python en apache, por si he hecho algo mal..

    gracias de nuevo!

  16. Epsilon dice:

    Hola al parecer el modulo si esta cargado en el apache, yo lo que hice fue modificar el archivo /etc/apache2/sites-enable/000-default, agregando esto:


    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
    AddHandler mod_python .py
    PythonHandler python.publisher
    PythonDebug On

    Hay que aclarar que este codigo debe ir entre las etiquetas Directory y en la etiqueta que abre debes especificar el directorio que contrenda el script en python, aqui no se ve ya que wordpress no lo permite…

    seria algo como asi

    Directory /var/www/
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
    AddHandler mod_python .py
    PythonHandler python.publisher
    PythonDebug On
    /Directory

    Recuerda que las etiquetas llevan el <> respectivamente

    espero te sirva y gracias por leernos

  17. Antonio Sánchez dice:

    nada, lo hice como tú y me sigue dando el mismo error…
    creo que la clave está en :

    [Fri Jul 24 08:21:09 2009] [error] [client 127.0.0.1] error: (13, ‘Permission denied’)

    es como si no me dejará trabajar con las librerías por falta de permisos, pero para asegurarme le he puesto 777 a todo /var/lib/python y tampoco…

    :s

    gracias!

  18. Epsilon dice:

    mm el script tiene todos los permisos?? el que esta en el servidor???

  19. Antonio Sánchez dice:

    si, tmb le puse 777 por si acaso, la verdad es que es raro, no se que puede ser

  20. Antonio Sánchez dice:

    bueno, ya lo he conseguido! pero de otra forma… :D

    yo creo que incluso es más fácil, asi no tienes que habilitar python ni nada, no se como no se me ocurrió antes…

    simplemente en el exploit1, tenemos que cambiar el shellcode que ejecuta la calculadora de windows, por el shellcode que deja a la escucha el puero 5500 que viene en el exploit2, y voilà!

    ni python ni nada.. :D :D

    un saludo y gracias!

  21. TavoRocka dice:

    Hola Epsilon, primero que nada muy buen post…. Te anima a seguir investigando ya que te das cuenta de las facilidades con las que puedes llegar a conseguir resultados, esto es muy bueno para ir empezando.

    En 2da, Antonio, creo (si no es que estoy en un error) que si ejecutamos el primer Exploit y lo modificamos para que realice las instrucciones del 2do, si el usuario le da cancelar, no ocurriria nada, ya que puede ser detenido, por eso el la complejidad o la “magia” del 2do Exploit, ya que sigue ejecutandose aunque le hayas dado cancelar o hayas cerrado el Firefox.

    Saludos!

  22. [...] que tuvo dicha vulnerabilidad, acá en RinconInformatico.NET quisimos hacer una prueba de concepto (al igual como lo hicimos con una vulnerabilidad de Firefox) para comprobar lo fácil que es la explotacion de este [...]

Deja un comentario