!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/fsdump/   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:     solaris-lib.pl (6.33 KB)      -rwxr-xr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
# solaris-lib.pl

# supported_filesystems()
# Returns a list of filesystem types on which dumping is supported
sub supported_filesystems
{
local @rv;
push(@rv, "ufs") if (&has_command("ufsdump"));
return @rv;
}

# multiple_directory_support(fs)
# Returns 1 if some filesystem dump supports multiple directories
sub multiple_directory_support
{
return $_[0] eq "ufs";
}

# dump_form(&dump)
sub dump_form
{
# Display destination options
print &ui_table_row(&hlink($text{'dump_dest'}, "dest"),
   &ui_radio("mode", $_[0]->{'host'} ? 1 : 0,
    [ [ 0, $text{'dump_file'}." ".
           &ui_textbox("file", $_[0]->{'file'}, 50).
           " ".&file_chooser_button("file")."<br>" ],
      [ 1, &text('dump_host',
             &ui_textbox("host", $_[0]->{'host'}, 15),
             &ui_textbox("huser", $_[0]->{'huser'}, 8),
             &ui_textbox("hfile", $_[0]->{'hfile'}, 20)) ] ]), 3);
}

sub dump_options_form
{
local ($dump, $tds) = @_;

print &ui_table_row(&hlink($text{'dump_update'},"update"),
            &ui_yesno_radio("update", int($_[0]->{'update'})),
            1, $tds);

print &ui_table_row(&hlink($text{'dump_verify'},"verify"),
            &ui_yesno_radio("verify", int($_[0]->{'verify'})),
            1, $tds);

print &ui_table_row(&hlink($text{'dump_level'},"level"),
            &ui_select("level", int($_[0]->{'level'}),
            [ map { [ $_, $text{'dump_level_'.$_} ] }
                  (0 .. 9) ]), 1, $tds);

print &ui_table_row(&hlink($text{'dump_offline'},"offline"),
            &ui_yesno_radio("offline", int($_[0]->{'offline'})),
            1, $tds);
}

# parse_dump(&dump)
sub parse_dump
{
# Parse common options
if ($in{'mode'} == 0) {
    $in{'file'} =~ /\S/ || &error($text{'dump_efile'});
    $_[0]->{'file'} = $in{'file'};
    delete($_[0]->{'host'});
    delete($_[0]->{'huser'});
    delete($_[0]->{'hfile'});
    }
else {
    &to_ipaddress($in{'host'}) ||
      &to_ip6address($in{'host'}) ||
        &error($text{'dump_ehost'});
    $_[0]->{'host'} = $in{'host'};
    $in{'huser'} =~ /^\S+$/ || &error($text{'dump_ehuser'});
    $_[0]->{'huser'} = $in{'huser'};
    $in{'hfile'} || &error($text{'dump_ehfile'});
    $_[0]->{'hfile'} = $in{'hfile'};
    delete($_[0]->{'file'});
    }

$_[0]->{'update'} = $in{'update'};
$_[0]->{'verify'} = $in{'verify'};
$_[0]->{'level'} = $in{'level'};
$_[0]->{'offline'} = $in{'offline'};
}

# execute_dump(&dump, filehandle, escape, background-mode, [time])
# Executes a dump and displays the output
sub execute_dump
{
local $fh = $_[1];
local $cmd = "ufsdump $_[0]->{'level'}";
$cmd .= "u" if ($_[0]->{'update'});
$cmd .= "v" if ($_[0]->{'verify'});
$cmd .= "o" if ($_[0]->{'offline'});
if ($_[0]->{'huser'}) {
    $cmd .= "f '$_[0]->{'huser'}\@$_[0]->{'host'}:".
        &date_subs($_[0]->{'hfile'}, $_[4])."'";
    }
elsif ($_[0]->{'host'}) {
    $cmd .= "f '$_[0]->{'host'}:".&date_subs($_[0]->{'hfile'}, $_[4])."'";
    }
else {
    $cmd .= "f '".&date_subs($_[0]->{'file'}, $_[4])."'";
    }
$cmd .= " $_[0]->{'extra'}" if ($_[0]->{'extra'});
local @dirs = $_[0]->{'tabs'} ? split(/\t+/, $_[0]->{'dir'})
                  : split(/\s+/, $_[0]->{'dir'});
$cmd .= " ".join(" ", map { "'$_'" } @dirs);

&system_logged("sync");
sleep(1);
&additional_log('exec', undef, $cmd);
&open_execute_command(CMD, "$cmd 2>&1 </dev/null", 1);
while(<CMD>) {
    if ($_[2]) {
        print $fh &html_escape($_);
        }
    else {
        print $fh $_;
        }
    }
close(CMD);
return $? ? 0 : 1;
}

