Foro de elhacker.net

Seguridad Informática => Nivel Web => Mensaje iniciado por: tragantras en 5 Septiembre 2010, 19:32 pm



Título: Exploitation of Cpanel PHP Restriction Bypass Vulnerability
Publicado por: tragantras en 5 Septiembre 2010, 19:32 pm
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
Código
  1.  
  2. Line 529 :
  3.  function Show_Notice ( $Script , $Version_Numbers )
  4.    {
  5.        $Home_Directory = $GLOBALS['enc_cpanel_homedir'] ;
  6.        if ( substr ( $Home_Directory , -1 ) != '/' )
  7.        {
  8.            $Home_Directory = $Home_Directory . '/' ;
  9.        }
  10.        $Files = Array ( ) ;
  11.        $Directory = $Home_Directory . '.fantasticodata/' . $Script . '/' ;  // AQUI!
  12.        $Files = Get_Files ( $Directory ) ;
  13.        if ( !empty ( $Files ) AND is_array ( $Files ) )
  14.        {
  15.            $Temporary = natcasesort ( $Files ) ;
  16.        }
  17.        foreach ( $Files As $File )
  18.        {
  19.            $Name    = '' ;
  20.            $Path    = '' ;
  21.            if ( strstr ( $File , "|" ) )
  22.            {
  23.                $Name = explode ( "|" , $File ) ;
  24.                $Name = $Name[1] ;
  25.            }
  26.            else
  27.            {
  28.                $Name = $File ;
  29.            }
  30.            /* Debugging */ // echo $Directory . $File . '<br/>' ;
  31.            if ( is_file ( $Directory . $File ) )
  32.            {
  33.                include $Directory . $File ;
  34.                if ( !empty ( $thisscriptpath ) )
  35.                {
  36.                    $Path = $thisscriptpath ;
  37.                }
  38.                else
  39.                {
  40.                    $Path = $Home_Directory . 'public_html/' . $Name . '/' ;
  41.                }
  42.                if ( substr ( $Path , -1 ) != '/' )
  43.                {
  44.                    $Path = $Path . '/' ;
  45.                }
  46.                /* Debugging */ // echo $Path . 'fantversion.php<br/><br/>' ;
  47.                if ( is_file ( $Path . 'fantversion.php' ) )
  48.                {
  49.                    include $Path . 'fantversion.php' ;
  50.                    if ( !empty ( $version ) )
  51.                    {
  52.                        if ( in_array ( $version , $Version_Numbers ) )
  53.                        {
  54.                            return 'Yes' ;
  55.                        }
  56.                    }
  57.                }
  58.            }
  59.        }
  60.        return 'No' ;
  61.    }

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:
Código:
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!



Título: Re: Exploitation of Cpanel PHP Restriction Bypass Vulnerability
Publicado por: -el director del cole- en 7 Septiembre 2010, 17:09 pm
Si señor ,esto es lo que andaba buscando hace tiempo  ;)

saludos!