hallo zusammen,
habe eben von einem bekannten den hinweis bekommen, dass mein formular script nicht sicher ist.
hier erst mal der hinweis von 1&1:
-----------------------------------------------------------
> Von: 1&1 WebHosting [mailto:kundeninfo@hosting.1und1.de]
> Gesendet: Mittwoch, 16. März 2005 15:15
> An: ...
> Betreff: Missbrauchbare Sicherheitslücke in Ihrem Mailskript
>
>
> Ihre Kundennummer: ...
>
>
> Hallo Herr ...,
>
> derzeit suchen große Spam-Versender nach neuen Möglichkeiten,
> unerkannt Spam zu verschicken. Eine besonders häufig verwendete
> Methode ist der Missbrauch von Skripten zur Versendung von
> Formular-Daten, bei denen der E-Mail-Empfänger über eine
> Formular-Variable frei angegeben werden kann.
>
> Ein häufiger Vertreter ist ein veraltetes oder falsch konfiguriertes
> Release des Perl-Skripts FormMail.pl von Matt Wright.
> Generell wird aber auch nach ungesicherten formmail.php-,
> formmail.cgi-
> oder ähnlichen Skripten gesucht - unabhängig von deren Benennung -,
> welche Daten an variable Empfänger versenden können. Dies
> umfasst unter
> anderem Bestellbestätigungsskripte, Überwachungsskripte, etc.
> Mit Hilfe dieser Skripte werden dann in der Regel ohne das Wissen des
> Site-Betreuers tausende Spam-Mails verschickt, die nicht
> selten zu einer
> Sperrung durch den jeweiligen Provider führen.
>
>
> Sie nutzen auf Ihrer Internet-Präsenz folgendes Skript:
>
> /homepages/.../mail.php
>
>
> Um Sie vor evtl. Schäden zu bewahren, haben wir präventiv
> nach bekannten
> Zufallsmustern, die auch Spammer benutzen, unseren
> Webspacebereich geprüft
> und sind dabei auf Ihr Skript gestoßen. Daher haben wir zu
> Testzwecken
> eine E-Mail über Ihr Skript an eine interne Testadresse bei
> uns im Haus
> verschickt, was Sie in Ihrem Logfile unter /logs/mail.log
> nachvollziehen
> können. Wir weisen Sie darauf hin, dass diese Vorgehensweise auch von
> beliebigen Dritten durchgeführt werden kann. Die von Ihnen
> installierte
> Version ist für Spammer leicht zu finden, definitiv missbrauchbar und
> möglicherweise bereits missbraucht worden.
>
> Da sich die 1&1 Internet AG entschieden gegen sämtliches
> Versenden von
> E-Mail-Spam stellt und diese alte Skriptversion Ihre Domain zum
> Spamversand missbrauchen kann, empfehlen wir Ihnen dringend, die
> veraltete Version gegen eine sichere auszutauschen.
>
> - Eine Alternative für Formmail-Skripte ist eine auf
> Sicherheit optimierte
> Neufassung z. B. von
http://nms-cgi.sf.net/
> (Achtung: "-T" aus der ersten Zeile entfernen!)
>
> - oder eine neuere Version von
>
http://www.scriptarchive.com/formmail.html
>
> Für Skripte aus anderen Projekten wenden Sie sich bitte an
> den Autor oder
> an den jeweiligen Support.
>
> Beachten Sie bitte die Konfigurationshinweise zu den Skripten und
> achten Sie besonders darauf, dass Empfänger-Adressen nicht frei über
> das Formular angegeben werden können.
>
>
> Vielen Dank für Ihre Mithilfe.
>
>
> Mit freundlichen Grüßen
>
> Ihr WebHosting-Team
> 1&1 Internet AG
-----------------------------------------------------------
ist da an dem hinweis etwas dran? sind php-formular-scripts evtl. nicht sicher?
hier mal mein script:
PHP-Code:
<?
$datum=strftime("%d.%m.%Y");
$zeit=date("H:i");
$https=$HTTP_POST_VARS;
$rec2 = $_POST["email2"];
$copy = $_POST["copy"];
$copyto = $_POST["SenderMail"];
$text="Sie haben am $datum um $zeit eine Bestellung erhalten!\n
___________________________________________________
\n";
$text2="Vielen Dank fuer Ihre Bestellung.\n
Sie haben mir folgende Angaben übermittelt:\n
___________________________________________________
\n";
$auswahl = array("copy", "url", "email", "betreff", "Submit");
foreach ($https as $key => $value) {
if(!in_array($key,$auswahl)){
$text = $text."".$key.": ".stripslashes($value)."\n\n";
$text2= $text2."".$key.": ".stripslashes($value)."\n\n";
}
}
if(empty($_POST['betreff'])) {
"Bestellung";
}
$_POST['absmail']=$_POST['email'];
if(empty($_POST['url'])) {
$_POST['url']="http://www.kefir-kombucha.de";
}
$header="From: ".$_POST['absmail']."\n";
$senden=mail($_POST['email'],$_POST['betreff'],$text,$header) or die ("Fehler beim Übermitteln");
if ($rec2 != "") mail($rec2,$_POST['betreff'],$text,$header) or die ("Fehler beim Übermitteln");
if ($copy != "") mail($copyto,$_POST['betreff'],$text2,$header) or die ("Fehler beim Übermitteln");
$sqlhost="...";
$sqluser="...";
$sqlpass="...";
$sqldb="...";
$sqltable="kefir-kombucha";
$connection=mysql_connect("$sqlhost","$sqluser","$sqlpass");
if (!$connection) {
echo "Keine Verbindung moeglich!/n";
exit;
}
mysql_select_db($sqldb)
or die( mysql_error() );
$sql = "INSERT INTO `kefir-kombucha` ( `datum` , `zeit` , `kombucha` , `wasserkefir` , `labessenz` , `vname` , `nname` , `strasse`, `plz`, `ort`, `sendermail` , `telefon` , `fax` , `homepage` , `addtext` )
VALUES (
'$datum',
'$zeit',
'$_POST[kombucha]',
'$_POST[wasserkefir]',
'$_POST[labessenz]',
'$_POST[vname]',
'$_POST[nname]',
'$_POST[strasse]',
'$_POST[plz]',
'$_POST[ort]',
'$_POST[sendermail]',
'$_POST[telefon]',
'$_POST[fax]',
'$_POST[homepage]',
'$_POST[addtext]')";
$result = mysql_db_query('usr_web35_1',$sql) or die(mysql_error());
mysql_close($connection);
if($senden) {
Header("Location: ".$_POST['url']);
} else {
echo "Fehler beim Senden! Bitte <a href=\"mailto:
frank.deubert@kefir-kombucha.de
\">
frank.deubert@kefir-kombucha.de
</a> kontaktieren!<br><a href=\"javascript:history.back()\">Zurück zum Formular</a>";
}
?>
das script, dass mein bekannter verwendet ist das gleiche wie oben nur ohne datenbankanbindung.
habt ihr vielleicht einen tipp wie ich das script "sicher" machen koennte - sofern es hier irgendwelche sicherheitsluecken gibt?
im voraus vielen dank und auf die diskussion zum thema sicherheit bin ich gespannt.
MIMAMO