!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:     slackware-lib.pl (6.95 KB)      -rwxr-xr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
# slackware-lib.pl
# Functions for slackware package management

$package_dir = "/var/log/packages";
%class_map = (  'a', 'Base Slackware system',
        'ap', 'Linux applications',
        'd', 'Program development',
        'e', 'GNU Emacs',
        'extra', 'Extra Slackware packages',
        'f', 'FAQs, howtos, and documentation',
        'gnome', 'GNOME desktop and programs',
        'k', 'Linux kernel source',
        'kde', 'KDE desktop and programs',
        'kdei', 'Language support of KDE',
        'l', 'Libraries',
        'n', 'Networking',
        'pasture', 'Software put to pasture',
        't', 'TeX',
        'testing', 'Software in testing',
        'tcl', 'TcL/Tk',
        'x', 'X Windows',
        'xap', 'X applications',
        'y', 'Classic BSD console games' );
use POSIX;
chop($system_arch = `uname -m`);

sub validate_package_system
{
return -d &translate_filename($package_dir) ? undef :
    &text('slack_edir', "<tt>$package_dir</tt>");
}

# list_packages([package]*)
# Fills the array %packages with a list of all packages
sub list_packages
{
local ($i, $f, @list);
%packages = ( );
opendir(DIR, &translate_filename($package_dir));
local @list = @_ ? @_ : grep { !/^\./ } readdir(DIR);
$i = 0;
foreach $f (@list) {
    $packages{$i,'name'} = $f;
    $packages{$i,'class'} = $text{'slack_unclass'};
    &open_tempfile(PKG, "$package_dir/$f");
    while(<PKG>) {
        if (/^PACKAGE LOCATION:\s+disk([a-z]+)\d+/i ||
            /^PACKAGE LOCATION:\s+\S+\/([a-z]+)\/[^\/]+$/i) {
            $packages{$i,'class'} = $class_map{$1} ||
                        $text{'slack_unclass'};
            }
        elsif (/^PACKAGE DESCRIPTION:/i) {
            local $desc = <PKG>;
            $desc =~ s/^\S+:\s+//;
            $desc =~ s/\n//;
            $packages{$i,'desc'} = $desc;
            }
        }
    close(PKG);
    $i++;
    }
closedir(DIR);
return $i;
}

# package_info(package)
# Returns an array of package information in the order
#  name, class, description, arch, version, vendor, installtime
sub package_info
{
local @rv = ( $_[0], $text{'slack_unclass'}, $text{'slack_unknown'},
          $system_arch, $text{'slack_unknown'}, "Slackware" );
local @st = stat(&translate_filename("$package_dir/$_[0]"));
$rv[6] = ctime($st[9]);
&open_readfile(PKG, "$package_dir/$_[0]");
while(<PKG>) {
    if (/^PACKAGE LOCATION:\s+disk([a-z]+)\d+/i) {
        $rv[1] = $class_map{$1};
        }
    elsif (/^PACKAGE DESCRIPTION:/i) {
        $rv[2] = "";
        while(<PKG>) {
            last if (/^FILE LIST/i);
            s/^\S+: *//;
            if (!$rv[2] && /([0-9][0-9\.]*)/) {
                $rv[4] = $1;
                }
            $rv[2] .= $_;
            }
        $rv[2] =~ s/\s+$//;
        }
    }
close(PKG);
return @rv;
}

# check_files(package)
# Fills in the %files array with information about the files belonging
# to some package. Values in %files are  path type user group mode size error
sub check_files
{
local $i = 0;
local $file;
&open_readfile(PKG, "$package_dir/$_[0]");
while(<PKG>) {
    last if (/^FILE LIST:/i);
    }
while($file = <PKG>) {
    $file =~ s/\r|\n//g;
    next if ($file eq "./");
    $file = '/'.$file;
    local $real = &translate_filename($file);
    $files{$i,'path'} = $file;
    local @st = stat($real);
    if (@st) {
        $files{$i,'type'} = -l $real ? 3 :
                    -d $real ? 1 : 0;
        $files{$i,'user'} = getpwuid($st[4]);
        $files{$i,'group'} = getgrgid($st[5]);
        $files{$i,'mode'} = sprintf "%o", $st[2] & 07777;
        $files{$i,'size'} = $st[7];
        $files{$i,'link'} = readlink($file);
        }
    else {
        $files{$i,'type'} = $file =~ /\// ? 1 : 0;
        $files{$i,'user'} = $files{$i,'group'} =
         $files{$i,'mode'} = $files{$i,'size'} = $text{'slack_unknown'};
        $files{$i,'error'} = $text{'slack_missing'};
        }
    $i++;
    }
return $i;
}

