TomC: Hat jemand Lust, die Sicherheit dieses Scripts zu beurteilen?

Beitrag lesen

Ich weiß, das Script ist etwas kompliziert, aber ich uebe noch....

#!/usr/bin/perl -w ###!C:/Programme/Apache Group/Apache2/Perl/bin/perl.exe -w

use strict; use CGI::Carp qw(fatalsToBrowser);

my $pathtoall   = "http://www.domain.de/bla/all"; my $pathtopages = "http://www.domain.net/bla"; my $pathtocgi   = "http://www.domain.net/cgi-bin";

################################################################################

Erstmal die uebergebenen parameter auslesen

################################################################################ my $formulardaten; my $mail_ip; if($ENV{'REQUEST_METHOD'} eq 'GET'){    $formulardaten = $ENV{'QUERY_STRING'};    $mail_ip = $ENV{'REMOTE_ADDR'}; } else{    read(STDIN, $formulardaten, $ENV{'CONTENT_LENGTH'});    read(STDIN, $mail_ip, $ENV{'REMOTE_ADDR'}); } my @formularfelder = split(/&/, $formulardaten); my $formularfeld; my $name; my $value;

my $page_name_sended  = 'none'; my $action_sended     = 'none'; my $mail_absender     = 'none'; my $mail_absendername = 'none'; my $mail_empfaenger   = 'none'; my $mail_nachricht    = 'none'; my $mail_ranum        = 'none';

my $page_show         = 2; my $page_name         = 'none'; my $page_type         = 'none'; my $page_topic        = 'none'; my $page_main         = 'none'; my $page_title        = 'none'; my $page_link         = 'none';

my $html              = "Content-type: text/html\n\n"; my $mailprog = '/usr/lib/sendmail'; my $ranum = time();

foreach $formularfeld (@formularfelder){    ($name, $value) = split(/=/, $formularfeld);    $value =~ tr/+/ /;    $value =~ s/%0A//g;    $value =~ s/%0D/||/g;    $value =~ s/%7C/|/g;    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;    $value =~ s/<!--(.|\n)*-->//g;

if   ($name eq "name")         {$page_name_sended = "$value";}    elsif($name eq "action")       {$action_sended = "$value";}    elsif($name eq "absender")     {$mail_absender = "$value";}    elsif($name eq "absendername") {$mail_absendername = "$value";}    elsif($name eq "empfaenger")   {$mail_empfaenger = "$value";}    elsif($name eq "nachricht")    {$mail_nachricht = "$value";}    elsif($name eq "ranum")        {$mail_ranum = "$value";} } $html .= qq~ <html>

<head>       <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">       <title>Seite empfehlen</title>       <link rel=stylesheet type="text/css" href="$pathtoall/css/main.css">    </head>

<body bgcolor="#ffffff" text="#000000" leftmargin="10" topmargin="10" marginwidth="10" marginheight="10"> ~;

if($action_sended eq 'showwindow'){&createWindow;} elsif($action_sended eq 'sendmymail'){&sendMyMail;}

print $html;

################################################################################

