Underc0de - Hacking y seguridad informática

[In]Seguridad Informática => Bugs y Exploits => Mensaje iniciado por: M5f3r0 en Agosto 10, 2013, 09:19:02 pm

Título: Ejecutar código PHP Remoto en SMF 2.0.4 (Panel de administración)
Publicado por: M5f3r0 en Agosto 10, 2013, 09:19:02 pm
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: [Seleccionar]
$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:

(http://i.imgur.com/IMTA8DW.png)

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:

(http://i.imgur.com/XGr1CqQ.png)

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: [Seleccionar]
$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: http://code.google.com/p/smf2-review/issues/detail?id=6 (http://code.google.com/p/smf2-review/issues/detail?id=6)

Saludos!