PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ausspähung von Webformularen



Aranxo
05.10.2005, 18:28
Folgende email habe ich grade an AOL versandt, nachdem ein gewisser 'homeigoldstein [at] aol.com' offensichtlich versucht hat, mehrere meiner Webformulare zum Spammen zu benutzen oder zumindest auszuspähen, ob das mit meinen Formularen funktioniert: :mad:


Schon seit einiger Zeit versucht anscheinend jemand, Formulare
auf meiner Website dazu zu benutzen, Spam mit email-Adressen
meiner Domain zu versenden, bzw. kundschaftet aus, ob dies mit
meinen Formularen möglich ist.

Nachdem ich im Normalfall von jeder Aktivität auf meinen
Formularen eine Benachrichtigungs-email bekomme, landen ständig
Emails mit ungefähr folgendem Inhalt bei mir im Postfach:

---------------------------------------------------------------
This is a multi-part message in MIME format.

--===============0362865703==
Content-Type: text/plain; charset=\"us-ascii\"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

vppkqcrv
--===============0362865703==--


Folgende Nachricht wurde vom Kontaktformular
aus gesendet am 05.10.2005 xx:xx:xx
-------------------------------------------------------------

Name : zhuwktbz [at] mydomain.de
EMail : zhuwktbz [at] mydomain.de
Content-Type: multipart/mixed; boundary=\"===============0362865703==\"
MIME-Version: 1.0
Subject: 36259a78
To: poor [at] spamvictim.tld
bcc: homeigoldstein [at] aol.com
From: zhuwktbz [at] mydomain.de

This is a multi-part message in MIME format.

--===============0362865703==
Content-Type: text/plain; charset=\"us-ascii\"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit

vppkqcrv
--===============0362865703==--

Nachricht:

zhuwktbz [at] mydomain.de

-------------------------------------------------------------


Immer wieder ist dieser 'homeigoldstein [at] aol.com' im BCC genannt,
was ja wohl nur heißen kann, dass dies die Adresse ist, mit der
kontrolliert wird, ob der Abuse-Versuch geglückt ist.

Ich möchte Sie darum bitten, sich um den Absender in gebotener
Weise zu kümmern. Löschung des Accounts reicht hier leider nicht,
denn derartige Versuche wurden auch schon mit anderen BCC-Adressen
gestartet, allerdings immer mit AOL-Adressen. Leider habe ich
diese zuerst gelöscht, weshalb ich diese Adressen nicht mehr
nennen kann.

[Meine echte Domain habe ich jeweils durch 'mydomain' ersetzt]

Wie kann ich dem Menschen noch irgendwie ins Handwerk pfuschen? :skull: Ich fürchte, eine Meldung an AOL reicht nicht aus.
Habt Ihr in der letzten Zeit ähnliche Mißbrauchsversuche von Webformularen registriert?

Spamgegner
05.10.2005, 19:35
Poste dochmal den Quelltext.
Normalerweise sollte der da keine Header-Zeilen reinmanipulieren dürfen.

Sirius
05.10.2005, 20:01
Dafür ist er bereits bekannt: http://www.google.de/search?as_q=&num=100&hl=de&btnG=Google-Suche&as_epq=homeigoldstein+aol+com&as_oq=&as_eq=&lr=&as_ft=i&as_filetype=&as_qdr=all&as_occt=any&as_dt=i&as_sitesearch=&safe=images

Da war doch mal was ähnliches: http://www.antispam-ev.de/forum/showthread.php?t=9021

Vielleicht ist das derselbe!?

heinerle
05.10.2005, 20:46
Seit ich in meinem Quellcode explizit auf POST und diverse Felder auf ungültige Zeichen ( \n \r @) prüfe gibt es zwar noch einige derartige Spam-Versuche, aber ich erhalte keine vermurksten Mails mehr, weil alles geblockt wird.

Aranxo
06.10.2005, 18:21
Sorry, dass ich so lange gebraucht habe, der Source-Code ist wie folgt:



<?php
function pageend() {
global $antispam, $Browser;

echo '<hr noshade="noshade" size="1" />';
echo '<p class="error"><b><a href="javascript:history.go(-1);">&laquo;&laquo; Zur&uuml;ck</a></b></p>';
include('../modules/footer.php');
exit();
}

$title = "kontakt";
include('../modules/header.php');
?>
<h1>Kontakt</h1>
<?php
//Diese Variablen editieren:
$Homepage = "mydomain.de";
$HomepageURL = "http://www.mydomain.de";
$HomepageEmail = "info [at] mydomain.de";

//Ab hier nichts mehr aendern
$Date = date("d.m.Y H:i:s");
if (!$Filled) {
?>
<form method="post" action="<?=$PHP_SELF?>">
<p class="standard">Schicken Sie mir eine EMail:</p>
<table width="100%" border="0" cellspacing="5" cellpadding="0">
<colgroup> <col width="25%" /> <col width="75%" /> </colgroup>
<tr>
<td class="contact">Ihr Name&nbsp;</td>
<td><input type="text" name="UserName" size="30" /></td>
</tr>

<tr>
<td class="contact">Ihre Email&nbsp;</td>
<td><input type="text" name="UserEmail" size="30" /></td>
</tr>

<tr>
<td class="contact">Ihr Betreff&nbsp;</td>
<td><input type="text" name="Subject" size="30" /></td>
</tr>

<tr>
<td class="contact">Ihre Nachricht&nbsp;</td>
<td><textarea name="Message" rows="7" cols="50"></textarea></td>
</tr>

<tr>
<td><input type="hidden" name="Filled" value="1" /></td>
<td>
<input class="button" type="submit" value="Abschicken" name="submit" />
<input class="button" type="reset" value="L&ouml;schen" name="reset" />
</td>
</tr>
</table>
</form>

<?php
include('../modules/footer.php');
}
else
{
if (empty ($UserName)) {
echo '<hr noshade="noshade" size="1" />';
echo '<p class="error">Geben Sie bitte Ihren Namen ein!</p><br />';
pageend();
}

if (empty ($UserEmail)) {
echo '<hr noshade="noshade" size="1" />';
echo '<p class="error">Geben Sie bitte Ihre Emailadresse ein!</p><br />';
pageend();
}

if (empty ($Message)) {
echo '<hr noshade="noshade" size="1" />';
echo '<p class="error">Geben Sie bitte eine Nachricht ein!</p><br />';
pageend();
}

// Formulardaten verschicken
$Body = "Folgende Nachricht wurde vom Kontaktformular\n";
$Body.= "aus gesendet am $Date\n";
$Body.= "-------------------------------------------------------------\n\n";
$Body.= "Name : $UserName\n";
$Body.= "EMail : $UserEmail\n";
$Body.= "Nachricht:\n\n";
$Body.= "$Message\n\n";
$Body.= "-------------------------------------------------------------\n\n";

mail($HomepageEmail, "$Homepage: $Subject",$Body,"From: $UserEmail");

//Bestaetigungsemail an den Absender
$Body = "Guten Tag, Frau/Herr $UserName,\n\n";
$Body.= "Vielen Dank für Ihren Besuch auf meiner Homepage!\n";
$Body.= "Folgende Nachricht ist bei mir eingegangen:\n";
$Body.= "-------------------------------------------------------------\n\n";
$Body.= "Ihr Name : $UserName\n";
$Body.= "Ihre EMail : $UserEmail\n";
$Body.= "Ihr Betreff : $Subject\n";
$Body.= "Ihre Nachricht:\n\n";
$Body.= "$Message\n\n";
$Body.= "-------------------------------------------------------------\n\n";
$Body.= "Falls erforderlich, werde ich so schnell wie möglich darauf antworten.\n\n";
$Body.= $HomepageURL;

mail($UserEmail,"Rückmeldung von $Homepage",$Body,"From: $HomepageEmail");
?>
<hr noshade="noshade" size="1" />
<p>Vielen Dank f&uuml;r Ihre Mitteilung! Eine Kopie Ihrer Nachricht<br />
wurde soeben an folgende Email-Adresse gesandt:<br />
<span class="special"><?= $UserEmail ?></span><br /><br />
Ihre Nachricht lautete:<br />
<span class="special"><?= $Message ?></span><br /></p>
<?php
pageend();
}
?>


