Ejecutar código PHP Remoto en SMF 2.0.4 (Panel de administración)

Iniciado por M5f3r0, Agosto 10, 2013, 09:19:02 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Agosto 10, 2013, 09:19:02 PM Ultima modificación: Noviembre 23, 2014, 02:22:12 PM por Expermicid
Buenas comunidad de Underc0de, hoy estuve navegando por la net búscando algún bug o exploit para SMF 2.0.4 y así aprender algo nuevo ya que estaba aburrido jeje, y pues me tope con una vulnerabilidad de SMF 2.0.4 la cúal hablaba sobre la ejecución de un código PHP remoto en SMF 2.0.4 , entonces ópte por montar un foro SMF en el localhost para así testear dicha vulnerabilidad la cúal se encontraba en el panel de administración.

Para poder aprovecharse de está vulnerabilidad, es necesario tener la cuenta de un administrador para poder acceder a dicho panel de administración, ya que es dónde se encuentra dicha falla, abrimos la sección de Lenguajes > Editar lenguajes y luego damos click en cualquieras de los lenguajes que tengan instalado.

Y cómo observamos, nos saldrá una lista de inputs de textos , si tenemos un servidor de prueba para testear está vulnerabilidad, si vamos a la carpeta que contiene dichas rutas vayamos a Themes > default > languages y abrimos el archivo PHP llamado "index.spanish_latin-utf8" o "index.english" dependiendo del lenguaje que vayamos a modificar.

Observemos estás líneas las cuales son del lenguaje español (dónde hare el testeo):

Código: php
$txt['lang_locale'] = 'es_AR.utf8';
$txt['lang_dictionary'] = 'es';
$txt['lang_spelling'] = 'spanish';


son las líneas de los inputs, la llamada "lang_locale" es esa que pertenece a el input de texto que dice "es_AR.utf8" , ejemplo con una imágen:



Y "lang_dictionary" y "lang_spelling" pertenecen a las otras dos. Entonces, la manera de aprovecharnos de está falla sería ejecutando algún código PHP remoto, por ejemplo yo coloco phpinfo() , quedando así "\';phpinfo();//" , ya que SMF cuando intentamos añadir una comilla este nos inválida la inyección, pero este no filtra el "\" y haremos un bypasseo con la comilla quedando de la siguiente manera: \\';phpinfo();// , ahora lo ingresamos en uno de los inputs y veamos:



Y guardamos, y ¡Guala! se reinicia la página y nos muestra el phpinfo() , como se ve el código en el archivo:

Código: php
$txt['lang_locale'] = 'es_AR.utf8\\';phpinfo();//';
$txt['lang_dictionary'] = 'es';
$txt['lang_spelling'] = 'spanish';


Y satisfactoriamente, hemos logrado infiltrar un código php de manera remota.

Otra cosa, no solo podemos usar phpinfo() podemos usar otros códigos de PHP, es cuestión de conocer :).

Link de dónde me he leído sobre este tema: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Saludos!
A veces, observo mi pasado y me arrepiento en la actualidad de todo lo que llegue a perder y olvidar por como me veía la sociedad, nunca dejes que las opiniones de los demás te lleguen a afectar moralmente hasta el punto en que dejes de hacer lo que más te apasiona, saludos! (msj escrito en el 2016)