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


Viewing file:     perchild.pl (4.05 KB)      -rwxr-xr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
# perchild.pl
# Defines editors for the per-child UID module in apache 2.0
# The actual functions for most of these are still in core.pl

sub perchild_directives
{
local $rv;
$rv = [ [ 'AssignUserId', 0, 8, 'virtual virtualonly', 2.0 ],
    [ 'ChildPerUserId', 1, 8, 'global', 2.0 ],
    [ 'CoreDumpDirectory', 0, 9, 'global', 2.0 ],
    [ 'BindAddress Listen Port', 1, 1, 'global', 2.0, 10 ],
    [ 'ListenBacklog', 0, 1, 'global', 2.0 ],
    [ 'LockFile', 0, 9, 'global', 2.0 ],
    [ 'MaxRequestsPerChild', 0, 0, 'global', 2.0 ],
    [ 'MinSpareThreads', 0, 0, 'global', 2.0 ],
    [ 'MaxSpareThreads', 0, 0, 'global', 2.0 ],
    [ 'MaxThreadsPerChild', 0, 0, 'global', 2.0 ],
    [ 'NumServers', 0, 0, 'global', 2.0 ],
    [ 'PidFile', 0, 9, 'global', 2.0 ],
    [ 'ScoreBoardFile', 0, 9, 'global', 2.0 ],
    [ 'SendBufferSize', 0, 1, 'global', 2.0 ],
    [ 'StartThreads', 0, 0, 'global', 2.0 ],
    [ 'Group', 0, 8, 'global', 2.0, 9 ],
    [ 'User', 0, 8, 'global', 2.0, 10 ] ];
return &make_directives($rv, $_[0], "perchild");
}

sub edit_AssignUserId
{
local $rv;
$rv .= sprintf "<input type=radio name=AssignUserId_def value=1 %s> %s\n",
        $_[0] ? "" : "checked", $text{'core_none'};
$rv .= sprintf "<input type=radio name=AssignUserId_def value=0 %s>\n",
        $_[0] ? "checked" : "";
$rv .= &text('perchild_assignug',
    "<input name=AssignUserId_uid size=8 value='$_[0]->{'words'}->[0]'>",
    "<input name=AssignUserId_gid size=8 value='$_[0]->{'words'}->[1]'>");
return (2, $text{'perchild_assign'}, $rv);
}
sub save_AssignUserId
{
if ($in{'AssignUserId_def'}) {
    return ( [ ] );
    }
else {
    $in{'AssignUserId_uid'} =~ /^-?\d+$/ || &error($text{'perchild_euid'});
    $in{'AssignUserId_gid'} =~ /^-?\d+$/ || &error($text{'perchild_egid'});
    return ( [ "$in{'AssignUserId_uid'} $in{'AssignUserId_gid'}" ] );
    }
}

sub edit_ChildPerUserId
{
local $rv = "<table border>\n".
        "<tr $tb> <td><b>$text{'perchild_num'}</b></td>\n".
        "<td><b>$text{'perchild_uid'}</b></td>\n".
        "<td><b>$text{'perchild_gid'}</b></td> </tr>\n";
local ($c, $i = 0);
foreach $c (@{$_[0]}, undef) {
    local @v = $c ? @{$c->{'words'}} : ();
    $rv .= "<tr $cb>\n";
    $rv .= "<td><input name=ChildPerUserId_n_$i size=5 value='$v[2]'></td>\n";
    $rv .= "<td><input name=ChildPerUserId_u_$i size=8 value='$v[0]'></td>\n";
    $rv .= "<td><input name=ChildPerUserId_g_$i size=8 value='$v[1]'></td>\n";
    $rv .= "</tr>\n";
    $i++;
    }
$rv .= "</table>\n";
return (2, $text{'perchild_child'}, $rv);
}
sub save_ChildPerUserId
{
local (@rv, $i);
for($i=0; defined($in{"ChildPerUserId_n_$i"}); $i++) {
    next if (!$in{"ChildPerUserId_n_$i"});
    $in{"ChildPerUserId_n_$i"} =~ /^[1-9]\d*$/ ||
        &error($text{'perchild_enum'});
    $in{"ChildPerUserId_u_$i"} =~ /^-?\d+$/ ||
        &error($text{'perchild_euid'});
    $in{"ChildPerUserId_g_$i"} =~ /^-?\d+$/ ||
        &error($text{'perchild_egid'});
    push(@rv, $in{"ChildPerUserId_u_$i"}." ".$in{"ChildPerUserId_g_$i"}." ".
          $in{"ChildPerUserId_n_$i"});
    }
return ( \@rv );
}

sub edit_MinSpareThreads
{
return (1,
    $text{'worker_minspare'},
    &opt_input($_[0]->{'value'},"MinSpareThreads",$text{'default'}, 4));
}
sub save_MinSpareThreads
{
return &parse_opt("MinSpareThreads", '^\d+$',
          $text{'worker_eminspare'});
}

sub edit_MaxSpareThreads
{
return (1,
    $text{'worker_maxspare'},
    &opt_input($_[0]->{'value'},"MaxSpareThreads",$text{'default'}, 4));
}
sub save_MaxSpareThreads
{
return &parse_opt("MaxSpareThreads", '^\d+$',
          $text{'worker_emaxspare'});
}

sub edit_StartThreads
{
return (1,
    $text{'perchild_sthreads'},
    &opt_input($_[0]->{'value'},"StartThreads",$text{'default'}, 4));
}
sub save_StartThreads
{
return &parse_opt("StartThreads", '^\d+$',
          $text{'perchild_esthreads'});
}

sub edit_NumServers
{
return (1,
    $text{'perchild_numservers'},
    &opt_input($_[0]->{'value'},"NumServers",$text{'default'}, 4));
}
sub save_NumServers
{
return &parse_opt("NumServers", '^\d+$',
          $text{'perchild_enumservers'});
}

sub edit_MaxThreadsPerChild
{
return (1,
    $text{'perchild_maxthreads'},
    &opt_input($_[0]->{'value'},"MaxThreadsPerChild",$text{'default'}, 4));
}
sub save_MaxThreadsPerChild
{
return &parse_opt("MaxThreadsPerChild", '^\d+$',
          $text{'perchild_emaxthreads'});
}

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