Obtención de certificados web utilizando LFI

Para acabar la semana, tenemos una entrada de Sergio Galán, alias @NaxoneZ, que ya ha colaborado con Security Art Work en el pasado.

Pueden encontrarle en su blog naxonez.wordpress.com o seguirle en Twitter.

Últimamente se ha hablado mucho del robo de certificados. Como sabréis el uso de https y de su seguridad, en gran medida depende de que el certificado usado en la web haya sido generado por una entidad confiable y de que el acceso al mismo sea limitado, ya que si disponemos del certificado podremos hacer un phishing de la página web como si fuera real y el usuario ni lo notaría debido a que el certificado lo considera auténtico.

Un ejemplo de la obtención de un certificado de manera fraudulenta sería utilizando un fallo LFI de la página en cuestión. Veamos por ejemplo una página conh el siguiente código vulnerable a ataques LFIs:

<?php
require($_GET[file]);
?>

Como se puede observar esta página mostrará el contenido de un fichero pasado por la variable file utilizando para ello el método GET. Un ejemplo sería el siguiente:

Como comentaba antes, este código es vulnerable y en este caso hemos podido mostrar el fichero /etc/passwd. Esto no tiene mucha utilidad ahora mismo, pero echándole imaginación podríamos llegar hasta el certificado en cuestión. ¿Cómo? Muy fácil: vamos a mirar el fichero de configuración de Apache donde se configuran los distintos certificados. Para ello haremos lo siguiente:

Teniendo acceso a este fichero lo único que debemos hacer es buscar la ruta del certificado. Para mayor comodidad a la hora de ver el fichero, podemos usar la opción de “ver código fuente” del navegador, que nos mostrará el fichero de una forma más cómoda :

Ahora sólo nos falta buscar la línea donde se especifique la ruta del certificado:

Y por último, usando el LFI vamos a mostrar este certificado para después copiarlo y poder usarlo para hacer un phishing de la página en cuestión:

Ahora únicamente debemos crear una copia de la página y usar el certificado que hemos obtenido usando el LFI. De esta manera el usuario creerá que está navegando por una página segura, cuando realmente esta siendo objetivo de un ataque de phishing:

Como podéis observar el uso de un fallo web tan común como un LFI nos ha permitido poder hacer un phishing usando un certificado real de una página web, cosa que como veis no ha sido difícil.

(Bonus)

Cabe destacar que muchas veces no necesitamos ni usar un LFI, el mismo buscador Google puede ser nuestro amigo:

(N.d.E. Como siempre, pasen un buen fin de semana y nos vemos aquí mismo el lunes).

Comments

  1. El certificado no sería válido si no hemos envenenado la cache DNS o atacado el servidor DNS de la víctima.

  2. Claramente esto sería la preparación para un ataque posterior de phishing.. ya sea utilizando un envenenamiento DNS u otra técnica similar.

    Saludos!

  3. No, no lo deja “claramente” claro:

    “ya que si disponemos del certificado podremos hacer un phishing de la página web como si fuera real y el usuario ni lo notaría”

  4. Si el servidor estuviera bien configurado, los certificados no tendran permisos para www-data, estos es, chmod 600 /etc/apache2/*.pem , chown root.root /etc/apache2/*.pem.
    El apache arranca perfectamente leyendo los permisos con permisos de root. En todo caso seguro que en mas de un sitio el truco funciona.