Danke für den Hinweis.
Der einfachste Schutz hiergegen wäre doch, den inputfeldern andere Namen zu geben, also
Von: <input name="ausfueller">
Grund: <input name="anliegen">
so wie ich das seh, suchen die nach Schlüsselworten (meist eh auf englisch)
Zur Zeit sind Bots unterwegs, die automatisiert Kontakt-
Formulare auf Schwachstellen untersuchen. Dabei schicken sie
Formulare ab, mit dem Ziel ein Feld zu finden, das im head der
Email verwandt wird (z.B. Subject oder From).
Dort fügen Sie nach einem Zeilenumbruch weitere Parameter hinzu
(z.B. Cc:, Bcc oder sogar boundries mit kompletten Mime Teilen)
um über den Server anonymisierte Spam-E-Mails zu versenden.
Ich glaube das viele Skripte anfällig für diese Art von Angriffen
sind. Prüft mal, ob es ein Zeilenumbruch in euer Subject: oder
From: schafft.
Hier noch ein interessanter Artikel.
http://securephp.damonkohler.com/ind...mail_Injection
Geändert von steffenk (15.09.2005 um 11:30 Uhr)
class GetProfileCustomerEntityReceiverInformationReceiverAndProgrammingInforma...{
public function __construct(){ if(!$this) die(' '); } }
http://www.thedailywtf.com/
Danke für den Hinweis.
Der einfachste Schutz hiergegen wäre doch, den inputfeldern andere Namen zu geben, also
Von: <input name="ausfueller">
Grund: <input name="anliegen">
so wie ich das seh, suchen die nach Schlüsselworten (meist eh auf englisch)
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
Nö. Die laufen einfach alle Felder durch und versuchen per Bcc eine E-Mail an jrubin@aol.com zu schicken. Kommt diese E-Mail an, wissen die welches Feld manipulierbar ist.Bei uns hat's ein Formular erwischt. Ich hab's zwar gleich dicht gemacht, aber die probieren es munter weiter.
![]()
class GetProfileCustomerEntityReceiverInformationReceiverAndProgrammingInforma...{
public function __construct(){ if(!$this) die(' '); } }
http://www.thedailywtf.com/
also heisst die Devise : alles ab \r\n abzuschneiden - oder wie bist Du vorgegangen ?
Und wie ist es Dir aufgefallen ?
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
hab' das Problem auch seit einigen Tagen
auf einer Site war das nur einmal, auf einer anderen Site hab' ich aber mehrfach täglich 10 - 20 angebliche Anfragen binnen 1 min
nicht nur unter der von fettmme genannten mail-addy (das waren die ersten), jetzt hab' ich immer jrubin3546@aol.com
hat Jan zwar sofort gefixt (so, wie Steffen schon sagt), aber die (vergeblichen) Versuche laufen seit Tagen weiter und müllen mein Postfach zu ....
na da muss ich dringend alle Forms bearbeiten - bin bisher noch verschont geblieben
Ich halte das Thema für so wichtig, das ich mal einen Sticky draus mache.
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
na mal gucken... ich habe nun bei Thomas folgendes im Script eingebaut:
wir werden berichten!PHP-Code:$absender=$_absender= $_POST['Name']." <".$_POST['email'].">";
$absender=str_replace(array("\r","\n"),'',$absender);
// ok nun haben wir einen
if (strlen($_absender) != strlen($absender)) {
// Debugdatei beschreiben und sterben lassen
die();
}
Gruss
Jan
Ich würde da rigoroser vorgehen und alles dahinter abschneiden.
Es ist doch so, das eine Trennung von Feldern durch \r\n erfolgt, diese Zeichen also in normalen Inputs nicht vorkommen sollten.
Also hab ich folgende Lösung, die alles ab diesen Zeichen abschneidet:
hab das mit der Protokollfunktion mit reingenommen, da Jan das auch vorgesehen hat. In meinem Fall wird die Email noch versandt, Jan lässt es sterben.PHP-Code:if(strpos($email,"\r\n")>0) {
$debug="Folgender Anhang wurde erzeugt:".substr($email,strpos($email,"\r\n"));
//jetzt kann man diesen Debugstring in ein Protokoll schreiben
$email=substr($email,0,strpos($email,"\r\n")-1);
}
Da ich in der Regel auch $email auf Gültigkeit prüfe, reicht es in meinen Formularen auch aus, $email=""; zu setzen, damit die Mail nicht verschickt wird.
Die Prozedur muss natürlich auf alle relevanten Inputfelder angewandt werden.
Kommentare sind erwünscht, vielleicht teilt uns fettmme Seinen Ansatz auch noch mit![]()
Geändert von steffenk (15.09.2005 um 11:42 Uhr)
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
Bin jetzt erst an den Rechner gekommen.Zitat von St@eff.en
PHP-Code:
// Alle Zeilenumbrüche im manipulierbaren Feld aufspüren
if (eregi("\r",$_POST['Email']) || eregi("\n",$_POST['Email'])){
die();
}
// Zur Sicherheit alle Post Variablen durchlaufen und prüfen.
// Diese Inhalte finden sich garantiert nicht einer echten Anfrage,
// dadurch reduziere ich den ankommenden Spam.
foreach($_POST as $k=>$v){
if(eregi("bcc: jrubin",$v)){
die();
}
if(eregi("MIME-Version:",$v)){
die();
}
if(eregi("Content-Type:",$v)){
die();
}
}
Zum Glück war die Mailbox jrubin... voll. Alle regulären Anfragen gehen direkt an meinen Kunden. Fehler und bounces kommen irgendwann zu mir. Nachdem ich flüchtig über die Mail geschaut habe, war mir klar das da was nicht stimmt.Zitat von St@eff.en
PS: Danke für's "Sticky Machen".![]()
Geändert von fettmme (15.09.2005 um 12:12 Uhr)
class GetProfileCustomerEntityReceiverInformationReceiverAndProgrammingInforma...{
public function __construct(){ if(!$this) die(' '); } }
http://www.thedailywtf.com/
Halt! Du entfernst auch alles aus einer Textarea, die den Text enthält. Dort sind Zeilenumbrüche ja erlaubt, sogar erwünscht. Ich würde es daher nur auf Felder anwenden, die auch in den Header der Mail kommen.
Oder kann man etwa am mailbody sowas anhängen ? m.E. nämlich nicht.
hmmpf - wieder nur halb gelesen.
Aber wenn sich bei Dir die Adresse im bcc ändert, musst Du es erneut anpassen![]()
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
wo denn?Zitat von St@eff.en
(oder wurde das im nachhinein geänder?)
das war ja, weil ich's nur halb gelesen hatte - stimmt nicht![]()
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
Hehe, Ihr seid mir heute zu schnell.
Wichtig sind m.E. MIME-Version: und Content-Type:. Selbst in einer Textarea hat so ein String imho nix verloren![]()
Jrubin nehme ich wieder raus, sobald nicht mehr 100 Anfragen am Tag kommen.![]()
class GetProfileCustomerEntityReceiverInformationReceiverAndProgrammingInforma...{
public function __construct(){ if(!$this) die(' '); } }
http://www.thedailywtf.com/
Wenn man die E-Mail per Reg-Exp. validiert, kan doch eigentlich nichts passieren oder?
es geht nicht nur um die email sondern auch die anderen Felder die z.B. fürs Subject genutzt werden etc.
Je nach regex kann die Prüfung auch durch diesen durchrutschen![]()
TYPO3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)