PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ich war so lange Zeit sicher - Spamschutz geknackt :(



Stefreak
20.06.2006, 07:55
Hallo an euch,

Mein Gästebuch (http://www.computerstefreak.de/index.php?option=com_akobook&Itemid=28) war so lange sicher - doch jetzt wurde mein Spambildchen geknackt.

Bis jetzt sieht es so aus, als ob mich mehrmals täglich ein Botnetz besucht und Spameinträge schreibt. Ich denke mal alles hinter Proxys. :skull:


Name: notebook computer (Manchmal anders z.b. MySpace oder hosting web (Sex-Seite))

E-Mail: 100039 [at] yahoo.com (Manchmal eine andere Zahl)

HP: http://computer.notebookcomputer.name oder http://hosting.hostingweb.name/web-hosting.html oder sonst irgendwas, zweiteres die Sex-Seite

Ort: us (Immer gleich)

ICQ: 144833434 (Manchmal bestimmt anders)

AIM: aolaim (Immer gleich)

MSN: msngb (Immer gleich)


Habt Ihr auch erfahrungen mit soclchen Einträgen?
Was kann man da machen?

Nach dem Ausfindigmachen anzeigen?

Es nervt wirklich. Ich habe mein Gästebuch nun so umgestellt, dass ich Beiträge vorher lese. Deswegen erhalte ich jetzt aber immer Tonnenweise Mails! :sick: :skull:


MfG
Stefreak

Stefreak
20.06.2006, 08:04
Achja: c.a. 80 % Meiner heutigen 103 Besucher stammen von SpamBots.


MfG
Stefreak:sick:

Sirius
20.06.2006, 08:38
Hallo Stefreak,

ich habe mir dein Gästebuch mal im HTML-Code angesehen. Dabei sind mir ein paar Kleinigkeiten aufgefallen:

1. "<meta name="robots" content="index, follow" />"
Durch diesen Meta-Tag ist dein Gästebuch über Suchmaschinen zu finden. Damit lockst du nur Bots an. Deine Gäste kommen sicherlich nicht über Goolge & Co zum Eintragen.

2. Irgendwie geht bei dir im Eingabe-Formular der GET- und POST-Code durcheinander. Einerseits sind hidden-Felder vorhanden, andererseits werden die gleichen Daten nochmals als Query-String mittels GET übertragen:

<form name="pollxtd" method="post" action="index.php?option=com_poll&amp;Itemid=28">
<INPUT TYPE='hidden' NAME='option' value='com_akobook'>
<INPUT TYPE='hidden' NAME='Itemid' value='28'>
3. Ich vermisse einen Session-Key

Hast du den Code selbst geschrieben? (Es sieht nicht so aus, aber ich frage nochmal nach.)


Habt Ihr auch erfahrungen mit soclchen Einträgen?
Was kann man da machen?Sicherlich hat jeder Gästebuchbetreiber irgendwann ähnliche Erfahrungen gemacht. Man muss versuchen, die Fehlerquellen zu beseitigen und die Sicherheitslecks zu stopfen.


Nach dem Ausfindigmachen anzeigen?Wenn - ja wenn - du die Schmierfinken ausfindig machen kannst! Meisten sitzen die im Ausland und benutzen Proxies...


Ich habe mein Gästebuch nun so umgestellt, dass ich Beiträge vorher lese. Deswegen erhalte ich jetzt aber immer Tonnenweise Mails! Mir scheint, dein Spambildchen (Capcha) funktioniert nicht. Hast du selber mal versucht, dein Gästebuch zu knacken? Irgendwas ist faul am Code, wenn du trotz Captcha "tonnenweise" Mails bekommst.

Stefreak
20.06.2006, 08:52
Der Code wurde erst vor kurzem gekackt.
Vorher war alles paletti.

Das Gästebuch ist nicht von mir, ich bin aber gut in PHP & HTML.
Ich wollte sowieso mein Captcha mal ändern ;)

Wenn du willst, kann ich dir den Code geben, damit du weiter analysieren kannst? Der Code in dem jetzigen Zustand ist sowieso offen (GNU/GPL).

Aber wegen der genannten Fehler:
index, follow werde ich mal ändern. Ich benutze ja ein CMS; werde das im template mit einer If-Anweisung ändern.

Post- und Get durcheinander? Ich werde das vll auch mal lösen, danke. Aber ich denke das wird's den Spammern nachher nicht gerade erschwehren.

Schlechtes Captcha: Ich denke die Bots haben das einfach geknackt.
Das Captcha iat soweit ich weiß und ic weiß wenig über Captchas sauber programmiert :o

MfG
Stefreak

Stefreak
20.06.2006, 08:56
Hier meine Gästebuch Komponente

http://www.computerstefreak.de/com_akobook.rar




MfG
Stefreak;)

