viernes, julio 29, 2011

El misterioso asunto de la aparición de .listing

Hace ya algún tiempo hablamos del asunto del fichero .listing que se encontraba en muchos servidores web, permitiendo listar el contenido de un directorio mediante la invoación de este archivo. En aquel momento no teníamos mucha idea de porque aparecía en muchos sitios, pero lo cierto es que está en más de los que pueda parecer a primera vista.

Al final, tras un café con Guachi, me enteré de la explicación porque me contó que ese ficherito lo crea el programa WGET cuando realiza conexiones FTP. Así, en el punto 2.9 del manual de WGET, donde se habla de las opciones FTP, se puede descubrir esta opción:

‘--no-remove-listing’

Don't remove the temporary .listing files generated by ftp retrievals. Normally, these files contain the raw directory listings received from ftp servers. Not removing them can be useful for debugging purposes, or when you want to be able to easily check on the contents of remote server directories (e.g. to verify that a mirror you're running is complete).
Es decir, que hay un flag para decirle a Wget que deje el fichero en el servidor. Evidentemente, por defecto lo borra (salvo que la cuenta pueda crear archivos pero no borrarlos). Lo curioso, es que en la descripción de esa opción aparece un párrafo relativo a la seguridad que dice:

Note that even though Wget writes to a known filename for this file, this is not a security hole in the scenario of a user making .listing a symbolic link to /etc/passwd or something and asking root to run Wget in his or her directory. Depending on the options used, either Wget will refuse to write to .listing, making the globbing/recursion/time-stamping operation fail, or the symbolic link will be deleted and replaced with the actual .listing file, or the listing will be written to a .listing.number file.

Even though this situation isn't a problem, though, root should never run Wget in a non-trusted user's directory. A user could do something as simple as linking index.html to /etc/passwd and asking root to run Wget with ‘-N’ or ‘-r’ so the file will be overwritten.
O lo que es lo mismo, no te precoupes por la seguridad, ya si alguien crea un link simbolico a /etc/passwd y hace usar Wget al usuario root, nosotros ya hemos pensado eso y lo hemos resuelto.

Con este párrafo se da una falsa sensación de seguridad, ya que, como hemos visto, es fácil utilizar este fichero para obtener información sensible de la web de una empresa símplemente buscándolo [ "al Maligno style" };) ] con la FOCA.

Saludos Malignos!

UPDATE: Un lector, Jesús Losada, se miró el código fuente de wget, y resulta que si ha sido compilado para Windows, wget genera los ficheros con el nombre de _Listing:

/* File where the "ls -al" listing will be saved. */
#ifdef MSDOS
#define LIST_FILENAME "_listing"
#else
#define LIST_FILENAME ".listing"
#endif

1 comentario:

Anónimo dijo...

Esto me pareció interesante: http://jbyte-security.blogspot.com/2011/07/enganando-la-foca.html

Entradas populares