jueves, 3 de enero de 2013

Inyectando código PHP en cookies de SquirrelMail

La tarea más complicada al explotar un LFI es encontrar un fichero donde poder inyectar el código PHP que deseamos ejecutar. Existen muchas opciones donde inyectar la shell, como por ejemplo:
  • En los logs de Apache.
  • En el fichero /proc/self/environ.
  • En los metadatos de imágenes (si hay un uploader de imagenes).
  • En las cookies de sesión de PHP.
  • En /tmp usando una inyección SQL con INTO OUTFILE.
  • En ficheros temporales usando "phpinfo".

Y seguro que hay otras más... sin embargo en algunas ocasiones inyectar la shell puede ser un verdadero reto.

Esto me sucedió hace algún tiempo. Encontré un LFI en un sitio web, tenía un IDS pero se pudo bypassear, luego sin mucho éxito pasé varias horas buscando donde inyectar la shell hasta que mi fuzzer encontró un SquirrelMail.

Entonces, aún no lo sabía, pero SquirrelMail guarda la URL base en sus cookies de sesión obteniendo el nombre del dominio desde la cabecera "Host". Así que luego de algunas pruebas pude inyectar mi shell en la cabecera Host y explotar el LFI :)

Esto no funcionaría bien en hosts virtuales, pues al enviar la cabecera Host modificada no se podría identificar el host virtual correctamente y se cargaría el site por defecto. En mi caso tuve suerte, pues a pesar de estar en un servidor con hosts virtuales el SquirrelMail estaba en el site default.

Sin más les dejo un vídeo, donde se muestra todo el procedimiento. La versión de SquirrelMail usada es 1.4.22 (última versión estable a la fecha).


Un saludo.

7 comentarios:

  1. eso es bravazo, raro que nadie haya comentado, brillante Alguien

    ResponderEliminar
  2. Man ya que el post te salio re bien vro...porke no adjuntas .
    estos puntos ke la verdad ninguno lo conosco..
    En los logs de Apache.
    En el fichero /proc/self/environ.
    En los metadatos de imágenes (si hay un uploader de imagenes).
    En las cookies de sesión de PHP.
    En /tmp usando una inyección SQL con INTO OUTFILE.
    En ficheros temporales usando "phpinfo".

    el unico ke he hecho es /tmp y eso si ta mapeado..

    asi como dicen cierras el circulo y t keda de la refurinfunflayyysssssssssss hala pes ta ahi nomas el video par aañadir pes.s.s.
    va a ser un gran serie animate vro.

    ResponderEliminar
  3. Hola Jesus, creo que es una buena idea, aunque ya hay documentación al respecto...

    Un saludo

    ResponderEliminar
  4. Publicas buenas cosas cosas, llegar a tu blog algunas veces es dificil, Alguien en la fisi.blogspot.com no esta asociado a algun tema de seguridad como nombre de dominio, por que ese nombre? es imposible cambiarlo?

    ResponderEliminar
  5. Hola Anónimo, gracias por el comentario

    De poder si se puede... el nombre es por que mi nick es Alguien y estudio en la FISI (Fac. de Ing. de Sistemas e Informática) y claro como soy muy creativo...

    La idea inicial era escribir temas de informática en general, cosas que iba aprendiendo... pero acepto que hay más post sobre hacking que otra cosa. Sin embargo no descarto que algún día aparezca un post por ahí sobre como configurar algo en linux o algún ejemplo de programación como ya antes lo he hecho.

    Por lo pronto prefiero dejar el nombre así... ya cuando egrese y no tenga sentido veré que hago con el blog...

    Un saludo.

    ResponderEliminar