!c99Shell v. 1.0 pre-release build #16!

Software: Apache/2.2.3 (CentOS). PHP/5.1.6 

uname -a: Linux mx-ll-110-164-51-230.static.3bb.co.th 2.6.18-194.el5PAE #1 SMP Fri Apr 2 15:37:44
EDT 2010 i686
 

uid=48(apache) gid=48(apache) groups=48(apache) 

Safe-mode: OFF (not secure)

/usr/libexec/webmin/file/   drwxr-xr-x
Free 53.79 GB of 127.8 GB (42.09%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     show.cgi (3.59 KB)      -rwxr-xr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#!/usr/bin/perl
# show.cgi
# Output some file for the browser

$trust_unknown_referers = 1;
require './file-lib.pl';
&ReadParse();
use POSIX;
$p = $ENV{'PATH_INFO'};
($p =~ /^\s*\|/ || $p =~ /\|\s*$/ || $p =~ /\0/) &&
    &error_exit($text{'view_epathinfo'});
if ($in{'type'}) {
    # Use the supplied content type
    $type = $in{'type'};
    $download = 1;
    }
elsif ($in{'format'} == 1) {
    # Type comes from compression format
    $type = "application/zip";
    }
elsif ($in{'format'} == 2) {
    $type = "application/x-gzip";
    }
elsif ($in{'format'} == 3) {
    $type = "application/x-tar";
    }
else {
    # Try to guess type from filename
    $type = &guess_mime_type($p, undef);
    if (!$type) {
        # No idea .. use the 'file' command
        $out = &backquote_command("file ".
                      quotemeta(&resolve_links($p)), 1);
        if ($out =~ /text|script/) {
            $type = "text/plain";
            }
        else {
            $type = "application/unknown";
            }
        }
    }

# Dump the file
&switch_acl_uid();
$temp = &transname();
if (!&can_access($p)) {
    # ACL rules prevent access to file
    &error_exit(&text('view_eaccess', &html_escape($p)));
    }
$p = &unmake_chroot($p);

if ($in{'format'}) {
    # An archive of a directory was requested .. create it
    $archive || &error_exit($text{'view_earchive'});
    if ($in{'format'} == 1) {
        $p =~ s/\.zip$//;
        }
    elsif ($in{'format'} == 2) {
        $p =~ s/\.tgz$//;
        }
    elsif ($in{'format'} == 3) {
        $p =~ s/\.tar$//;
        }
    -d $p || &error_exit($text{'view_edir'}." ".&html_escape($p));
    if ($archive == 2 && $archmax > 0) {
        # Check if directory is too large to archive
        local $kb = &disk_usage_kb($p);
        if ($kb*1024 > $archmax) {
            &error_exit(&text('view_earchmax', $archmax));
            }
        }

    # Work out the base directory and filename
    if ($p =~ /^(.*\/)([^\/]+)$/) {
        $pdir = $1;
        $pfile = $2;
        }
    else {
        $pdir = "/";
        $pfile = $p;
        }

    # Work out the command to run
    if ($in{'format'} == 1) {
        &has_command("zip") || &error_exit(&text('view_ecmd', "zip"));
        $cmd = "zip -r $temp ".quotemeta($pfile);
        }
    elsif ($in{'format'} == 2) {
        &has_command("tar") || &error_exit(&text('view_ecmd', "tar"));
        &has_command("gzip") || &error_exit(&text('view_ecmd', "gzip"));
        $cmd = "tar cf - ".quotemeta($pfile)." | gzip -c >$temp";
        }
    elsif ($in{'format'} == 3) {
        &has_command("tar") || &error_exit(&text('view_ecmd', "tar"));
        $cmd = "tar cf $temp ".quotemeta($pfile);
        }

    if ($in{'test'}) {
        # Don't actually do anything if in test mode
        &ok_exit();
        }

    # Run the command, and send back the resulting file
    local $qpdir = quotemeta($pdir);
    local $out = `cd $qpdir ; ($cmd) 2>&1 </dev/null`;
    if ($?) {
        unlink($temp);
        &error_exit(&text('view_ecomp', &html_escape($out)));
        }
    local @st = stat($temp);
    print "Content-length: $st[7]\n";
    print "Content-type: $type\n\n";
    open(FILE, $temp);
    unlink($temp);
    while(read(FILE, $buf, 1024)) {
        print $buf;
        }
    close(FILE);
    }
else {
    if (!open(FILE, "<", $p)) {
        # Unix permissions prevent access
        &error_exit(&text('view_eopen', $p, $!));
        }

    if ($in{'test'}) {
        # Don't actually do anything if in test mode
        close(FILE);
        &ok_exit();
        }

    @st = stat($p);
    print "X-no-links: 1\n";
    print "Content-length: $st[7]\n";
    print "Content-Disposition: Attachment\n" if ($download);
    &print_content_type($type);
    if ($type =~ /^text\/html/i && !$in{'edit'}) {
        while(read(FILE, $buf, 1024)) {
            $data .= $buf;
            }
        print &filter_javascript($data);
        }
    else {
        while(read(FILE, $buf, 1024)) {
            print $buf;
            }
        }
    close(FILE);
    }

sub error_exit
{
print "Content-type: text/plain\n";
print "Content-length: ",length($_[0]),"\n\n";
print $_[0];
exit;
}

sub ok_exit
{
print "Content-type: text/plain\n\n";
print "\n";
exit;
}


:: Command execute ::

Enter:
 
Select:
 

:: Shadow's tricks :D ::

Useful Commands
 
Warning. Kernel may be alerted using higher levels
Kernel Info:

:: Preddy's tricks :D ::

Php Safe-Mode Bypass (Read Files)

File:

eg: /etc/passwd

Php Safe-Mode Bypass (List Directories):

Dir:

eg: /etc/

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

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

--[ c999shell v. 1.0 pre-release build #16 Modded by Shadow & Preddy | RootShell Security Group | r57 c99 shell | Generation time: 0.0105 ]--