Sirius
20.06.2006, 09:17
Eine ganz einfache Lösung ist es, das Gästebuch über JavaScript zu verlinken. Also den Link nicht in den HTML-Code zu setzten, sondern durch dokument.write(...) erst im Browser des Gastes zu erzeugen.

Dadurch ist auch sichergestellt, dass die validate()-Funktion ausgeführt wird. Zusätzlich lässt sich der Link verschlüsseln.

Deine Gäste werden es nicht merken, weil kaum jemand JavaScript abstellt. Die Bots finden aber das Gästebuch nicht. (Du solltest nicht denselben URL wie jetzt verwenden, weil der bereits bekannt ist.)

Stefreak
20.06.2006, 09:25
Einfach die URL ändern - wenn das so einfach wäre.

Ich habe schon ein JavaScript, das werde ich wahrscheinlich verwenden (Siehe im Quellcode von der HP unter JavaScripts das erste :o)
Vielleicht mache ich wirklich eine IP-BlackList und wenn die IP gezeigt wird, kommt ein Fenster auf dem steht:
Sie wurden als Spambot identifiziert. Klicken Sie hier um ins normale Gästebuch zu gelangen.

Und das dann auch mit einem javaScript?

Ich denke ein paar Wochen wird's ja schon dauern bis die ganzen IP's in der BalckList sind.
Aber dann habe ich einen guten Schutz.

Ich probier's mal


MfG
Stefreak

Sirius
20.06.2006, 09:41
Ich habe mir mal den Gästebuch-Code angesehen.

In der Datei img.php wird das Spambildchen erzeugt.
Wenn du hier die Zeile:
ImageString($im, 5, 8, 1, $seccode, $fontcolor);

durch folgende Zeile ersetzt:
imagettftext($im, <dies anpassen: , , , >, $fontcolor, $font, $seccode);

und für $font einen schwer erkennbaren Zeichensatz (*.ttf) verwendest, ist es Bots fast unmöglich, die Zahlen zu entziffern.

Gute Fonts gibt es z.B. hier: www.dafont.com

Stefreak
20.06.2006, 10:19
Es klappt nicht...Mit diesem Quelly


<?php
/* AkoBook AutoScript-Protection
* - Codeimage
*
* @author: Dominik Paulus, mail [at] dpaulus.de
* @date: 12/16/05
* @version: 2
*
*/

// Imagetype: JPEG, PNG, GIF
$type = "PNG";

session_start('akobookcode');
session_register('code');

mt_srand((double)microtime()*1000000);

// Numerical code
$seccode = mt_rand(10000, 99999);
$_SESSION['code'] = $seccode;

// create image
$im = ImageCreate(140, 40) or die('Image create error!');
// Image colors
// imagecolorallocate($im, R, G, B) Only change R,G,B (0-255)!
$bgcolor = ImageColorAllocate($im, 255, 102, 0);
$fontcolor = ImageColorAllocate($im, 255, 255, 255);
$linecolor = ImageColorAllocate($im, 148, 151, 255);
$bordercolor = ImageColorAllocate($im, 255, 128, 0);

// Grid
for($x=10; $x <= 100; $x+=10)
ImageLine($im, $x, 0, $x, 50, $linecolor);

// Middleline
ImageLine($im, 0, 9, 100, 9, $linecolor);

// Border
ImageLine($im, 0, 0, 0, 50, $bordercolor);
ImageLine($im, 0, 0, 100, 0, $bordercolor);
ImageLine($im, 0, 17, 100, 17, $bordercolor);
ImageLine($im, 59, 0, 59, 17, $bordercolor);

// Code
$font="img.ttf";
imagettftext($im, 7, 4, 3, $fontcolor, $font, $seccode);

// Create Image
switch($type) {
case 'JPEG':
// JPEG output
Header("Content-Type: image/jpeg");
ImageJPEG($im,"",75);
BREAK;

case 'PNG':
// PNG output
Header("Content-Type: image/png");
ImagePNG($im);
BREAK;

case 'GIF':
// GIF output
Header("Content-Type: image/gif");
ImageGIF($im);
BREAK;

default:
die("Wrong \$type in img.php (should be JPEG, PNG or GIF)\n");
}

ImageDestroy($im);
?>


MfG
Stefreak

Sirius
20.06.2006, 11:21
Die Parameter von imagettftext() stimmen nicht. Du hast den y-Wert vergessen:
$im = Image-Objekt
7 = Fontgröße
4 = Winkel (sollte vorerst 0 sein)
3 = x-Koordinate
? = y-Koordinate (fehlt bei dir)
$fontcolor = Schriftfarbe
$font = Pfad zum Zeichensatzt
$seccode = Ausgabetext

Die Syntax von imagettftext() findest du hier: http://de2.php.net/manual/de/function.imagettftext.php

