Seite 1 von 1

Script Kiddys ?

Verfasst: 04.02.2008, 12:36
von Ice Man
Ich habe auf meinen Seiten externe Links, die über ein Script laufen.

Also es ist so verlinkt

links.php?id=1
links.php?id=3
usw

Ruft man die Seite auf, dann wird die Ziel URL aus der DB geholt und per 301 auf die Seite weitergeleitet. Das mache ich hauptsächlich wegen der Klick Zahlung.

Wenn nun jemand eine ID Aufruft, die nicht mehr Existiert, dann bekommt ich vom Script eine Mail. So kann ich falsche Links oder Fehler besser finden.

Das Problem, jeden Morgen hab ich an die 50 Mails im Postfach.
Jedes Mal wurde meine Seite so aufgerufen

links.php?id=https://www.irgendwas.ru/order/fake.gif
Und viele andere Varianten.

Was wird damit eigentlich versucht ?
Wollen die Irgendwas einschleusen ?
Das kann doch eigentlich nix bringen, da deren URL doch nie aufgerufen wird. Das Script schau nun ob zu dieser ID eine passende URL vorhanden ist, und liefert diese aus.

In dem Fall kommt aber immer ne Fehlermeldung, deswegen bekomme ich ja auch die Mail.

Habt ihr auch solche Probleme ?
Ich überlege schon, vorher eine Abfrage einzubauen, die Prüft ob die Variable nur aus Zahlen besteht, wenn nicht 404.....

Verfasst:
von

Verfasst: 04.02.2008, 13:11
von everflux
Deine Überlegung ist eine sehr gute Idee, die würde ich direkt mal umsetzen :)
Meiner Erfahrung nach kommt nach fake.gif noch ein Haufen "???" und dann der Versuch einer php-code-injection.

Verfasst: 04.02.2008, 13:22
von Pompom
Rufe https://www.irgendwas.ru/order/fake.gif
auf, i.d.R. siehst du da Scripts bzw. Programmcodes, die irgendwelche Kiddys gerne in deinen Server schleusen würden, um eine Backdoor zu haben.

Verfasst:
von

Verfasst: 04.02.2008, 13:22
von whyte
Hallo,

Code: Alles auswählen

if (!intval($_GET[id])) { //ERROR 404 }
würde ich schon deswegen machen, um damit nicht die Datenbanken zu belasten.
Ich hoffe, du filterst die Datenbankabfragen auch mit mysql_real_escape_string und nutzt nicht direkt das, was bei $id eingegeben wird, für die Abfrage in der Datenbank ?

gruß
Marco

Verfasst: 04.02.2008, 13:23
von net(t)worker
everflux hat geschrieben:Deine Überlegung ist eine sehr gute Idee, die würde ich direkt mal umsetzen :)
Das Variabeln die von aussen übergeben werden immer auf Gültigkeit überprüft werden müssen zählt zu den PHP-Grundlagen... solltest dir die scripte evtl. von erfahrenen PHP-Scriptern erstellen lassen....
everflux hat geschrieben: Meiner Erfahrung nach kommt nach fake.gif noch ein Haufen "???" und dann der Versuch einer php-code-injection.
naja... bei einer erfolgreichen injection gibts die fehlermeldung ja nicht mehr unbedingt... also keine Mail für ihn...

Verfasst: 04.02.2008, 13:30
von Ice Man
whyte hat geschrieben:Hallo,

Code: Alles auswählen

if (!intval($_GET[id])) { //ERROR 404 }
würde ich schon deswegen machen, um damit nicht die Datenbanken zu belasten.
Ich hoffe, du filterst die Datenbankabfragen auch mit mysql_real_escape_string und nutzt nicht direkt das, was bei $id eingegeben wird, für die Abfrage in der Datenbank ?

gruß
Marco
Danke, werd ich mal testen :)

Zu Frage 2, doch ;)
Ich mach dann ein e Abfrage in der Forum von

Select from Table where id = '$id';
Normal sollte da doch nix passieren.

Verfasst: 04.02.2008, 13:33
von marc75
if(is_numeric($_GET['id']))


@ice_man die versuchen das hier https://de.wikipedia.org/wiki/Cross-Site_Scripting

Verfasst: 04.02.2008, 13:44
von Ice Man
Danke für den Link.
Die Beispiele hier haben mir verdeutlicht was ihr meint.

https://de.wikipedia.org/wiki/SQL-Injektion#Vorgang

Also ich hätte nicht gedacht, das das so einfach geht.
Grübel....

Verfasst: 04.02.2008, 13:45
von net(t)worker
Ice Man hat geschrieben:Zu Frage 2, doch ;)
Ich mach dann ein e Abfrage in der Forum von

Select from Table where id = '$id';
Normal sollte da doch nix passieren.
naja... dann setz doch als $id einfach mal:

1'; delete from Table where id not '0

ein... :wink:

Verfasst: 04.02.2008, 13:48
von Ice Man
Krass, genau das hab ich nun dank des Wiki Beispiel kapiert.
Zum Glück ist nie was passiert.
Nun muss ich alles anpassen, na bravo :o

Edit

Select from Table where id = '".mysql_real_escape_string($id)."';

So ist es dann sicher oder ?

Verfasst: 04.02.2008, 14:01
von net(t)worker
Ice Man hat geschrieben:Zum Glück ist nie was passiert.
Naja... einen erfolgreichen Angriff musste nicht unbedingt bemerken... nen Profi installiert sich ne Hintertür und beseitigt alle Spuren in logfiles etc...

Verfasst: 04.02.2008, 16:25
von Erodua
Da ja auch noch andere Parameter ausser einer numerischen ID genutzt werden könnten hab ichs so gelöst:

Code: Alles auswählen

RewriteCond %{QUERY_STRING} (http://).*$ [NC]
RewriteRule ^.* - [F]
funktioniert auch wunderbar.