!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.94 GB of 127.8 GB (39.86%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     mod_alias.pl (5.62 KB)      -rwxr-xr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
# mod_alias.pl
# Defines editors for alias module directives

sub mod_alias_directives
{
$rv = [ [ 'Alias', 1, 10, 'virtual' ],
    [ 'AliasMatch', 1, 10, 'virtual', 1.3 ],
    [ 'Redirect', 1, 10, 'virtual directory htaccess', 1.2 ],
    [ 'Redirect', 1, 10, 'virtual', '-1.2' ],
    [ 'RedirectMatch', 1, 10, 'virtual', 1.3 ],
    [ 'RedirectTemp', 1, 10, 'virtual directory htaccess', 1.2 ],
    [ 'RedirectPermanent', 1, 10, 'virtual directory htaccess', 1.2 ],
    [ 'ScriptAlias', 1, 11, 'virtual', undef, 10 ],
    [ 'ScriptAliasMatch', 1, 11, 'virtual', 1.3, 10 ] ];
return &make_directives($rv, $_[0], "mod_alias");
}

# alias_input(array, name, title)
sub alias_input
{
local($rv, $len, $i, $from, $to);
$rv = "<table border>\n".
      "<tr $tb> <td><b>$text{'mod_alias_from'}</b></td> <td><b>$text{'mod_alias_to'}</b></td> </tr>\n";
$len = @{$_[0]} + 1;
for($i=0; $i<$len; $i++) {
    $from = $_[0]->[$i]->{'words'}->[0];
    $to = $_[0]->[$i]->{'words'}->[1];
    $rv .= "<tr $cb>\n";
    $rv .= "<td><input name=$_[1]_from_$i size=20 value=\"$from\"></td>\n";
    $rv .= "<td><input name=$_[1]_to_$i size=40 value=\"$to\"></td>\n";
    $rv .= "</tr>\n";
    $rv .= &ui_hidden("$_[1]_old_to_$i", $to);
    }
$rv .= "</table>\n";
return (2, $_[2], $rv);
}

%alias_statmap = ("permanent", 301,  "temp", 302,
          "seeother", 303,   "gone", 410);
$url_regexp = '^(http:\/\/|ftp:\/\/|gopher:|https:\/\/|mailto:|telnet:)(\S+)$';

# alias_status_input(array, name, title)
sub alias_status_input
{
local($rv, $len, $i, $from, $to, $stat);
$rv = "<table border>\n".
      "<tr $tb> <td><b>$text{'mod_alias_from'}</b></td> <td><b>$text{'mod_alias_status'}</b></td> <td><b>$text{'mod_alias_to'}</b></td> </tr>\n";
$len = @{$_[0]} + 1;
for($i=0; $i<$len; $i++) {
    if ($_[0]->[$i]->{'words'}->[0] =~ /^(permanent|temp|seeother|gone|\d+)$/) {
        $stat = $_[0]->[$i]->{'words'}->[0];
        $from = $_[0]->[$i]->{'words'}->[1];
        $to = $_[0]->[$i]->{'words'}->[2];
        if ($alias_statmap{$stat}) { $stat = $alias_statmap{$stat}; }
        }
    else {
        $stat = "";
        $from = $_[0]->[$i]->{'words'}->[0];
        $to = $_[0]->[$i]->{'words'}->[1];
        }
    $rv .= "<tr $cb>\n";
    $rv .= "<td><input name=$_[1]_from_$i size=20 value=\"$from\"></td>\n";
    $rv .= "<td><input name=$_[1]_stat_$i size=4 value=\"$stat\"></td>\n";
    $rv .= "<td><input name=$_[1]_to_$i size=40 value=\"$to\"></td>\n";
    $rv .= "</tr>\n";
    $rv .= &ui_hidden("$_[1]_old_to_$i", $to);
    }
$rv .= "</table>\n";
return (2, $_[2], $rv);
}

# parse_alias(name, title, regexp)
sub parse_alias
{
local($re, @rv, $i, $from, $to);
$re = $_[2];
for($i=0; defined($in{"$_[0]_from_$i"}); $i++) {
    $from = $in{"$_[0]_from_$i"};
    $to = $in{"$_[0]_to_$i"};
    $old_to = $in{"$_[0]_old_to_$i"};
    if ($from !~ /\S/ && $to !~ /\S/) { next; }
    if ($from !~ /^\S+$/) { &error(&text('mod_alias_efrom', $from, $_[1])); }
    if ($to !~ /$re/) { &error(&text('mod_alias_edest', $to, $_[1])); }
    &allowed_doc_dir($to) ||
        $old_to && !&allowed_doc_dir($old_to) ||
        &error(&text('mod_alias_edest2', $to, $_[1]));
    push(@rv, "$from \"$to\"");
    }
return ( \@rv );
}

# parse_alias_status(name, title, regexp)
sub parse_alias_status
{
local($re, @rv, $i, $from, $to, $stat);
$re = $_[2];
for($i=0; defined($in{"$_[0]_from_$i"}); $i++) {
    $from = $in{"$_[0]_from_$i"};
    $to = $in{"$_[0]_to_$i"};
    $old_to = $in{"$_[0]_old_to_$i"};
    $stat = $in{"$_[0]_stat_$i"};
    if ($from !~ /\S/ && $to !~ /\S/) { next; }
    if ($from !~ /^\S+$/) { &error(&text('mod_alias_efrom', $from, $_[1])); }
    if ($stat !~ /^(\d*)$/) { &error(&text('mod_alias_estatus', $stat)); }
    if (!$stat || $stat >= 300 && $stat <= 399) {
        if ($to !~ /$re/) {
            &error(&text('mod_alias_edest', $to, $_[1]));
            }
        &allowed_doc_dir($to) ||
                $old_to && !&allowed_doc_dir($old_to) ||
            &error(&text('mod_alias_edest2', $to, $_[1]));
        }
    else { $to = ""; }
    $to = "\"$to\"" if ($to);
    if ($stat) { push(@rv, "$stat $from $to"); }
    else { push(@rv, "$from $to"); }
    }
return ( \@rv );
}

sub edit_Alias
{
return &alias_input($_[0], "Alias", $text{'mod_alias_alias'});
}
sub save_Alias
{
return &parse_alias("Alias", $text{'mod_alias_alias2'}, '\S');
}

sub edit_AliasMatch
{
return &alias_input($_[0], "AliasMatch", $text{'mod_alias_regexp'});
}
sub save_AliasMatch
{
return &parse_alias("AliasMatch", $text{'mod_alias_regexp2'}, '\S');
}

sub edit_Redirect
{
if ($_[1]->{'version'} >= 1.2) {
    return &alias_status_input($_[0], "Redirect", $text{'mod_alias_redir'});
    }
else { return &alias_input($_[0], "Redirect", $text{'mod_alias_redir'}); }
}
sub save_Redirect
{
if ($_[0]->{'version'} >= 1.2) {
    return &parse_alias_status("Redirect", $text{'mod_alias_redir2'}, $url_regexp);
    }
else { return &parse_alias("Redirect", $text{'mod_alias_redir2'}, $url_regexp); }
}

sub edit_RedirectMatch
{
return &alias_status_input($_[0], "RedirectMatch", $text{'mod_alias_rredir'});
}
sub save_RedirectMatch
{
return &parse_alias_status("RedirectMatch", $text{'mod_alias_rredir2'}, $url_regexp);
}

sub edit_RedirectTemp
{
return &alias_input($_[0], "RedirectTemp", $text{'mod_alias_tredir'});
}
sub save_RedirectTemp
{
return &parse_alias("RedirectTemp", $text{'mod_alias_tredir2'}, $url_regexp);
}

sub edit_RedirectPermanent
{
return &alias_input($_[0], "RedirectPermanent", $text{'mod_alias_predir'});
}
sub save_RedirectPermanent
{
return &parse_alias("RedirectPermanent", $text{'mod_alias_predir2'}, $url_regexp);
}

sub edit_ScriptAlias
{
return &alias_input($_[0], "ScriptAlias", $text{'mod_alias_cgi'});
}
sub save_ScriptAlias
{
return &parse_alias("ScriptAlias", $text{'mod_alias_cgi2'}, '^\S+$');
}

sub edit_ScriptAliasMatch
{
return &alias_input($_[0], "ScriptAliasMatch", $text{'mod_alias_rcgi'});
}
sub save_ScriptAliasMatch
{
return &parse_alias("ScriptAliasMatch", $text{'mod_alias_rcgi2'}, '^\S+$');
}

1;

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