Ist der Zeichensatz "img.ttf" im selben Verzeichnis vorhanden?

Wie lautet die Fehlermeldung?

Stefreak
20.06.2006, 12:35
Hmm auch so klappt's nicht :?


<?php
/* AkoBook AutoScript-Protection
* - Codeimage
*
* @author: Dominik Paulus, mail [at] dpaulus.de
* @date: 12/16/05
* @version: 2
*
*/

// Imagetype: JPEG, PNG, GIF
$type = "PNG";

session_start('akobookcode');
session_register('code');

mt_srand((double)microtime()*1000000);

// Numerical code
$seccode = mt_rand(10000, 99999);
$_SESSION['code'] = $seccode;

// create image
$im = ImageCreate(140, 40) or die('Image create error!');
// Image colors
// imagecolorallocate($im, R, G, B) Only change R,G,B (0-255)!
$bgcolor = ImageColorAllocate($im, 255, 102, 0);
$fontcolor = ImageColorAllocate($im, 255, 255, 255);
$linecolor = ImageColorAllocate($im, 148, 151, 255);
$bordercolor = ImageColorAllocate($im, 255, 128, 0);

// Grid
for($x=10; $x <= 100; $x+=10)
ImageLine($im, $x, 0, $x, 50, $linecolor);

// Middleline
ImageLine($im, 0, 9, 100, 9, $linecolor);

// Border
ImageLine($im, 0, 0, 0, 50, $bordercolor);
ImageLine($im, 0, 0, 100, 0, $bordercolor);
ImageLine($im, 0, 17, 100, 17, $bordercolor);
ImageLine($im, 59, 0, 59, 17, $bordercolor);

// Code
$font="http://www.computerstefreak.de/components/com_akobook/img.ttf";
$fontcolor="ImageColorAllocate($im, 255, 255, 255)";
imagettftext($im, 5, 1, 3, 3, $fontcolor, $font, $seccode);

// Create Image
switch($type) {
case 'JPEG':
// JPEG output
Header("Content-Type: image/jpeg");
ImageJPEG($im,"",75);
BREAK;

case 'PNG':
// PNG output
Header("Content-Type: image/png");
ImagePNG($im);
BREAK;

case 'GIF':
// GIF output
Header("Content-Type: image/gif");
ImageGIF($im);
BREAK;

default:
die("Wrong \$type in img.php (should be JPEG, PNG or GIF)\n");
}

ImageDestroy($im);
?>


MfG
Stefreak

Sirius
20.06.2006, 12:53
Deine Zeichen-Parameter liegen außerhalb des Bildes und der Font ist zu klein.

Hier ist ein funktionierendes Beispiel mit dem Font "tahoma.ttf":
<?php
/* AkoBook AutoScript-Protection
* - Codeimage
*
* @author: Dominik Paulus, mail [at] dpaulus.de
* @date: 12/16/05
* @version: 2
*
*/

// Imagetype: JPEG, PNG, GIF
$type = "PNG";

session_start('akobookcode');
session_register('code');
mt_srand((double)microtime()*1000000);

// Numerical code
$seccode = mt_rand(10000, 99999);
$_SESSION['code'] = $seccode;

// create image
$im = ImageCreate(140, 40) or die('Image create error!');
// Image colors
// imagecolorallocate($im, R, G, B) Only change R,G,B (0-255)!
$bgcolor = ImageColorAllocate($im, 255, 102, 0);
$fontcolor = ImageColorAllocate($im, 255, 255, 255);
$linecolor = ImageColorAllocate($im, 148, 151, 255);
$bordercolor = ImageColorAllocate($im, 255, 128, 0);

// Grid
for($x=10; $x <= 100; $x+=10)
ImageLine($im, $x, 0, $x, 50, $linecolor);

// Middleline
ImageLine($im, 0, 9, 100, 9, $linecolor);

// Border
ImageLine($im, 0, 0, 0, 50, $bordercolor);
ImageLine($im, 0, 0, 100, 0, $bordercolor);
ImageLine($im, 0, 17, 100, 17, $bordercolor);
ImageLine($im, 59, 0, 59, 17, $bordercolor);

// Code
$font="tahoma.ttf";
imagettftext($im, 30, 0, 20, 32, $fontcolor, $font, $seccode);

// Create Image
switch($type) {
case 'JPEG':
// JPEG output
Header("Content-Type: image/jpeg");
ImageJPEG($im,"",75);
BREAK;

case 'PNG':
// PNG output
Header("Content-Type: image/png");
ImagePNG($im);
BREAK;

case 'GIF':
// GIF output
Header("Content-Type: image/gif");
ImageGIF($im);
BREAK;

default:
die("Wrong \$type in img.php (should be JPEG, PNG or GIF)\n");
}

