!C99Shell v. 1.0 pre-release build #13!

Software: Apache. PHP/5.5.15 

uname -a: Windows NT SVR-DMZ 6.1 build 7600 (Windows Server 2008 R2 Enterprise Edition) i586 

SYSTEM 

Safe-mode: OFF (not secure)

C:\cumbreclima\wp-content\plugins\duplicator\classes\   drwxrwxrwx
Free 4.1 GB of 39.52 GB (10.37%)
Detected drives: [ a ] [ c ] [ d ] [ e ] [ f ]
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     utility.php (9.66 KB)      -rw-rw-rw-
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
if ( ! defined'DUPLICATOR_VERSION' ) ) exit; // Exit if accessed directly

class DUP_Util {
    
    
/**
    *  PHP_SAPI for fcgi requires a data flush of at least 256
    *  bytes every 40 seconds or else it forces a script hault
    */
    
static public function FcgiFlush() {
        echo(
str_repeat(' '300));
        @
flush();
    }

    
/**
    *  Language slug
    */
    
static public function _e($text)
    {
        
_e($textDUPLICATOR_LANG_SLUG);
    }

    static public function 
__($text)
    {
        return 
__($textDUPLICATOR_LANG_SLUG);
    }
    
    
/**
    *  returns the snapshot url
    */
    
static public function SSDirURL() {
         return 
get_site_url(null''is_ssl() ? 'https' 'http') . '/' DUPLICATOR_SSDIR_NAME '/';
    }

    
/**
    *  Returns the last N lines of a file
    *  Equivelent to tail command
    */
    
static public function TailFile($filepath$lines 2) {

        
// Open file
        
$f = @fopen($filepath"rb");
        if (
$f === false) return false;

        
// Sets buffer size
        
$buffer 256;

        
// Jump to last character
        
fseek($f, -1SEEK_END);

        
// Read it and adjust line number if necessary
        // (Otherwise the result would be wrong if file doesn't end with a blank line)
        
if (fread($f1) != "\n"$lines -= 1;
        
        
// Start reading
        
$output '';
        
$chunk '';

        
// While we would like more
        
while (ftell($f) > && $lines >= 0) {
            
// Figure out how far back we should jump
            
$seek min(ftell($f), $buffer);
            
// Do the jump (backwards, relative to where we are)
            
fseek($f, -$seekSEEK_CUR);
            
// Read a chunk and prepend it to our output
            
$output = ($chunk fread($f$seek)) . $output;
            
// Jump back to where we started reading
            
fseek($f, -mb_strlen($chunk'8bit'), SEEK_CUR);
            
// Decrease our line counter
            
$lines -= substr_count($chunk"\n");
        }

        
// While we have too many lines
        // (Because of buffer size we might have read too many)
        
while ($lines++ < 0) {
            
// Find first newline and remove all text before that
            
$output substr($outputstrpos($output"\n") + 1);
        }
        
fclose($f);
        return 
trim($output);
    }

    

    
/**
    *  Runs the APC cache to pre-cache the php files
    *  returns true if all files where cached
    */
    
static public function RunAPC() {
       if(
function_exists('apc_compile_file')){
           
$file01 = @apc_compile_file(DUPLICATOR_PLUGIN_PATH "duplicator.php");
           return (
$file01);
       } else {
           return 
false;
       }
    }

    
/**
    *  Display human readable byte sizes
    *  @param string $size        The size in bytes
    */
    
static public function ByteSize($size) {
        try {
            
$units = array('B''KB''MB''GB''TB');
            for (
$i 0$size >= 1024 && $i 4$i++)
                
$size /= 1024;
            return 
round($size2) . $units[$i];
        } catch (
Exception $e) {
            return 
"n/a";
        }
    }

    
/**
    *  Makes path safe for any OS
    *  Paths should ALWAYS READ be "/"
    *         uni: /home/path/file.xt
    *         win:  D:/home/path/file.txt 
    *  @param string $path        The path to make safe
    */
    
static public function SafePath($path) {
        return 
str_replace("\\""/"$path);
    }

    
/** 
     * Get current microtime as a float. Can be used for simple profiling.
     */
    
static public function GetMicrotime() {
        return 
microtime(true);
    }

    
/** 
     * Append the value to the string if it doesn't already exist
     */
    
static public function StringAppend($string$value ) {
       return 
$string . (substr($string, -1) == $value '' $value);
    }

    
/** 
     * Return a string with the elapsed time.
     * Order of $end and $start can be switched. 
     */
    
static public function ElapsedTime($end$start) {
        return 
sprintf("%.2f sec."abs($end $start));
    }

    
/**
     * Get the MySQL system variables
     * @param conn $dbh Database connection handle
     * @return string the server variable to query for
     */
    
static public function MysqlVariableValue($variable) {
        global 
$wpdb;
        
$row $wpdb->get_row("SHOW VARIABLES LIKE '{$variable}'"ARRAY_N);
        return isset(
$row[1]) ? $row[1] : null;
    }

    
/**
     * List all of the files of a path
     * @path path to a system directory
     * @return array of all files in that path
     */
    
static public function ListFiles($path '.') {
        
$files = array();
        
        
//GLOB_BRACE is not an option on some systems
        //{,.}*  allows for hidden files to be shown
        
if (defined("GLOB_BRACE")) {
            
$files    glob("{$path}/{,.}*"GLOB_NOSORT GLOB_BRACE);
        } else {
            foreach (new 
DirectoryIterator($path) as $file) {
                
$files[] = DUP_Util::SafePath($file->getPathname());
            }
        }
        return 
$files;
    }
    
    
/**
     * List all of the directories of a path
     * @path path to a system directory
     * @return array of all directories in that path
     */
    
static public function ListDirs($path '.') {
        
$dirs = array();

        foreach (new 
DirectoryIterator($path) as $file) {
            if (
$file->isDir() && !$file->isDot()) {
                
$dirs[] = DUP_Util::SafePath($file->getPathname());
            }
        }
        return 
$dirs;
    }

    
/** 
     * Does the directory have content
     */
    
static public function IsDirectoryEmpty($dir) {
        if (!
is_readable($dir)) return NULL
        return (
count(scandir($dir)) == 2);
    }
    
    
/** 
     * Size of the directory recuresivly in bytes
     */
    
static public function GetDirectorySize($dir) {
        if(!
file_exists($dir)) 
            return 
0;
        if(
is_file($dir)) 
            return 
filesize($dir);
        
        
$size 0;
        
$list glob($dir."/*");
        if (! empty(
$list)) {
            foreach(
$list as $file)
                
$size += self::GetDirectorySize($file);
        }
        return 
$size;
    }
    
    
    public static function 
IsShellExecAvailable() {
        
        if (
array_intersect(array('shell_exec''escapeshellarg''escapeshellcmd''extension_loaded'), array_map('trim'explode(',', @ini_get('disable_functions')))))
            return 
false;
        
        
//Suhosin: http://www.hardened-php.net/suhosin/
        //Will cause PHP to silently fail.
        
if (extension_loaded('suhosin'))
          return 
false;

        
// Can we issue a simple echo command?
        
if (!@shell_exec('echo duplicator'))
            return 
false;

        return 
true;
    }
    
    public static function 
IsOSWindows() {
        if (
strtoupper(substr(PHP_OS03)) === 'WIN') {
            return 
true;
        }
        return 
false;
    }
    
    public static function 
CheckPermissions($permission 'read') {
        
$capability $permission;
        
$capability apply_filters('wpfront_user_role_editor_duplicator_translate_capability'$capability);

        if(!
current_user_can($capability)) {
            
wp_die(__('You do not have sufficient permissions to access this page.''wpduplicator'));
            return;
        }
    }

    
/**
    *  Creates the snapshot directory if it doesn't already exisit
    */
    
public static function GetCurrentUser() {
        
$unreadable =  'Undetectable';
        if (
function_exists('get_current_user') && is_callable('get_current_user')) {
            
$user get_current_user(); 
            return 
strlen($user) ? $user $unreadable;
        }
        return 
$unreadable;
    }
    
    
/**
    *  Gets the owner of the PHP process
    */
    
public static function GetProcessOwner() {
        
$unreadable 'Undetectable';
        
$user '';
        try {
            if (
function_exists('exec')) {
                
$user exec('whoami');
            } 
            
            if (! 
strlen($user) && function_exists('posix_getpwuid') && function_exists('posix_geteuid')) {
                
$user posix_getpwuid(posix_geteuid());
                
$user $user['name'];  
            }
            
            return 
strlen($user) ? $user $unreadable;

        } catch (
Exception $ex) {
            return 
$unreadable;
        }
    }
    
    
/**
    *  Creates the snapshot directory if it doesn't already exisit
    */
    
static public function InitSnapshotDirectory() {
        
$path_wproot    DUP_Util::SafePath(DUPLICATOR_WPROOTPATH);
        
$path_ssdir        DUP_Util::SafePath(DUPLICATOR_SSDIR_PATH);
        
$path_plugin    DUP_Util::SafePath(DUPLICATOR_PLUGIN_PATH);

        
//--------------------------------
        //CHMOD DIRECTORY ACCESS
        //wordpress root directory
        
@chmod($path_wproot0755);

        
//snapshot directory
        
@mkdir($path_ssdir0755);
        @
chmod($path_ssdir0755);
        
        
//snapshot tmp directory
        
$path_ssdir_tmp $path_ssdir '/tmp';
        @
mkdir($path_ssdir_tmp0755);
        @
chmod($path_ssdir_tmp0755);

        
//plugins dir/files
        
@chmod($path_plugin 'files'0755);

        
//--------------------------------
        //FILE CREATION    
        //SSDIR: Create Index File
        
$ssfile = @fopen($path_ssdir '/index.php''w');
        @
fwrite($ssfile'<?php error_reporting(0);  if (stristr(php_sapi_name(), "fcgi")) { $url  =  "http://" . $_SERVER["HTTP_HOST"]; header("Location: {$url}/404.html");} else { header("HTTP/1.1 404 Not Found", true, 404);} exit(); ?>');
        @
fclose($ssfile);

        
//SSDIR: Create token file in snapshot
        
$tokenfile = @fopen($path_ssdir '/dtoken.php''w');
        @
fwrite($tokenfile'<?php error_reporting(0);  if (stristr(php_sapi_name(), "fcgi")) { $url  =  "http://" . $_SERVER["HTTP_HOST"]; header("Location: {$url}/404.html");} else { header("HTTP/1.1 404 Not Found", true, 404);} exit(); ?>');
        @
fclose($tokenfile);

        
//SSDIR: Create .htaccess
        
$storage_htaccess_off DUP_Settings::Get('storage_htaccess_off');
        if (
$storage_htaccess_off) {
            @
unlink($path_ssdir '/.htaccess');
        } else {
            
$htfile = @fopen($path_ssdir '/.htaccess''w');
            
$htoutput "Options -Indexes" ;
            @
fwrite($htfile$htoutput);
            @
fclose($htfile);
        }

        
//SSDIR: Robots.txt file
        
$robotfile = @fopen($path_ssdir '/robots.txt''w');
        @
fwrite($robotfile"User-agent: * \nDisallow: /" DUPLICATOR_SSDIR_NAME '/');
        @
fclose($robotfile);

        
//PLUG DIR: Create token file in plugin
        
$tokenfile2 = @fopen($path_plugin 'installer/dtoken.php''w');
        @
fwrite($tokenfile2'<?php @error_reporting(0); @require_once("../../../../wp-admin/admin.php"); global $wp_query; $wp_query->set_404(); header("HTTP/1.1 404 Not Found", true, 404); header("Status: 404 Not Found"); @include(get_template_directory () . "/404.php"); ?>');
        @
fclose($tokenfile2);
    }

}
?>

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 1.0 pre-release build #13 powered by Captain Crunch Security Team | http://ccteam.ru | Generation time: 0.0156 ]--