# dump_dest(&dump)
sub dump_dest
{
if ($_[0]->{'file'}) {
    return "<tt>".&html_escape($_[0]->{'file'})."</tt>";
    }
elsif ($_[0]->{'huser'}) {
    return "<tt>".&html_escape("$_[0]->{'huser'}\@$_[0]->{'host'}:$_[0]->{'hfile'}")."</tt>";
    }
else {
    return "<tt>".&html_escape("$_[0]->{'host'}:$_[0]->{'hfile'}")."</tt>";
    }
}

# missing_restore_command(filesystem)
sub missing_restore_command
{
return &has_command("ufsrestore") ? undef : "ufsrestore";
}

# restore_form(filesystem)
sub restore_form
{
# Restore from
print &ui_table_row(&hlink($text{'restore_src'}, "rsrc"),
   &ui_radio("mode", $_[1]->{'host'} ? 1 : 0,
    [ [ 0, $text{'dump_file'}." ".
           &ui_textbox("file", $_[1]->{'file'}, 50).
           " ".&file_chooser_button("file")."<br>" ],
      [ 1, &text('dump_host',
             &ui_textbox("host", $_[1]->{'host'}, 15),
             &ui_textbox("huser", $_[1]->{'huser'}, 8),
             &ui_textbox("hfile", $_[1]->{'hfile'}, 20)) ] ]), 3, $tds);

# Files to restore
print &ui_table_row(&hlink($text{'restore_files'},"rfiles"),
          &ui_opt_textbox("files", undef, 40, $text{'restore_all'},
                  $text{'restore_sel'}), 3, $tds);

# Target dir
print &ui_table_row(&hlink($text{'restore_dir'},"rdir"),
          &ui_textbox("dir", undef, 50)." ".
          &file_chooser_button("dir", 1), 3, $tds);

# Show only
print &ui_table_row(&hlink($text{'restore_test'},"rtest"),
          &ui_yesno_radio("test", 1), 1, $tds);
}

# parse_restore(filesystem)
# Parses inputs from restore_form() and returns a command to be passed to
# restore_backup()
sub parse_restore
{
local $cmd;
$cmd = "ufsrestore";
$cmd .= ($in{'test'} ? " t" : " x");
if ($in{'mode'} == 0) {
    $in{'file'} || &error($text{'restore_efile'});
    $cmd .= "f '$in{'file'}'";
    }
else {
    &to_ipaddress($in{'host'}) ||
        &to_ip6address($in{'host'}) ||
        &error($text{'restore_ehost'});
    $in{'huser'} =~ /^\S*$/ || &error($text{'restore_ehuser'});
    $in{'hfile'} || &error($text{'restore_ehfile'});
    if ($in{'huser'}) {
        $cmd .= "f '$in{'huser'}\@$in{'host'}:$in{'hfile'}'";
        }
    else {
        $cmd .= "f '$in{'host'}:$in{'hfile'}'";
        }
    }

$cmd .= " $in{'extra'}" if ($in{'extra'});
if (!$in{'files_def'}) {
    $in{'files'} || &error($text{'restore_efiles'});
    $cmd .= " $in{'files'}";
    }
-d $in{'dir'} || &error($text{'restore_edir'});

return $cmd;
}

# restore_backup(filesystem, command)
# Restores a backup based on inputs from restore_form(), and displays the results
sub restore_backup
{
&additional_log('exec', undef, $_[1]);

&foreign_require("proc", "proc-lib.pl");
local ($fh, $fpid) = &foreign_call("proc", "pty_process_exec", "cd '$in{'dir'}' ; $_[1]");
local $donevolume;
while(1) {
    local $rv = &wait_for($fh, "(next volume #)", "(set owner.mode for.*\\[yn\\])", "(Directories already exist, set modes anyway. \\[yn\\])", "((.*)\\[yn\\])", "(.*\\n)");
    last if ($rv < 0);
    print &html_escape($matches[1]);
    if ($rv == 0) {
        if ($donevolume++) {
            return $text{'restore_evolume'};
            }
        else {
            syswrite($fh, "1\n", 2);
            }
        }
    elsif ($rv == 1 || $rv == 2) {
        syswrite($fh, "n\n", 2);
        }
    elsif ($rv == 3) {
        return &text('restore_equestion',
                 "<tt>$matches[2]</tt>");
        }
    }
close($fh);
waitpid($fpid, 0);
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.0068 ]--