ImageDestroy($im);
?>Und so sieht es aus, wenn ich die Datei img.php im Browser aufrufe: http://img88.imageshack.us/img88/774/img8qz.png

Stefreak
20.06.2006, 17:22
http://www.computerstefreak.de/index.php?option=com_akobook&Itemid=28&func=sign

Es klappt nicht. Dort steht statt dem Bild nur >Code<



MfG
Stefreak:lil:

Sirius
20.06.2006, 18:36
Ich frage nochmal:
1. Hast du den Code, so wie er dort steht übernommen?
2. Hast du den richtigen Zeichensatz (tahoma.ttf) im richtigen Verzeichnis (dasselbe wie die img.php) installiert?
3. Hast du die img.php manuell aufgerufen?

Wenn ich die Datei bei dir aufrufe: http://www.computerstefreak.de/components/com_akobook/img.php, dann erscheint folgender Fehler:

Die Grafik "http://www.computerstefreak.de/components/com_akobook/img.php" kann nicht angezeigt werden, weil sie Fehler enthält.

Hier findest du die funktionierenden Scripte und passenden Fonts:
http://brainaward.funpic.de/captcha

http://brainaward.funpic.de/captcha/img.php (leicht lesbare Grafik)
http://brainaward.funpic.de/captcha/img2.php (schwer lesbare Grafik)
(Die Größe der Grafik läßt sich im Script einstellen.)

BTW: Testet du auf dem heimischen Server (Apache, IIS, ...) oder direkt im Internet?

exe
20.06.2006, 20:19
Wenn solche Fehlermeldungen bei Grafiken kommen, welche per Skript erzeugt werden einfach mal die Datei speichern und den Inhalt mit dem Texteditor angucken.

<b>Warning</b>: imagettftext(): Could not find/open font in <b>/home/www/web177/html/components/com_akobook/img.php</b> on line <b>46</b><br /> :)

Okay ich geb zu bei meinen ersten Versuchen hab ich auch 15 Minuten gebraucht. ;)

Stefreak
23.06.2006, 09:38
Ich teste im Internet & Es klappt auch mit den vorgefertigten vollkommen unveränderten Scripts nicht.

Was ist da los? Die alste Grafik funktionierte!


MfG
Stefreak:sick:

Sirius
23.06.2006, 13:11
Es klappt auch mit den vorgefertigten vollkommen unveränderten Scripts nicht.Wie ich sehe hast, du die img.php gelöscht. Zunächst solltest du die Originaldatei wieder in das Verzeichnis kopieren. Es sei denn, du willst vorerst keine neuen Einträge bekommen.

Hast du die Dateirechte auf dem Server richtig gesetzt? Die Font-Datei muss lesbar sein: 'chmod 0444 *.ttf'

Dann kopiere mal die Dateien captcha.ttf und img2.php.txt in ein Extra-Verzeichnis auf dem Webserver und benenne img2.php.txt in img2.php um. Anschließend rufst du die img.php im Browser auf.

Anhand der Fehlermeldung (sofern eine vorliegt) kannst du die Zeile in der PHP-Datei lokalisieren. Sieh dazu in den Quelltext der Browser-Seite.

Stefreak
23.06.2006, 13:20
http://www.computerstefreak.de/components/com_akobook/img_old/img.php ist das Verzeichnis zur img.php

Achja da stehts ja im Quelltext! <b>Warning</b>:


imagettftext(): Could not find/open font in <b>/home/www/web177/html/components/com_akobook/img_old/img.php</b> on line <b>47</b>

Zeile 47 ist:
imagettftext($im, 20, 0, 8, 15, $fontcolor, $font, $seccode);


die Datei captcha.ttf ist CHMOD 777


MfG
Stefreak > Es klappt immer noch nicht!!

Sirius
23.06.2006, 14:26
Das Script findet den Font nicht: imagettftext(): Could not find/open font in <...> on line 47

Steht vor Zeile 47:
$font = "captcha.ttf";
und befindet sich die capcha.ttf im selben Verzeichnis wie das Script?

(Auf Schreibfehler achten - also nicht etwa "catpcha.ttf" ...)

Stefreak
23.06.2006, 15:50
Alles trifft zu - es müsste eigentlich alles gehen!


MfG
Stefreak

Stefreak
23.06.2006, 17:01
Hi

Wenn ich euch den Quellcode gebe, könnt Ihr mir dann helfen das hier

http://www.computerstefreak.de/components/com_securityimages/plugins/hncaptcha/1.0/imageGenerator.php?refid=fc858d309d8be984ccb176ea9d17c6f5a84be7eb&size=

einzuarbeiten?



MfG
Stefreak

Sirius
23.06.2006, 17:55
Am besten du zippst den Code, lädst die ZIP- Datei auf dem Server und schickst mir den Link per PN (Privater Nachricht).

Dann baue ich das Bildchen ein.