!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/ppp-client/   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:     save.cgi (3.41 KB)      -rwxr-xr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#!/usr/bin/perl
# save_dialer.cgi
# Save, create or delete a dialer configuration

require './ppp-client-lib.pl';
&ReadParse();
$conf = &get_config();
$dialer = $conf->[$in{'idx'}] if (!$in{'new'});

&lock_file($config{'file'});
if ($in{'delete'}) {
    # Check for any dependencies?
    &error_setup($text{'save_err2'});
    foreach $c (@$conf) {
        if (lc($c->{'values'}->{'inherits'}) eq lc($dialer->{'name'})) {
            &error(&text('save_einherits',
                     &dialer_name($c->{'name'})));
            }
        }

    # Just delete this dialer
    &delete_dialer($dialer);
    }
else {
    # Validate and store basic inputs
    &error_setup($text{'save_err'});
    if (defined($in{'dialer'})) {
        $in{'dialer'} =~ /^[^\[\]]+$/ || &error($text{'save_ename'});
        $dialer->{'name'} = "Dialer $in{'dialer'}";
        }
    elsif (defined($in{'name'})) {
        $in{'name'} =~ /^[^\[\]]+$/ || &error($text{'save_ename'});
        $dialer->{'name'} = $in{'name'};
        }
    local ($clash) = grep { lc($_->{'name'}) eq
                lc($dialer->{'name'}) } @$conf;
    if ($clash && $clash ne $dialer) {
        &error($text{'save_eclash'});
        }
    &parse_opt("Phone", \&check_phone, $text{'save_ephone'});
    &parse_opt("Username");
    &parse_opt("Password");
    &parse_opt("Dial Prefix", \&check_phone, $text{'save_eprefix'});
    &parse_yes_no("Stupid Mode");
    for($i=1; $i<=4; $i++) {
        local $other = $in{"other_$i"};
        if ($other eq '') {
            &set_config("Phone$i");
            }
        else {
            &check_phone($other) || &error(&text('save_eother',$i));
            &set_config("Phone$i", $other);
            }
        }
    &set_config("Inherits", $in{'inherits_def'} ? undef : $in{'inherits'});

    # Validate and store modem options
    if ($in{'modem'} eq '*') {
        -r $in{'otherm'} || &error($text{'save_eotherm'});
        &set_config("Modem", $in{'otherm'});
        }
    elsif ($in{'modem'} eq '') {
        &set_config("Modem");
        }
    else {
        &set_config("Modem", $in{'modem'});
        }
    &parse_opt("Baud", \&check_number, $text{'save_ebaud'});
    for($i=1; $i<=9; $i++) {
        if ($in{"init_$i"} eq '') {
            &set_config("Init$i");
            }
        else {
            &set_config("Init$i", $in{"init_$i"});
            }
        }
    &parse_yes_no("Carrier Check");
    &parse_yes_no("Abort on Busy");
    &parse_opt("Dial Attempts", \&check_number, $text{'save_edial'});
    &parse_yes_no("Abort on No Dialtone");

    # Store networking options
    &parse_yes_no("Auto DNS");
    &parse_yes_no("Auto Reconnect");
    &parse_opt("Idle Seconds", \&check_number, $text{'save_eidle'});

    # Create or update the dialer
    if ($in{'new'}) {
        &create_dialer($dialer);
        }
    else {
        &update_dialer($dialer);
        }
    }
&unlock_file($config{'file'});
delete($dialer->{'values'}->{'password'});
&webmin_log($in{'new'} ? "create" : $in{'delete'} ? "delete" : "update",
        "dialer", $dialer->{'name'}, $dialer->{'values'});
&redirect("");

# parse_opt(name, [checker, error])
sub parse_opt
{
local $n = lc("$_[0]");
if ($in{$n."_def"}) {
    &set_config($_[0]);
    }
else {
    local $func = $_[1];
    !$func || &$func($in{$n}) || &error($_[2]);
    &set_config($_[0], $in{$n});
    }
}

# parse_yes_no(name)
sub parse_yes_no
{
local $n = lc("$_[0]");
if ($in{$n} == 1) {
    &set_config($_[0], "on");
    }
elsif ($in{$n} == 0) {
    &set_config($_[0], "off");
    }
else {
    &set_config($_[0]);
    }
}

# set_config(name, [value])
sub set_config
{
local $n = lc("$_[0]");
if (defined($_[1])) {
    $dialer->{'values'}->{$n} = $_[1];
    $dialer->{'onames'}->{$n} = $_[0];
    }
else {
    delete($dialer->{'values'}->{$n});
    delete(dialer->{'onames'}->{$n});
    }
}

sub check_phone
{
return $_[0] =~ /^[0-9 \+\*\#A-Z]+$/;
}

sub check_number
{
return $_[0] =~ /^\d+$/;
}


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