Me dejo un LFI y pasa esto…

Me dejo un LFI y pasa esto…

Me dejo un …. y para esto… En este caso un LFI.

Esta es una llamada de atención especialmente llamativa en YouTube que se hizo muy popular hace un tiempo, que, a día de hoy, parece no haber una oleada tan sumamente grande de vídeos con títulos similares, pese a esto, me ha parecido un buen título para dar entrada a una historia personal.

Me dejo un LFI y pasa esto

Me dejo un LFI y pasa esto

¿Que es un LFI?

He de reconocer que sería un buen post para todos aquellos que recién comienzan y están un poco perdidos y no saben por donde empezar.

Un LFI (Local File Inclusion) es una vulnerabilidad de carácter GRAVE, MUY GRAVE, que permite a un atacante obtener acceso al contenido de archivos a los que directamente no se debería de poder tener acceso desde una página, a no ser que sea precisamente la finalidad del software, por ejemplo, se podría obtener acceso al fichero /etc/passwd o al fichero /etc/shadow de un servidor linux (es en donde se almacenan las contraseñas y usuarios de linux), no hace falta que diga lo crítico que es esto.

Esta es una vulnerabilidad que no se debería darse a día de hoy ya que no es excesivamente difícil de evitar, este sería un ejemplo de como se podría dar un LFI.

http://www.midominio.com/index.html

Cuando realmente se trata de un index.php que mediante el .htaccess convierte un:

http://www.midominio.com/index.php?file=index.html

A lo previamente visto en donde este sería todo el código del index.php.

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

Pues bien, este pese a ser un buen ejemplo de lo que podría ser un LFI lógicamente no es lo único que puede producir un LFI, pero creo que la idea se entiende bastante bien.

En casa del herrero cuchara de palo

Los que hayáis seguido una serie de publicaciones donde hablo sobre diferentes técnicas de atacar a WordPress, os habréis percatado de que en numerosas ocasiones he repetido una serie de consejos de seguridad para evitar que tu WordPress pueda ser Hackeado, y en la más relevante ahora mismo, dije:

  • Instalar la mínima cantidad de plugins y temas posibles para evitar la máxima cantidad de vulnerabilidades que pueda tener tu web.

Esto es 100% aplicable no solo a los WordPress sino también a Joomla, Magento, Prestashop, Moodle, Drupal, Contao… y básicamente cualquier cosa a la que se le puedan instalar Temas y/o plugins, que es a día de hoy casi la completa totalidad de los gestores de contenido.

Pues muy a mi pesar, está claro que no es aplicable para mi, puesto que me he pasado por el forro mis propias metodologías de seguridad (hecho que ha sido así ya que se trataba de mi propia web y no habría sido así de haberse hecho en una empresa, claro que aún con esas, el “ansia viva” de determinadas empresas con una madurez digital no lo suficientemente elevada puede obligar a los mismo desarrolladores a desempeñar estas mismas incorrectas prácticas aún llevando, en la mayoría de los casos, una correctas metodologías de trabajo).

La vulnerabilidad del plugin en cuestión

Lo primero agradecer a distintos usuarios de meneame.net quienes fueron los primeros en darse cuenta de el fallo de seguridad, hecho que agradezco puesto que esta vulnerabilidad llevaba 3 días pública en mi web y coincidiendo con las fiestas no había tenido lugar a detectarla, por lo que desde aquí mis agradecimientos a estos usuarios y a diversos usuarios de Hackplayers los cuales también aceleraron el proceso de detección del fallo de seguridad, de no ser así, lo más seguro es que se hubiese pasado cerca de una semana antes de poder detectar la vulnerabilidad debido a las fechas en las que estamos que evidentemente, quitan mucho tiempo libre.

Algunos usuarios de menéame.net asociaban el fallo de seguridad a una vulnerabilidad del plugin WooCommerce o de alguna versión anterior del plugin, lo que supondría que tal y como decían, sería seguramente bastante como para abrir un nuevo CVE, no obstante, se trataba de un plugin llamado WooCommerce Direct Free Download el cuál he de re-programar para solucionar la vulnerabilidad de este plugin manualmente.

La versión actual de este plugin es la 1.15 que es la última actualización que sacaron, parece ser que el plugin según esa web se actualizó por última vez el 10 de Enero de 2016 por lo que está bastante más actualizada de lo que originalmente pensaba, falta decir tiene es que si están leyendo esto, ya se ha notificado de esta vulnerabilidad a los propios desarrolladores.

Realización del ataque

Ahora vamos a lo realmente interesante, a la parte práctica, a la explotación de la vulnerabilidad LFI del plugin en cuestión en su versión 1.5.

Lo primero que haremos será preparar nuestro entorno de pruebas en donde realizaremos toda esta práctica, en mi caso he duplicado esta misma web para realizar la práctica, necesitaremos el plugin de WooCommerce, lo podéis encontrar desde la misma web de WordPress buscando por los plugins.

Copia insegura de mi web vulnerable a LFI

