Bueno, he pensado que estaría bien hacer una contribución a esta comunidad, asi que aprovechando el disclosure de esta vuln que han hecho los chicos de abysssec ( link! ) (http://www.exploit-db.com/moaub-1-cpanel-php-restriction-bypass-vulnerability/) para el recien estrenado
MOAUB (Month Of Abysssec Undisclosed Bugs) voy a hacer una puesta en escena de como se realizaría la explotación y de paso traduciré algunos fragmentos del texto expuesto en la web apuntada.
0x01: INFO
Versiones afectadas: cPanel <= 11.25
Efectos: Atacantes debidamente logueados pueden conseguir acceso a archivos restringidos, bypasseando mod_security, Safemod, y funciones desabilitadas.
Impacto: Critico, explotable localmente y una vez logueados.
0x02: Finalidad
Usuarios de hosts compartidos (/virtuales) pueden acceder a otras webs del sistema, así como ejecutar funciones prohibidas (exec, system, passthru... ).
Defacing múltiples, acceso a otros servidores internos etc...
0x03: Código vulnerable
Line 529 :
function Show_Notice ( $Script , $Version_Numbers )
{
$Home_Directory = $GLOBALS['enc_cpanel_homedir'] ;
if ( substr ( $Home_Directory , -1 ) != '/' )
{
$Home_Directory = $Home_Directory . '/' ;
}
$Files = Array ( ) ;
$Directory = $Home_Directory . '.fantasticodata/' . $Script . '/' ; // AQUI!
$Files = Get_Files ( $Directory ) ;
if ( !empty ( $Files ) AND is_array ( $Files ) )
{
$Temporary = natcasesort ( $Files ) ;
}
foreach ( $Files As $File )
{
$Name = '' ;
$Path = '' ;
if ( strstr ( $File , "|" ) )
{
$Name = explode ( "|" , $File ) ;
$Name = $Name[1] ;
}
else
{
$Name = $File ;
}
/* Debugging */ // echo $Directory . $File . '<br/>' ;
if ( is_file ( $Directory . $File ) )
{
include $Directory . $File ;
if ( !empty ( $thisscriptpath ) )
{
$Path = $thisscriptpath ;
}
else
{
$Path = $Home_Directory . 'public_html/' . $Name . '/' ;
}
if ( substr ( $Path , -1 ) != '/' )
{
$Path = $Path . '/' ;
}
/* Debugging */ // echo $Path . 'fantversion.php<br/><br/>' ;
if ( is_file ( $Path . 'fantversion.php' ) )
{
include $Path . 'fantversion.php' ;
if ( !empty ( $version ) )
{
if ( in_array ( $version , $Version_Numbers ) )
{
return 'Yes' ;
}
}
}
}
}
return 'No' ;
}
0x04: Explotación
Yo tuve que primero entrar en http ://www.[MIWEB].com:2082/frontend/x3/fantastico/index.php, instalar un script cualquiera para que así se creara el archivo necesario en el ftp, suponemos que instalamos el phpFormGenerator, accediendo a: http ://www.[MIWEB].com:2082/frontend/x3/fantastico/autoinstallhome.php?app=phpFormGenerator.
Una vez instalado accedemos mediante el ftp o el filemanager del cPanel a "/home/.fantasticodata/phpFormGenerator/" y subimos nuestro archivo que podrá bypassear la seguridad del host, supongamos una shell, c99.php, tenemos que nombrarla de la siguiente manera:
web.com|archivo
, por ejemplo si mi web es www.tragantras.com debería crear un archivo que se llamase: tragantras.com|c99 (puede llamarse c99.php sii..., pero al caso da igual).
Con el archivo ya subido al ftp, tan solo tenemos que entrar de nuevo en http ://www.[MIWEB].com:2082/frontend/x3/fantastico/autoinstallhome.php?app=phpFormGenerator para que mediante el código expuesto anteriormente se haga el include y se cargue sin restricciones nuestro archivo.
0x05: Why?
Bueno, para poder modificar los archivos del host es necesario que el mod fantastico del cpanel no esté restringido por funciones, mod_security o safemod, por ello, podemos hacer uso de esta práctica relajada para hacernos con el sistema. En hosts compartidos podemos llegar a tener acceso a más de 1000 webs con tan solo tener una cuenta en el host...
0x06: DECLINACIÓN DE RESPONSABILIDAD
Como simple usuario de internet no me hago responsable de lo que vosotros, almas corrompibles podeis llegar a hacer con esta info, yo, por mi parte, ya avisé a mi proveedor de servicios en todas las webs de que dispongo.
Sin más un saludo!