# package_files(package)
# Returns a list of all files in some package
sub package_files
{
local ($pkg) = @_;
local @rv;
&open_readfile(PKG, "$package_dir/$_[0]");
while(<PKG>) {
    last if (/^FILE LIST:/i);
    }
while(my $file = <PKG>) {
    $file =~ s/\r|\n//g;
    next if ($file eq "./");
    $file = '/'.$file;
    push(@rv, $file);
    }
close(PKG);
return @rv;
}

# installed_file(file)
# Given a filename, fills %file with details of the given file and returns 1.
# If the file is not known to the package system, returns 0
# Usable values in %file are  path type user group mode size packages
sub installed_file
{
local ($f, $file, @pkgin);
opendir(DIR, &translate_filename($package_dir));
while($f = readdir(DIR)) {
    next if ($f =~ /^\./);
    &open_readfile(PKG, "$package_dir/$f");
    while(<PKG>) {
        last if (/^FILE LIST:/);
        }
    while($file = <PKG>) {
        next if ($file eq "./");
        $file =~ s/[\/\r\n]+$//;
        $file = '/'.$file;
        if ($_[0] eq $file) {
            # found it!
            push(@pkgin, $f);
            last;
            }
        }
    close(PKG);
    }
closedir(DIR);
if (@pkgin) {
    local $real = &translate_filename($_[0]);
    local @st = stat($real);
    $file{'path'} = $_[0];
    $file{'type'} = -l $real ? 3 :
            -d $real ? 1 : 0;
    $file{'user'} = getpwuid($st[4]);
    $file{'group'} = getgrgid($st[5]);
    $file{'mode'} = sprintf "%o", $st[2] & 07777;
    $file{'size'} = $st[7];
    $file{'link'} = readlink($real);
    $file{'packages'} = join(" ", @pkgin);
    return 1;
    }
else {
    return 0;
    }
}

# is_package(file)
sub is_package
{
local $count;
local $qm = quotemeta($_[0]);
if ($_[0] =~ /\.txz$/) {
    &open_execute_command(TAR, "tar tf $qm 2>&1", 1, 1);
    }
else {
    &open_execute_command(TAR, "gunzip -c $qm | tar tf - 2>&1", 1, 1);
    }
while(<TAR>) {
    $count++ if (/^[^\/\s]\S+/);
    }
close(TAR);
return $count < 2 ? 0 : 1;
}

# file_packages(file)
# Returns a list of all packages in the given file, in the form
#  package description
sub file_packages
{
if ($_[0] !~ /^(.*)\/(([^\/]+)(\.tgz|\.txz|\.tar\.gz))$/) {
    return "$_[0] $text{'slack_unknown'}";
    }
local ($dir, $file, $base) = ($1, $2, $3);
local $diskfile;
opendir(DIR, &translate_filename($dir));
while($f = readdir(DIR)) {
    if ($f =~ /^disk\S+\d+$/ || $f eq 'package_descriptions') {
        # found the slackware disk file
        $diskfile = "$dir/$f";
        last;
        }
    }
closedir(DIR);
return "$base $text{'slack_unknown'}" if (!$diskfile);

# read the disk file
local $desc;
&open_readfile(DISK, $diskfile);
while(<DISK>) {
    if (/^$base:\s*(.*)/) {
        $desc = $1;
        last;
        }
    }
close(DISK);
return $desc ? "$base $desc" : "$base $text{'slack_unknown'}";
}

# install_options(file, package)
# Outputs HTML for choosing install options
sub install_options
{
print &ui_table_row($text{'slack_root'},
    &ui_textbox("root", "/", 50)." ".
    &file_chooser_button("root", 1), 3);
}

# install_package(file, package)
# Installs the package in the given file, with options from %in
sub install_package
{
local $in = $_[2] ? $_[2] : \%in;
return $text{'slack_eroot'} if (!-d $in->{'root'});
$ENV{'ROOT'} = $in->{'root'};
local $out;
local $qm = quotemeta($_[0]);
if (&has_command("upgradepkg") &&
    -r &translate_filename("$package_dir/$_[1]")) {
    # Try to upgrade properly
    $out = &backquote_logged("upgradepkg $qm 2>&1");
    }
else {
    # Just install
    $out = &backquote_logged("installpkg $qm 2>&1");
    }
if ($?) {
    return "<pre>$out</pre>";
    }
return undef;
}

# delete_package(package)
# Totally remove some package
sub delete_package
{
local $qm = quotemeta($_[0]);
local $out = &backquote_logged("removepkg $qm 2>&1");
if ($?) { return "<pre>$out</pre>"; }
return undef;
}

sub package_system
{
return $text{'slack_manager'};
}

sub package_help
{
return "installpkg removepkg";
}

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