Jetzt wo ich da drüberschaue: vielleicht sollte ich $UserEmail noch
durch ein eregi oder preg_match jagen, damit da wirklich nur eine Email
drin stehen kann.

Sirius
06.10.2005, 18:43
Hallo Aranxo

Jetzt wo ich da drüberschaue: vielleicht sollte ich $UserEmail noch
durch ein eregi oder preg_match jagen, damit da wirklich nur eine Email
drin stehen kann.Das nützt leider nichts :-(

Das Script ist eine echte Mail-Schleuder. Wie willst du kontrollieren, dass $UserEmail tatsächlich der Mail-Absender ist. Man könnte hier auch einen Spam-Empfänger eintragen und schon kann man Spam versenden. Der Absender ist in Wirklichkeit der Empfänger.

Aranxo
06.10.2005, 20:26
Wie willst du kontrollieren, dass $UserEmail tatsächlich der Mail-Absender ist.
Gar nicht. Aber dann muss man die Bestätigungsemail von Hand schreiben.
Ist ein bißchen doof.

Man könnte hier auch einen Spam-Empfänger eintragen und schon kann man Spam versenden. Der Absender ist in Wirklichkeit der Empfänger.
Aber der Spam würde doch wohl auch immer den Text:

Vielen Dank für Ihren Besuch auf meiner Homepage! Folgende Nachricht ist bei mir eingegangen:
usw. enthalten und wäre dann nicht sehr glücklich. Oder gibt es für den Spammer eine Möglichkeit, den festen Text um die Variablen drum rum zu löschen oder zu verschleiern?
Außerdem bekomme ich ja auch immer noch eine Kontaktmail, und kann evtl. schnell reagieren. Zudem ist sowas bisher nicht passiert.

Grüße,

Aranxo

heinerle
06.10.2005, 22:04
Gar nicht. Aber dann muss man die Bestätigungsemail von Hand schreiben.
wozu Bestätigungsmail? Es reicht doch, dem Benutzer die Bestätigung im Browser anzuzeigen, hauptsache Du bekommst die Mail


Aber der Spam würde doch wohl auch immer den Text:
usw. enthalten und wäre dann nicht sehr glücklich. Oder gibt es für den Spammer eine Möglichkeit, den festen Text um die Variablen drum rum zu löschen oder zu verschleiern?
Mit eingeschmuggelten Multipart-Kodierungen geht das evtl.


Außerdem bekomme ich ja auch immer noch eine Kontaktmail, und kann evtl. schnell reagieren. Zudem ist sowas bisher nicht passiert.
Vielleicht bekommst Du ja eines Tages 10.000 Kontaktmails, wenn jemand das Skript wirklich richtig mißbraucht -:)

Zuerst solltest Du mit

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
}
verhindern, daß jeder mit dem Browser das Skript mißbrauchen kann. Weiterhin prüfe ich bei mir, ob in den Variablen Zeilenumbrüche zum Einschmuggeln von weiteren Headerzeilen enthalten sind oder auch weitere E-Mail-Adressen (erkennbar am @):


CheckSpam($email_from, "\n");
CheckSpam($email_from, "\r");
CheckSpam($email_from, "cc:");

CheckSpam($FaxNr, "\n");
CheckSpam($FaxNr, "\r");
CheckSpam($FaxNr, "cc:");
CheckSpam($FaxNr, "@");

function CheckSpam($Field, $What) {
if ( $Field && $What && eregi($What, $Field) ) {
header("HTTP/1.0 403 Forbidden");
die("Spam attempt denied");
}
}

heinerle
15.10.2005, 18:13
In der neuesten Ausgabe wird das Problem auch behandelt und Lösungsmöglichkeiten aufgezeigt:

http://www.heise.de/ct/ftp/05/22/208/