Was genau bringt mir Sql-Injection Gefahr verringern?
Klar SQL = Datenbank aber über welche Gefahr wird hier gesprochen
Ich merke wir müssen die Einstellungen genauer unter die Lupe nehmen, danke für diese Hinweise und deinen Mut ;)
Hier eine erste URL:http://www.aspheute.com/artikel/20011030.htm
Eine erste Schlussfolgerung:
Das Einfügen von beliebigen SQL Strings in Formulare, die dann am Server ausgeführt werden. Und warum passiert das? Weil die Formulare dem Input der Benutzer vertrauen, und ihn nicht entsprechend validieren. Generell sollte Michael Howard's Regel gelten: All input is evil, until proven otherwise!. Somit ist die Gegenmaßnahme klar: validieren, validieren, validieren.
Naja da ich noch nicht all zu lange dabei bin habe ich mich einfach mal in meine Anfangszeit versetzt und mich gefragt was für fragen sind bei mir aufgetaucht für mich selber als ich das vkpMx durchgegangen bin. daher wohl die für euch sehr simplen fragen aber wohl für viele anfänger einfach nur eine einbahnstrasse :-[
Hi :)
Noch etwas zu den Internas der Funktion:
Die Validierung der dem Script übergebenen Parameter geschieht im pragmaMx fünfstufig:
- scriptseitige Konfiguration des Servers in einen bestimmten Zustand, der die Gefahren hier bereits minimiert
- check auf bestimmte verdächtige Strings und ggf. deren Entfernung bzw. Entschärfung sofort wenn die Daten ankommen
- Behandlung der übergebenen Parameter in ein bestimmtes genau definiertes Format, so dass die Daten in diesem Zustand bereits an die Datenbank geschickt werden könnten
- Alle Module und Funktionen im pragmaMx validieren die Daten nochmals eigenständig auf Gültigkeit, bevor sie an die Datenbank oder direkt zur Anzeige gesendet werden. Das ist das sicherste und beste Verfahren, denn nur das Modul selbst kann wissen, welche Daten für das Modul selbst gültig und zulässig sind.
- Beim Zugriff auf die Datenbank über die entsprechenden Datenbankfunktionen werden die Daten nochmals auf bestimmte verdächtige Strings überprüft und ggf. werden diese wieder entfernt oder entschärft. Die Daten könnten ja in der Zwischenzeit durch das Modul oder eine Systemfunktion verändert worden sein.
Der Punkt "Sql-Injection Gefahr verringern", oder auch mx-detection genannt, betrifft jetzt die Stufen 2 und 5. Wenn diese Option eingeschaltet ist, dann erst, kommt die Stufe 5 richtig zum tragen. Es werden dann die dem Script übergebenen Parameter, wenn sie verdächtige Zeichenfolgen enthalten, so wie sie ankommen, nochmals mit den Daten verglichen, so wie sie an die Datenbank gesendet werden. Besteht hier eine Übereinstimmung, d.h. ein verdächtiger String befindet sich sowohl in den Übergabeparametern als auch in der Datenbankanfrage, so schlägt das System Alarm.
Es werden in der Grundeinstellung sämtliche Übergabeparameter, die komplette Datenbankanfrage, versch. Browser- sowie Userdaten, IP-Adressen usw. mitgeloggt und an den Administrator per mail gesendet.
Natürlich wird auch verhindert, dass die entsprechenden Daten an die Datenbank gesendet werden.
Je nach schwere des potentiellen Angriffs wird die zugehörige IP-Adresse im System gesperrt.
So, der ganze Aufwand verbraucht natürlich einiges an wertvollen Systemrsourcen und Rechnerzeit. Da, wie in Punk 4 zu sehen ist, das pragmaMx und dessen Module bereits keine Probleme mit sql_injections haben, wird diese Option eigentlich fast ausschliesslich für Fremdmodule, Themes oder Blöcke benötigt und kann eigentlich bei einer pragmaMx "ReinInstallation" abgeschaltet bleiben.
Allerdings ist es ganz interessant anhand der Log-Mails zu sehen, wie sich die Nuke-Scriptkiddies an dem System die Zähne ausbeissen ;)
Nachfolgend ein Log-Mail, wo ein Kiddie versucht hat die Adminpasswörter über das Private_Messagemodul von nuke 6.5 auszulesen...
05-08-2005 18:01:13 [Union] Hack detected (0)
user: Anonymous
admin: Anonymous
request:
_GET[name] = Private_Messages
_GET[file] = index
_GET[folder] = savebox
_GET[mode] = read
_GET[p] = 99
_GET[pm_sql_user] = AND pm.privmsgs_type=-99 UNl0N SELECT aid,null,pwd,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null FROM nuke_authors WHERE radminsuper=1 LIMIT 1/*
_GET[pm_sql_user (encoded)] = Ğş¦jkŠù¬,Ër¥
Serverinfo:
REMOTE_ADDR: 81.215.203.178
QUERY_STRING: name=Private_Messages&file=index&folder=savebox&mode=read&p=99&pm_sql_user=AND%20pm.privmsgs_type=-99%20UNION%20SELECT%20aid,null,pwd,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null%20FROM%20nuke_authors%20WHERE%20radminsuper=1%20LIMIT%201/*
REQUEST_URI: /cool//modules.php?name=Private_Messages&file=index&folder=savebox&mode=read&p=99&pm_sql_user=AND%20pm.privmsgs_type=-99%20UNl0N%20SELECT%20aid,null,pwd,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null%20FROM%20nuke_authors%20WHERE%20radminsuper=1%20LIMIT%201/*
REMOTE_PORT: 50725
REMOTE_HOST:
HTTP_REFERER: http://xxxx.host.sk/phpnuke.php?target=http%3A%2F%2Fwww.xxxxx.com%2Fcool%2F&admin=karakutu&sifre=dreamcast&Submit=Sitedeki+a%E7iklara+bak
HTTP_USER_AGENT: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
HTTP_X_FORWARDED_FOR:
Apropo Adminpasswörter:
Durch die Sessionautentifizierung im pragmaMx kann man mit den MD5 verschlüsselten Passwörtern der USer oder Admins so gut wie nichts anfangen. Die einzige Möglichkeit ist per "brute-force" den md5 Haschwert zu knacken. Nicht unmöglich, aber seeeehr unwahrscheinlich, weil ein "brute-force Login" im pragmaMx auch blockiert wird.
Hey Andi,
danke dir für die Erklärung.
Jetzt kann ich wieder in ruhe atmen :)
Kannst du mal kurz erklären was da in den logs vor sich geht. Ist mir irgendwie nicht so klar.
lG
Zitatin den logs vor sich geht
Moin ;)
da geht nichts drin vor, da werden einfach nur die Daten, die per mail kommen nochmal in einer Textdatei zusammengefasst.
häHä!
Ich meinte natürlich der ablauf z.B: anfrage xy - gesendet , dann funktion ab ausgeführt etc. .Keine Ahnung wie ich anders eklären soll. Aber ist auch nicht wichtig hätte es nur gerne verstanden.
ICH GEB JETZT MAL WIEDER RUHE, FRAG HIER EH SCHON IMMER LÖCHER IN BAUCH:
lg :-X