 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
14.09.2005, 22:11
|
#1
|
|
TP-Veteran
Registriert seit: Feb 2002
|
FYI: Email Injection
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
__________________
class GetProfileCustomerEntityReceiverInformationReceiverAndProgrammingInforma...{
public function __construct(){ if(!$this) die(' '); } }
http://www.thedailywtf.com/
Geändert von steffenk (15.09.2005 um 10:30 Uhr).
|
|
|
14.09.2005, 23:33
|
#2
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
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)
|
|
|
15.09.2005, 00:59
|
#3
|
|
TP-Veteran
Registriert seit: Feb 2002
|
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/
|
|
|
15.09.2005, 01:05
|
#4
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
also heisst die Devise : alles ab \r\n abzuschneiden - oder wie bist Du vorgegangen ?
Und wie ist es Dir aufgefallen ?
|
|
|
15.09.2005, 01:14
|
#5
|
|
TP-Special Mod
Registriert seit: May 2001
Ort: Arnsberg - Sauerland
|
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 ....
|
|
|
15.09.2005, 01:16
|
#6
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
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.
|
|
|
15.09.2005, 09:55
|
#7
|
|
TP-Moderator
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
|
na mal gucken... ich habe nun bei Thomas folgendes im Script eingebaut:
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();
}
wir werden berichten!
Gruss
Jan
|
|
|
15.09.2005, 10:06
|
#8
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
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:
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);
}
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.
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 10:42 Uhr).
|
|
|
15.09.2005, 11:04
|
#9
|
|
TP-Veteran
Registriert seit: Feb 2002
|
Zitat:
|
Zitat von St@eff.en
Kommentare sind erwünscht, vielleicht teilt uns fettmme Seinen Ansatz auch noch mit 
|
Bin jetzt erst an den Rechner gekommen.
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();
}
}
Zitat:
|
Zitat von St@eff.en
Und wie ist es Dir aufgefallen ?
|
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.
PS: Danke für's "Sticky Machen". 
__________________
class GetProfileCustomerEntityReceiverInformationReceiverAndProgrammingInforma...{
public function __construct(){ if(!$this) die(' '); } }
http://www.thedailywtf.com/
Geändert von fettmme (15.09.2005 um 11:12 Uhr).
|
|
|
15.09.2005, 11:08
|
#10
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
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 
|
|
|
15.09.2005, 11:11
|
#11
|
|
TP-Moderator
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
|
Zitat:
|
Zitat von St@eff.en
Halt! Du entfernst auch alles aus einer Textarea, die den Text enthält. Dort sind Zeilenumbrüche ja erlaubt, sogar erwünscht.
|
wo denn?  (oder wurde das im nachhinein geänder?)
|
|
|
15.09.2005, 11:13
|
#12
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
das war ja, weil ich's nur halb gelesen hatte - stimmt nicht 
|
|
|
15.09.2005, 11:15
|
#13
|
|
TP-Veteran
Registriert seit: Feb 2002
|
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/
|
|
|
15.09.2005, 13:55
|
#14
|
|
TP-Veteran
Registriert seit: Oct 2002
Ort: Übach-Palenberg
|
Wenn man die E-Mail per Reg-Exp. validiert, kan doch eigentlich nichts passieren oder?
__________________
Grüße aus Übach-Palenberg
Tim
WEB.ASSISTANTS IT-SOLUTIONS
www.web-assistants.de
Hängt das doch mal an eine beliebige PHP-Datei: ?=PHPE9568F36-D428-11d2-A769-00AA001ACF42
|
|
|
15.09.2005, 14:01
|
#15
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
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 
|
|
|
| |