!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/software/   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:     software-lib.pl (7.56 KB)      -rwxr-xr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
# software-lib.pl
# A generalized system for package management on solaris, linux, etc..

BEGIN { push(@INC, ".."); };
use WebminCore;
&init_config();
$heiropen_file = "$module_config_directory/heiropen";

# Use the appropriate function set for whatever package management system
# we are using.
do "$config{package_system}-lib.pl";

if ($config{'update_system'} eq '*') {
    # User specifically doesn't want any
    $update_system = undef;
    }
elsif ($config{'update_system'}) {
    # User-specified system
    $update_system = $config{'update_system'};
    }
else {
    # Guess which update system we are using
    if ($gconfig{'os_type'} eq 'freebsd') {
        $update_system = "ports";
        }
    elsif (&has_command($config{'apt_mode'} ? "aptitude" : "apt-get")) {
        $update_system = "apt";
        }
    elsif (&has_command("yum") && -r "/etc/yum.conf") {
        $update_system = "yum";
        }
    elsif (&has_command("up2date") && &has_command("rhn_check")) {
        $update_system = "rhn";
        }
    elsif (-x "/opt/csw/bin/pkg-get" || &has_command("pkg-get") ||
           -x "/opt/csw/bin/pkgutil" || &has_command("pkgutil")) {
        $update_system = "csw";
        }
    elsif (&has_command("urpmi")) {
        $update_system = "urpmi";
        }
    elsif (&has_command("emerge")) {
        $update_system = "emerge";
        }
    elsif (&has_command("cupdate")) {
        # not done yet!
        }
    }
if ($update_system) {
    do $update_system."-lib.pl";
    $has_update_system = 1;
    }

# uncompress_if_needed(file, disposable)
# If some file needs to be uncompressed or ungzipped, do it and return the
# new temp file path. Otherwise, return the original path.
sub uncompress_if_needed
{
return $_[0] if (&is_readonly_mode());    # don't even bother
open(PFILE, $_[0]);
read(PFILE, $two, 2);
close(PFILE);
if ($two eq "\037\235") {
    if (!&has_command("uncompress")) {
        &unlink_file($_[0]) if ($_[1]);
        &error($text{'soft_euncompress'});
        }
    local $temp = $_[0] =~ /\/([^\/]+)\.Z/i ? &tempname("$1")
                        : &tempname();
    local $out = `uncompress -c $_[0] 2>&1 >$temp`;
    unlink($_[0]) if ($_[1]);
    if ($?) {
        unlink($temp);
        &error(&text('soft_euncmsg', $out));
        }
    return $temp;
    }
elsif ($two eq "\037\213") {
    if (!&has_command("gunzip")) {
        unlink($_[0]) if ($_[1]);
        &error($text{'soft_egzip'});
        }
    local $temp = $_[0] =~ /\/([^\/]+)\.gz/i ? &tempname("$1")
                         : &tempname();
    local $out = `gunzip -c $_[0] 2>&1 >$temp`;
    unlink($_[0]) if ($_[1]);
    if ($?) {
        unlink($temp);
        &error(&text('soft_egzmsg', $out));
        }
    return $temp;
    }
return $_[0];
}

# show_package_info(package, version, [no-installed-message])
sub show_package_info
{
@pinfo = &package_info($_[0], $_[1]);
return () if (!@pinfo);

print &ui_subheading(&text('do_success', $_[0])) if (!$_[2]);
print &ui_table_start($text{'edit_details'}, "width=100%", 4,
              [ "width=20%", undef, "width=20%", undef ]);

# Package description
if ($pinfo[2]) {
    $desc = &html_escape(&entities_to_ascii($pinfo[2]));
    $desc =~ s/\r?\n/&nbsp;<br>/g;
    print &ui_table_row($text{'edit_desc'}, "<tt>$desc</tt>", 3);
    }

# Name
print &ui_table_row($text{'edit_pack'}, &html_escape($pinfo[0]));

# Class, if any
print &ui_table_row($text{'edit_class'},
    $pinfo[1] ? &html_escape($pinfo[1]) : $text{'edit_none'});

# Version number
print &ui_table_row($text{'edit_ver'},
    &html_escape($pinfo[4]));

# Vendor
print &ui_table_row($text{'edit_vend'},
    &html_escape(&entities_to_ascii($pinfo[5])));

# Architecture
print &ui_table_row($text{'edit_arch'},
    &html_escape($pinfo[3]));

# Install date
print &ui_table_row($text{'edit_inst'},
    &html_escape($pinfo[6]));

print &ui_table_end();

return @pinfo;
}

@type_map = (    $text{'soft_reg'}, $text{'soft_dir'},  $text{'soft_spec'},
        $text{'soft_sym'}, $text{'soft_hard'}, $text{'soft_edit'} );

