!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/heartbeat/   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:     heartbeat-lib.pl (4.78 KB)      -rwxr-xr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
# heartbeat-lib.pl
# Common functions for heartbeat tool configuration

BEGIN { push(@INC, ".."); };
use WebminCore;
&init_config();

$ha_cf = $config{'ha_cf'} ? $config{'ha_cf'} : "$config{'ha_dir'}/ha.cf";
$haresources = $config{'haresources'} ? $config{'haresources'}
                      : "$config{'ha_dir'}/haresources";
$authkeys = $config{'authkeys'} ? $config{'authkeys'}
                : "$config{'ha_dir'}/authkeys";
$resource_d = $config{'resource_d'} ? $config{'resource_d'}
                    : "$config{'ha_dir'}/resource.d";

open(VERSION, "$module_config_directory/version");
chop($heartbeat_version = <VERSION>);
close(VERSION);

sub get_ha_config
{
local @rv;
local $lnum = 0;
open(CONF, $ha_cf);
while(<CONF>) {
    s/\s+$//;
    s/#.*$//;
    if (/^(\S+)\s+(\S.*)$/) {
        push(@rv, { 'name' => $1,
                'value' => $2,
                'line' => $lnum });
        }
    $lnum++;
    }
close(CONF);
return @rv;
}

# find(name, &config)
sub find
{
local @rv;
foreach $c (@{$_[1]}) {
    if ($c->{'name'} eq $_[0]) {
        push(@rv, $c->{'value'});
        }
    }
return wantarray ? @rv : @rv==0 ? undef : $rv[0];
}

# find_struct(name, &config)
sub find_struct
{
local @rv;
foreach $c (@{$_[1]}) {
    if ($c->{'name'} eq $_[0]) {
        push(@rv, $c);
        }
    }
return wantarray ? @rv : @rv==0 ? undef : $rv[0];
}

# save_directive(&config, name, &values)
sub save_directive
{
local $lref = &read_file_lines($ha_cf);
local @old = &find_struct($_[1], $_[0]);
for($i=0; $i<@old || $i<@{$_[2]}; $i++) {
    if ($i >= @old) {
        # adding a directive
        push(@$lref, "$_[1]\t$_[2]->[$i]");
        push(@{$_[0]}, { 'name' => $_[1],
                 'value' => $_[2]->[$i],
                 'line' => scalar(@$lref)-1 });
        }
    elsif ($i >= @{$_[2]}) {
        # removing a directive
        splice(@$lref, $old[$i]->{'line'}, 1);
        splice(@{$_[0]}, &indexof($old[$i], @{$_[0]}), 1);
        &renumber($_[0], $old[$i]->{'line'}, -1);
        }
    else {
        # updating a directive
        splice(@$lref, $old[$i]->{'line'}, 1, "$_[1]\t$_[2]->[$i]");
        $old[$i]->{'value'} = $_[2]->[$i];
        }
    }
}

# renumber(&config, line, offset)
sub renumber
{
foreach $c (@{$_[0]}) {
    if ($c->{'line'} > $_[1]) {
        $c->{'line'} += $_[2];
        }
    }
}

sub list_resources()
{
local @rv;
local $lnum = 0;
open(RES, $haresources);
while(<RES>) {
    s/\s+$//;
    s/#.*$//;
    local @res = split(/\s+/, $_);
    if (@res > 0) {
        local $r = { 'node' => shift(@res),
                 'line' => $lnum };
        foreach $v (@res) {
            if ($v =~ /^[0-9\.\/]+$/) {
                push(@{$r->{'ips'}}, $v);
                }
            elsif ($v =~ /^IPaddr::(\S+)$/) {
                push(@{$r->{'ips'}}, $1);
                }
            else {
                push(@{$r->{'servs'}}, $v);
                }
            }
        push(@rv, $r);
        }
    $lnum++;
    }
close(RES);
return @rv;
}

sub create_resource
{
local $lref = &read_file_lines($haresources);
push(@$lref, &resource_line($_[0]));
&flush_file_lines();
}

sub modify_resource
{
local $lref = &read_file_lines($haresources);
$lref->[$_[0]->{'line'}] = &resource_line($_[0]);
&flush_file_lines();
}

sub delete_resource
{
local $lref = &read_file_lines($haresources);
splice(@$lref, $_[0]->{'line'}, 1);
&flush_file_lines();
}

sub resource_line
{
local @l = ( $_[0]->{'node'} );
push(@l, @{$_[0]->{'ips'}});
push(@l, @{$_[0]->{'servs'}});
return join(" ", @l);
}

sub get_auth_config
{
local $rv;
open(AUTH, $authkeys);
while(<AUTH>) {
    s/\r|\n//g;
    s/#.*$//;
    local @l = split(/\s+/, $_);
    if (@l > 0) {
        $rv->{shift(@l)} = \@l;
        }
    }
close(AUTH);
return $rv;
}

sub save_auth_config
{
local %auth;
&open_tempfile(AUTH, ">$authkeys");
if ($_[0]->{'auth'}) {
    &print_tempfile(AUTH, "auth ",join(" ", @{$_[0]->{'auth'}}),"\n");
    map { $auth{$_}++ } @{$_[0]->{'auth'}};
    }
foreach $k (keys %{$_[0]}) {
    if ($k ne 'auth') {
        &print_tempfile(AUTH, "# ") if (!$auth{$k});
        &print_tempfile(AUTH, "$k ",join(" ", @{$_[0]->{$k}}),"\n");
        }
    }
&close_tempfile(AUTH);
}

# add two more functions (Christof Amelunxen, 22.08.2003)
sub check_status_resource {
    @ips = @_;
    $ifconfig="/sbin/ifconfig";
    @lines=qx|$ifconfig| or die("ifconfig does not seem to work: ".$!);
    foreach(@lines){
        if(/inet addr:([\d.]+)/){ 
        push(@realips,$1);
    }
    }
    $iplist = join (' ',@realips);
    foreach my $ip (@ips) {
        $ip =~ s/\/.*//;
        return 0 unless ( $iplist =~ m/$ip/);
    }        
    return 1;
}

sub get_resource {
    foreach(@_) {
        system("$config{req_resource_cmd} $_");
    }
}    

# version_atleast(v1, v2, v3)
sub version_atleast
{
local @vsp = split(/\./, $heartbeat_version);
local $i;
for($i=0; $i<@vsp || $i<@_; $i++) {
    return 0 if ($vsp[$i] < $_[$i]);
    return 1 if ($vsp[$i] > $_[$i]);
    }
return 1;    # same!
}

# apply_configuration()
# Apply the heartbeat configuration, and return undef on success or an error
# message on failure
sub apply_configuration
{
if ($config{'apply_cmd'}) {
    $out = &backquote_logged("$config{'apply_cmd'} 2>&1 </dev/null");
    if ($?) {
        return $out;
        }
    }
else {
    local $pid = &check_pid_file($config{'pid_file'});
    if ($pid) {
        kill(HUP, $pid);
        }
    else {
        return $text{'apply_epid'};
        }
    }
return undef;
}

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.012 ]--