!C99Shell v. 1.0 pre-release build #16!

Software: Apache/2.0.54 (Fedora). PHP/5.0.4 

uname -a: Linux mina-info.me 2.6.17-1.2142_FC4smp #1 SMP Tue Jul 11 22:57:02 EDT 2006 i686 

uid=48(apache) gid=48(apache) groups=48(apache)
context=system_u:system_r:httpd_sys_script_t
 

Safe-mode: OFF (not secure)

/home/mnnews/public_html/cgi-bin/mail/   drwxr-xr-x
Free 3.96 GB of 27.03 GB (14.64%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     folder.pl (13.1 KB)      -rwxr-xr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#!/usr/bin/perl
###########################################################################
# folder.pl - Folder features
###########################################################################
require "common.pl";
mkdir $folderdir, 0700;

if ($button eq $cancel_button) {
&cancel;
} elsif ($remip ne $fromip) {
&diffip;

} elsif ($button eq $folder_button) {
###########################################################################
# Display the users folder list and list options
###########################################################################
&print_header;
if ($btns eq 'top' || $btns eq 'both' ) { &print_options; }
($username, $junk) = split (/ /, $sessionid);
$index = $folderdir . "/" . $username . "-index";
dbmopen(%index, $index, 0600) || die "Error opening db $index";
print $query->startform($method, $folder_pl, $CGI::URL_ENCODED);
print $query->hidden('SESSIONID', $sid);
@folder_list = keys %index;
print $query->scrolling_list('FOLDER', \@folder_list, '', 15, '', \%index);
print "<TABLE WIDTH=\"100%\" BORDER=\"0\">\n";
print "<TR><TD WIDTH=\"25%\" ALIGN=\"LEFT\" VALIGN=\"TOP\">\n";
print $query->submit('BUTTON', $openfolder_button);
print "</TD><TD WIDTH=\"25%\" ALIGN=\"CENTER\" VALIGN=\"TOP\">\n";
print $query->submit('BUTTON', $newfolder_button);
print "</TD><TD WIDTH=\"25%\" ALIGN=\"CENTER\" VALIGN=\"TOP\">\n";
print $query->submit('BUTTON', $renfolder_button);
print "</TD><TD WIDTH=\"25%\" ALIGN=\"RIGHT\" VALIGN=\"TOP\">\n";
print $query->submit('BUTTON', $delfolder_button);
print "</TD></TR></TABLE>";
print $query->endform;
dbmclose(%index);
if ($btns eq 'bottom' || $btns eq 'both') { &print_options; }

} elsif ($button eq $newfolder_button) {
###########################################################################
# Create a new folder
###########################################################################
&print_header;
print $query->startform($method, $folder_pl, $CGI::URL_ENCODED);
print $query->hidden('SESSIONID', $sid);
print "<TABLE BORDER=\"0\">\n";
print "<TR><TD>$foldname_input</TD><TD><INPUT NAME=FOLDER SIZE=24></td></tr>\n";
print "</TABLE>\n";
print $query->submit('BUTTON', $add_button);
print $query->submit('BUTTON', $cancel_button);
print $query->reset($reset_button);
print $query->endform;

} elsif ($button eq $delfolder_button) {
###########################################################################
# Ask if they are sure they want to delete
###########################################################################
&print_header;
print $folder_del_ask_info;
print $query->startform($method, $folder_pl, $CGI::URL_ENCODED);
print $query->hidden('SESSIONID', $sid);
print $query->hidden('FOLDER', $folder);
print $query->submit('BUTTON', $yes_button);
print $query->submit('BUTTON', $cancel_button);

} elsif ($button eq $yes_button) {
###########################################################################
# Delete the folder
###########################################################################
($username, $junk) = split (/ /, $sessionid);
$index = $folderdir . "/" . $username . "-index";
dbmopen(%index, $index, 0600) || die "Error opening db $index";
delete($index{$folder});
dbmclose(%index);
$filename = $folderdir . "/" . $username . "/" . $folder;
foreach $extension ("db", "pag", "dir") {
  $folderfile = $filename . "." . $extension;
  unlink $folderfile;
}
&print_header;
print $folder_del_info;
&print_options;

} elsif ($button eq $add_button) {
###########################################################################
# Add the folder
###########################################################################
($username, $junk) = split(/ /, $sessionid);
$index = $folderdir . "/" . $username . "-index";
$userdir = $folderdir . "/" . $username;
mkdir $userdir, 0700;
$folder_name = crypt($folder, 'fo') . time;
$folder_name =~ s/\//_/g;
dbmopen(%index, $index, 0600) || die "Error opening db $index";
$index{$folder_name} = $folder;
dbmclose(%index);
$folderdbm = $userdir . "/" . $folder_name;
dbmopen(%fold, $folderdbm, 0600) || die "Error opening db $folderdbm";
$fold{'MESSAGES'} = 0;
dbmclose(%fold);
&print_header;
print $folder_add_info;
&print_options;

} elsif ($button eq $renfolder_button){
###########################################################################
# Rename the folder
###########################################################################
($username, $junk) = split(/ /, $sessionid);
$index = $folderdir . "/" . $username . "-index";
dbmopen(%index, $index, 0600) || die "Error opening db $index";
$folder_name = $index{$folder};
dbmclose(%index);

&print_header;
print $query->startform($method, $folder_pl, $CGI::URL_ENCODED);
print $query->hidden('SESSIONID', $sid);
print $query->hidden('FOLDER', $folder);
print "<TABLE BORDER=\"0\"><TR><TD>";
print $foldname_input;
print "</TD><TD>";
print $query->textfield('NEWFOLDER', $folder_name, 24);
print "</TD></TR></TABLE>\n";
print $query->submit('BUTTON', $rename_button);
print $query->submit('BUTTON', $cancel_button);
print $query->reset($reset_button);
print $query->endform;

} elsif ($button eq $openfolder_button){
###########################################################################
# open the folder
###########################################################################
&print_header;

###########################################################################
# Print the header
###########################################################################
if ($btns eq 'top' || $btns eq 'both' ) { &print_options; }

###########################################################################
# For folders other than INBOX, or local INBOX
###########################################################################
($username, $junk) = split (/ /, $sessionid);
$foldir = $folderdir . "/" . $username;
mkdir $foldir, 0700;
$fold = $foldir . "/" . $folder;
dbmopen(%folder, $fold, 0600) || die "Error opening db $fold";
$pop = 'no';
@key_temp = split(/\t/, $folder{'MESSAGES'});
$num_messages = $#key_temp;
if ($num_messages < 1) {$num_messages = 0; }
foreach (@key_temp) { unless ($_ == 0) { $mess_list[++$i] = $_; } }

###########################################################################
# Make a list of the user's messages
###########################################################################
unless ($num_messages < 1) {
  print $query->startform($method, $messact_pl, $CGI::URL_ENCODED);
  if ($btns eq 'top' || $btns eq 'both') {
   print "<TABLE WIDTH=\"100%\" BORDER=\"0\"><TR>\n";
   print "<TD WIDTH=\"50%\" ALIGN=\"LEFT\">";
   print $query->submit('BUTTON', $delmarked_button);
   print "</TD><TD WIDTH=\"50%\" ALIGN=\"RIGHT\">";
   print $query->reset($clrcheck_button);
   if(!(($sessionid =~ /\@/) || ($sid eq ""))){
    $index = $folderdir . "/" . $username . "-index";
    dbmopen(%index, $index, 0600) || die "Error opening db $index";
    @index = keys %index;
    if (@index){
     print "</TD></TR><TR><TD ALIGN=\"LEFT\">";
     print $query->submit('BUTTON', $movemarked_button);
     print "</TD><TD ALIGN=\"RIGHT\">";
     print $query->popup_menu('NEWFOLDER', \@index, '', \%index);
    }
    dbmclose(%index);
   }
   print "</TD></TR></TABLE>\n";
  }
  print "<H3>$num_messages $total_mess_info</H3>";
  print $query->hidden('SESSIONID', $sid);
  print $query->hidden('FOLDER', $folder);
  print "<TABLE WIDTH=\"100%\" BORDER=\"0\">\n";
  print "<TR>";
  #print "<TD WIDTH=\"5%\"><B>$status_info</B></TD>\n";
  print "<TD WIDTH=\"30%\"><B>$from_info</B></TD>\n";
  print "<TD WIDTH=\"30%\"><B>$subj_info</B></TD>\n";
  print "<TD WIDTH=\"30%\"><B>$date_info</B></TD>\n";
  print "<TD WIDTH=\"5%\"><B>$size_info</B></TD>\n";
  print "<TD WIDTH=\"5%\"><B>$mark_info</B></TR>\n";

  for($i = 1; $i <= $num_messages; $i++){

###########################################################################
# Clear out the temporary buffer thingies
###########################################################################
   $from = "";
   $subject = "";
   $date = "";
   $message_size = "";
   $header = "";

###########################################################################
# Local folders
###########################################################################
   $header = $folder{$mess_list[$i]};
   $message_size = length($header);

###########################################################################
# Parse the header of the message for From, Subject, and Date line,
# also make it play nicely with HTML
###########################################################################
   $header =~ s/</\&lt\;/g;
   $header =~ s/>/\&gt\;/g;
   $header =~ s/(.*)?\r*\n\r*\n(.*)/$1/;
   @header = split(/\n/, $header);
   foreach $line (@header){
    if ($line =~ /^From:/i && $from eq ""){
     $from = $line;
    } elsif ($line =~ /^Subject:/i && $subject eq "") {
     $subject = $line;
    } elsif ($line =~ /^Date:/i && $date eq "") {
     $date = $line;
    } elsif ($line =~ /^Status:/i && $date eq "") {
     if ($line =~ /R/) { $status = ''; }
     else { $status = $new_info; }
    }
   }

###########################################################################
# We don't need the "From: " part, etc.
###########################################################################
   ($junk, $from) = split (/\s/, $from, 2);
   ($junk, $subject) = split (/\s/, $subject, 2);
   ($junk, $date) = split (/\s/, $date, 2);
   chomp $from;
   chomp $subject;
   chomp $date;

###########################################################################
# Get the from address for a nice link
###########################################################################
   @fromaddress = split (/\s/, $from);
   foreach $line (@fromaddress) {
    if ($line =~ /\@.*\./) {
     $fromaddress = $line;
    }
   }
   $fromaddress =~ s/<//g;
   $fromaddress =~ s/>//g;
   $fromaddress =~ s/\&lt\;//ig;
   $fromaddress =~ s/\&gt\;//ig;

###########################################################################
# Display the information and a couple of buttons for each message
###########################################################################
   if ($i % 2 == 1) {
    $cellcolor = $odd_row_color;
   } else {
    $cellcolor = $even_row_color;
   }
   print "<TR>";
   #print "<TD BGCOLOR=\"$cellcolor\">";
   #print $status;
   #print "</TD>";
   print "<TD BGCOLOR=\"$cellcolor\">";
   $butt = CGI::escape($sendto_button);
   print $query->a({href=>"$options_pl?SESSIONID=$sid&TO=$fromaddress&BUTTON=$butt"}, $from);
   print "</TD>\n";
   if ($subject eq "") {
    $subject = "$nosubj_info";
   }
   print "<TD BGCOLOR=\"$cellcolor\">";
   print $query->a({href=>"$messact_pl?SESSIONID=$sid&FOLDER=$folder&BUTTON=$read_button&MESSAGES=$mess_list[$i]&ATTACHMENT=NONE"}, $subject);
   print "</TD>\n";
   print "<TD BGCOLOR=\"$cellcolor\">";
   print $date;
   print "</TD>\n";
   print "<TD BGCOLOR=\"$cellcolor\">";
   print $message_size;
   print "</TD><TD BGCOLOR=\"$cellcolor\">";
   print $query->checkbox('MESSAGES', '', $mess_list[$i], '');
  }

###########################################################################
# Good HTML
###########################################################################
  print "</TABLE>";
  if ($btns eq 'bottom' || $btns eq 'both') {
   print "<TABLE WIDTH=\"100%\" BORDER=\"0\"><TR>\n";
   print "<TD WIDTH=\"50%\" ALIGN=\"LEFT\">";
   print $query->submit('BUTTON', $delmarked_button);
   print "</TD><TD WIDTH=\"50%\" ALIGN=\"RIGHT\">";
   print $query->reset($clrcheck_button);
   if(!(($sessionid =~ /\@/) || ($sid eq ""))){
    $index = $folderdir . "/" . $username . "-index";
    dbmopen(%index, $index, 0600) || die "Error opening db $index";
    @index = keys %index;
    if (@index){
     print "</TD></TR><TR><TD ALIGN=\"LEFT\">";
     print $query->submit('BUTTON', $movemarked_button);
     print "</TD><TD ALIGN=\"RIGHT\">";
     $index = $folderdir . "/" . $username . "-index";
     print $query->popup_menu('NEWFOLDER', \@index, '', \%index);
    }
    dbmclose(%index);
   }
   print "</TD></TR></TABLE>\n";
  }
  print $query->endform;
} else {
  print "<H3>$num_messages $total_mess_info</H3>";
}

if (($btns eq 'bottom') || ($buttons eq 'both')) { &print_options; }

} elsif ($button eq $rename_button){
###########################################################################
# rename the folder
###########################################################################
($username, $junk) = split(/ /, $sessionid);
$index = $folderdir . "/" . $username . "-index";
dbmopen(%index, $index, 0600) || die "Error opening db $index";
$index{$folder} = $newfolder;
dbmclose(%index);

&print_header;
print $folder_ren_info;
&print_options;

}

###########################################################################
# Done
###########################################################################
&update_sess;
unless ($button eq $openfolder_button){
&print_footer;
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 1.0 pre-release build #16 powered by Captain Crunch Security Team | http://ccteam.ru | Generation time: 0.0041 ]--