# get_heiropen()
# Returns an array of open categories
sub get_heiropen
{
open(HEIROPEN, $heiropen_file);
local @heiropen = <HEIROPEN>;
chop(@heiropen);
close(HEIROPEN);
return @heiropen;
}

# save_heiropen(&heir)
sub save_heiropen
{
&open_tempfile(HEIR, ">$heiropen_file");
foreach $h (@{$_[0]}) {
    &print_tempfile(HEIR, $h,"\n");
    }
&close_tempfile(HEIR);
}

# missing_install_link(package, description, return, return-desc)
# Returns HTML for installing some package that is missing, from the
# appropriate update system for this OS. Returns undef if automatic installation
# is not possible for some reason.
# Supported package names are :
#    apache
#    sendmail
#    postfix
#    squid
#    procmail
#    samba
#    mysql
#    postgresql
#    clamav
#    spamassassin
sub missing_install_link
{
local ($name, $desc, $return, $returndesc) = @_;
return undef if (!defined(&update_system_resolve));
return undef if (!&foreign_check($module_name));
local $pkg = &update_system_resolve($name);
return undef if (!$pkg);
local ($cpkg) = caller();
local $caller = eval '$'.$cpkg.'::module_name';
return &text('missing_link', $desc, "../$module_name/install_pack.cgi?source=3&update=".&urlize($pkg)."&return=".&urlize($return)."&returndesc=".&urlize($returndesc)."&caller=".&urlize($caller), $text{$update_system."_name"});
}

# update_system_button(field-name, label)
# Returns HTML for a button that opens the update system search window
sub update_system_button
{
local ($name, $label) = @_;
if (defined(&update_system_available) || defined(&update_system_search)) {
    return "<input type=button onClick='window.ifield = form.$name; chooser = window.open(\"../$module_name/find.cgi\", \"chooser\", \"toolbar=no,menubar=no,scrollbars=yes,width=600,height=500\")' value=\"$label\">";
    }
return undef;
}

# compare_versions(ver1, ver2)
# Returns -1 if ver1 is older than ver2, 1 if newer, 0 if same
sub compare_versions
{
local @sp1 = split(/[\.\-\+]/, $_[0]);
local @sp2 = split(/[\.\-\+]/, $_[1]);
for(my $i=0; $i<@sp1 || $i<@sp2; $i++) {
    local $v1 = $sp1[$i];
    local $v2 = $sp2[$i];
    local $comp;
    if ($v1 =~ /^\d+$/ && $v2 =~ /^\d+$/) {
        # Full numeric compare
        $comp = $v1 <=> $v2;
        }
    elsif ($v1 =~ /^\d+\S*$/ && $v2 =~ /^\d+\S*$/) {
        # Numeric followed by string
        $v1 =~ /^(\d+)(\S*)$/;
        local ($v1n, $v1s) = ($1, $2);
        $v2 =~ /^(\d+)(\S*)$/;
        local ($v2n, $v2s) = ($1, $2);
        $comp = $v1n <=> $v2n;
        if (!$comp) {
            # X.rcN is always older than X
            if ($v1s =~ /^rc\d+$/i && $v2s =~ /^\d*$/) {
                $comp = -1;
                }
            elsif ($v1s =~ /^\d*$/ && $v2s =~ /^rc\d+$/i) {
                $comp = 1;
                }
            else {
                $comp = $v1s cmp $v2s;
                }
            }
        }
    elsif ($v1 =~ /^\d+$/ && $v2 !~ /^\d+$/) {
        # Numeric compared to non-numeric - numeric is always higher
        $comp = 1;
        }
    elsif ($v1 !~ /^\d+$/ && $v2 =~ /^\d+$/) {
        # Non-numeric compared to numeric - numeric is always higher
        $comp = -1;
        }
    else {
        # String compare only
        $comp = $v1 cmp $v2;
        }
    return $comp if ($comp);
    }
return 0;
}

# check_package_system()
# Returns an error message if some command needed by the selected package
# management system is missing.
sub check_package_system
{
local $err;
if (defined(&validate_package_system)) {
    $err = &validate_package_system();
    }
if (defined(&list_package_system_commands)) {
    foreach my $c (&list_package_system_commands()) {
        $c =~ s/\s+.*$//;    # Strip off args
        if (!&has_command($c)) {
            $err ||= &text('index_epackagecmd', &package_system(),
                       "<tt>$c</tt>");
            }
        }
    }
return $err;
}

# check_update_system()
# Returns an error message if some command needed by the selected update
# system is missing.
sub check_update_system
{
return undef if (!$update_system);
local $err;
if (defined(&validate_update_system)) {
    $err = &validate_update_system();
    }
if (defined(&list_update_system_commands)) {
    foreach my $c (&list_update_system_commands()) {
        if (!&has_command($c)) {
            $err ||= &text('index_eupdatecmd',
                $text{$update_system.'_name'} || uc($update_system),
                "<tt>$c</tt>");
            }
        }
    }
return $err;
}

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