Exploitation of Cpanel PHP Restriction Bypass Vulnerability

Iniciado por tragantras, 5 Septiembre 2010, 19:32 PM

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

tragantras

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! ) 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
Código (php) [Seleccionar]


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!

Colaboraciones:
1 2

-el director del cole-

Si señor ,esto es lo que andaba buscando hace tiempo  ;)

saludos!