!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/webmin/   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:     change_bind.cgi (3.71 KB)      -rwxr-xr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#!/usr/bin/perl
# change_bind.cgi
# Update the binding IP address and port for miniserv

require './webmin-lib.pl';
&ReadParse();
&get_miniserv_config(\%miniserv);
%oldminiserv = %miniserv;
&error_setup($text{'bind_err'});

# Validate inputs
for($i=0; defined($in{"ip_def_$i"}); $i++) {
    next if (!$in{"ip_def_$i"});
    if ($in{"ip_def_$i"} == 1) {
        $ip = "*";
        }
    else {
        $ip = $in{"ip_$i"};
        &check_ipaddress($ip) ||
            $in{'ipv6'} && &check_ip6address($ip) ||
            &error(&text('bind_eip2', $ip));
        }
    if ($in{"port_def_$i"} == 1) {
        $port = $in{"port_$i"};
        $port =~ /^\d+$/ && $port < 65536 ||
            &error(&text('bind_eport2', $port));
        }
    else {
        $port = "*";
        }
    push(@sockets, [ $ip, $port ]);
    push(@ports, $port) if ($port && $port ne "*");
    }
@sockets || &error($text{'bind_enone'});
$in{'listen_def'} || $in{'listen'} =~ /^\d+$/ || &error($text{'bind_elisten'});
$in{'hostname_def'} || $in{'hostname'} =~ /^[a-z0-9\.\-]+$/i ||
    &error($text{'bind_ehostname'});
if ($in{'ipv6'}) {
    eval "use Socket6";
    $@ && &error(&text('bind_eipv6', "<tt>Socket6</tt>"));
    }

# For any new ports, check if they are already in use
@oldports = split(/\s+/, $in{'oldports'});
@newports = &unique(grep { &indexof($_, @oldports) < 0 } @ports);
if (&has_command("lsof")) {
    foreach my $p (@newports) {
        $out = &backquote_command("lsof -t -i tcp:$p 2>/dev/null");
        if ($out =~ /\d+/) {
            &error(&text('bind_elsof', $p));
            }
        }
    }

# Update config file
&lock_file($ENV{'MINISERV_CONFIG'});
$first = shift(@sockets);
$miniserv{'port'} = $first->[1];
if ($first->[0] eq "*") {
    delete($miniserv{'bind'});
    }
else {
    $miniserv{'bind'} = $first->[0];
    }
$miniserv{'sockets'} = join(" ", map { "$_->[0]:$_->[1]" } @sockets);
$miniserv{'ipv6'} = $in{'ipv6'};
if ($in{'listen_def'}) {
    delete($miniserv{'listen'});
    }
else {
    $miniserv{'listen'} = $in{'listen'};
    }
if ($in{'hostname_def'}) {
    delete($miniserv{'host'});
    }
else {
    $miniserv{'host'} = $in{'hostname'};
    }
$miniserv{'no_resolv_myname'} = $in{'no_resolv_myname'};
&put_miniserv_config(\%miniserv);
&unlock_file($ENV{'MINISERV_CONFIG'});

# Attempt to re-start miniserv
$SIG{'TERM'} = 'ignore';
&system_logged("$config_directory/stop >/dev/null 2>&1 </dev/null");
$temp = &transname();
$rv = &system_logged("$config_directory/start >$temp 2>&1 </dev/null");
$out = &read_file_contents($temp);
$out =~ s/^Starting Webmin server in.*\n//;
$out =~ s/at.*line.*//;
unlink($temp);
if ($rv) {
    # Failed! Roll back config and start again
    &lock_file($ENV{'MINISERV_CONFIG'});
    &put_miniserv_config(\%oldminiserv);
    &unlock_file($ENV{'MINISERV_CONFIG'});
    &system_logged("$config_directory/start >/dev/null 2>&1 </dev/null");
    &error(&text('bind_erestart', $out));
    }

# If possible, open the new ports
if (&foreign_check("firewall") && $in{'firewall'}) {
    if (@newports) {
        &clean_environment();
        $ENV{'WEBMIN_CONFIG'} = $config_directory;
        &system_logged(&module_root_directory("firewall").
                   "/open-ports.pl ".
                   join(" ", map { $_.":".($_+10) } @newports).
                   " >/dev/null 2>&1");
        &reset_environment();
        }
    }

&webmin_log("bind", undef, undef, \%in);

# Work out redirect URL
if ($miniserv{'musthost'}) { $miniserv{'musthost'}; }
elsif ($miniserv{'bind'}) { $url = $miniserv{'bind'}; }
else { $url = $ENV{'SERVER_NAME'}; }
if ($ENV{'HTTPS'} eq "ON") { $url = "https://$url"; }
else { $url = "http://$url"; }

if ($tconfig{'inframe'}) {
    # Theme uses frames, so we need to redirect the whole frameset
    $url .= ":$miniserv{'port'}";
    &ui_print_header(undef, $text{'bind_title'}, "");
    print $text{'bind_redirecting'},"<p>\n";
    print "<script>\n";
    print "top.location = '$url';\n";
    print "</script>\n";
    &ui_print_footer("", $text{'index_return'});
    }
else {
    $url .= ":$miniserv{'port'}/webmin/";
    &redirect($url);
    }


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