sub createWindow{ my @pages; open(DATEI, '<table_pages.pl') || die 'Konnte die Tabelle mit den Seiten nicht oeffnen'; @pages = <DATEI>; close(DATEI); shift(@pages); chomp(@pages);

daten der aufgerufenen seite einlesen

foreach (@pages) {    ($page_show,$page_name,$page_main,$page_title,$page_link) = split(/|/,$_);    last if ($page_name eq $page_name_sended); }

falls in der datenbank noch irgendwo localhost/ im pfad steht: rausloeschen!

$page_link =~ s/localhost///gi;

datei zur pruefung der sendeberechtigung erstellen

open(DATEI, ">dudarfst/$ranum.pl") || die 'Konnte Erlaubnis nicht vergeben'; print DATEI "$ranum"; close(DATEI);

$html .= qq~

<br>       <h2>Seite empfehlen<img src="$pathtoall/img/dot_blau.gif" width="100%" height="1" border="0" vspace="2"></h2>       <form name="FormName" action="$pathtocgi/foo/empfehlung.pl" method="get">          <input type="hidden" name="action" value="sendmymail">          <input type="hidden" name="ranum" value="$ranum">          <table border="0" cellpadding="0" cellspacing="0" width="470">             <tr>                <td width="170" height="30" valign="top">Ihr Name</td>                <td width="300" height="30" valign="top"><input class="edit300" type="text" name="absendername" size="35"></td>             </tr>             <tr>                <td width="170" height="30" valign="top">Ihre E-Mail-Adresse</td>                <td width="300" height="30" valign="top"><input class="edit300" type="text" name="absender" size="35"></td>             </tr>             <tr>                <td width="170" height="30" valign="top">E-Mail des Empfängers</td>                <td width="300" height="30" valign="top"><input class="edit300" type="text" name="empfaenger" size="35"></td>             </tr>             <tr>                <td width="170" valign="top">Ihre Nachricht</td>                <td width="300" rowspan="2"><textarea class="w300" name="nachricht" cols="28" rows="6">Ich möchte Dir folgende Seite von domain.de empfehlen: $pathtopages/$page_link</textarea></td>             </tr>             <tr>                <td width="170" valign="bottom"><input type="submit" name="E" value="Empfehlung senden"></td>             </tr>          </table>       </form>       <p>          <img src="$pathtoall/img/dot_blau.gif" width="450" height="1" border="0" vspace="2"><br>          www.domain.de       </p>    </body> </html> ~; }

################################################################################

sub sendMyMail{

my $ranum_check = 0;    my $verzeichnis = "dudarfst";    my $dateistring = "$mail_ranum.pl";

opendir(DIR, $verzeichnis) || die "Konnte das Erlaubnis-Verzeichnis nicht oeffnen.";       my @dateien = readdir(DIR);    closedir(DIR);

foreach(@dateien){       if($dateistring eq $){          $ranum_check = 1;       }       last if($dateistring eq $);    }

if($ranum_check == 1){       open(MAIL,"|$mailprog -t");          print MAIL "To: $mail_empfaenger\n";          print MAIL "From: $mail_absender\n";          print MAIL "Subject: Seitenempfehlung von $mail_absendername \n";          print MAIL "X-Priority: 1 (Highest)\n\n";          print MAIL "$mail_nachricht";       close(MAIL);

unlink("dudarfs/$mail_ranum.pl");

$html .= qq~          <br>          <h1>Ihre Empfehlung wurde versendet</h1>          <p><b>Absender:</b><br> $mail_absendername</p>          <p><b>E-Mail-Adresse des Absenders:</b><br>$mail_absender</p>          <p><b>E-Mail-Adresse des Empfängers:</b><br>$mail_empfaenger</p>          <p><b>Nachricht:</b><br>$mail_nachricht</p>          <p>Sie können das Fenster jetzt <a href="javascript:window.close();">schließen</a></p>          </body></html>       ~;    } else {       open(MAIL,"|$mailprog -t");          print MAIL "To: webmaster@domain.de\n";          print MAIL "From: error@domain.net\n";          print MAIL "Subject: Fehler bei Seitenempfehlung\n";          print MAIL "X-Priority: 1 (Highest)\n\n";          print MAIL "$mail_ip\n";          print MAIL "$dateistring\n";          print MAIL "$mail_absendername\n";          print MAIL "$mail_absender\n";          print MAIL "$mail_empfaenger\n";          print MAIL "$mail_nachricht\n";       close(MAIL);

$html .= qq~          <br>          <h1>Fehler</h1>          <p>Mögliche Ursachen:</p>          <ul>             <li>Die URL wurde nicht korrekt übermittelt oder verändert             <li>Das Skript wurde nicht durch ordnungsgemäß aufgerufen             <li>Sonstige Manipulation          </ul>          <p>Um eine Manipulation auszuschließen, wurden die Daten der e-mail und die IP des Absenders zur &Uuml;berprüfung an den Webmaster gesendet.</p>          <p>Fenster <a href="javascript:window.close();">schließen</a></p>          </body></html>       ~;    } }