Copia insegura de mi web vulnerable a LFI

 

Como ya comentaba anteriormente, dado que he parcheado esta vulnerabilidad ya no es vulnerable a este ataque, no obstante, he creado para este ejemplo una copia de mi web que esta si es vulnerable, por supuesto, y para asegurar la integridad y seguridad de mis datos, los datos sensibles se han modificado en esta copia para proteger así a la mía.

Como podemos observar en la imagen anterior, ese botón de “Descargar”, no es realmente más que un enlace a documento php con el cual le manda la información codificada en base64, algo que no termino de comprender por que está programado así pero bueno, ese no es el motivo de este post, si le damos clic, veremos que nos descarga, en este caso, mi tan apreciado paper el que por cierto, ha roto records de visitas y descargas en esta web.

Si le diésemos botón derecho al enlace podríamos copiar la dirección del enlace.

copiando el enlace que descarga el paper

Copiando el enlace que descarga el paper

Y ahora aquí está lo interesante de verdad, la segunda parte del enlace, que es la que está codificada en base64, podemos pegarla en cualquier web que lo decodifique y obtendremos lo siguiente (por razones de seguridad he eliminado determinadas partes de la imagen para preservar las seguridad de la copia de la web):

decodificando el base64

decodificando el base64

Podemos ver que simplemente se trata de la URL al archivo en cuestión, que es justo el parámetro que recibe para leer el archivo y forzar la descarga.

Al no filtrar la información de manera correcta, podemos, no solo descargarnos cualquier cosa, sino incluso realizar ataques DoSS en nombre de la web en cuestión que tiene instalado este plugin.

Ahora lo que haremos será modificar la url que se le está pasando como parámetro para que se descargue por aquella que nos queremos descargar, e iremos directamente al grano, a la parte más importante de cualquier wordpress, al archivo wp-config.php.

wp-config.php en base64

wp-config.php en base64

Ahora, todo lo que tendremos que hacer es cambiar el enlace original por ese y acceder.

wp-config.php descargado

wp-config.php descargado

Si lo abrimos pues podemos ver el contenido del wp-config de este WordPress.

contenido del wp-config.php obtenido mediante un LFI

contenido del wp-config.php obtenido mediante un LFI

Hay datos que no tendría porque haberlos tachado, pero como podéis ver no me la juego.

Pero esto no se queda solamente aquí ya que también podemos comprobar que tan seguras son las políticas del propio servidor en donde se encuentra la web, cosa que ya os puedo asegurar que no mucho, pero como ya puedo recordar, ya he notificado a los propios propietarios de los servidores físicos en cuestión para que se endurezcan las propias políticas de seguridad respecto a los archivos a los que se tienen acceso desde la web.

Si en vez de insertar un 422|wp-config.php en base64 introducimos 422|/etc/passwd podemos comprobar que nos descarga efectivamente el archivo /etc/passwd que es en donde linux almacena los usuarios de sus servidores.

/etc/passwd codificado en base64

/etc/passwd codificado en base64

archivo /etc/passwd descargado

archivo /etc/passwd descargado – Me dejo un LFI y pasa esto…

De este si que no me atrevo a poner absolutamente nada, no me gustaría poner en riesgo la seguridad de, a juzgar por lo que pone aquí, unos 1.813 usuarios… (Buajajajaja)

contenido del archivo archivo /etc/passwd del servidor

contenido del archivo archivo /etc/passwd del servidor

Por cierto, esta vulnerabilidad, y no me refiero a la del plugin, sino a la de los servidores de dicha compañía en si mismo, de la cual prefiero no revelar la identidad por motivos de seguridad, afecta a la total mayoría de los servidores, este dato ya ha sido notificado a dicha empresa, por lo que lo más seguro es que se hayan endurecido las políticas de seguridad para dichos archivos, e igual pasa con cualquier otro archivo susceptible de ser adquirido de esta forma.

3 comentarios

  1. Pingback: Vulnerabilidad de X empresa que afecta a más de 1.800 clientes!!!

  2. Buenas primero felicitarte por asumir tu error que no todo el mundo reconoce y luego por explicar de forma maravillosa el problema.

    Me quede de piedra con la parte de los 1800 clientes !!! y eso que tienes un hosting muy conocido…!! probé con la primera pagina que encontré y sucedió lo mismo que comentas… parece mentira que puedes tener tu wordpress securizado y por culpa de otro se te cuelen.
    En fin nada es seguro ya lo dijo Trump !! jejeje
    Saludos

    • Diego Celdran Morell

      Jajajaja y más de 2000 clientes en los hosting unlimited pro, hoy he terminado un paper de seguridad entero reportando un montón de fallos de seguridad de paper y otras compañías de hosting similares, y todos los fallos de seguridad ya se les han sido reportados, en principio al menos, se publicará para el día 20 de Enero, sino me solicitan tiempo extra para solucionar los fallos de seguridad de sus servidores, se publicará ese día, sino, cuando sean solucionador.

      Saludos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *