Was genau bringt mir Sql-Injection Gefahr verringern?

Begonnen von Energy-drink, 05 August 2005, 09:12:53

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

Energy-drink

Was genau bringt mir Sql-Injection Gefahr verringern?

Klar SQL = Datenbank aber über welche Gefahr wird hier gesprochen
Ich bin alt aber bezahlt.... ;-)
Ich würde ja gerne die Welt verändern,
aber Gott gibt mir den Quellcode nicht!

der_luecke

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.
Grüsse
Olaf

Kein Support über Mail, (ungefragter) PN oder ICQ, ausschließlich direkt im Forum!
Das ich so was mal schreiben muss;-)

Energy-drink

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  :-[
Ich bin alt aber bezahlt.... ;-)
Ich würde ja gerne die Welt verändern,
aber Gott gibt mir den Quellcode nicht!

Andi

#3
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.
schön´s Grüssle, Andi

Catlak

Hey Andi,
danke dir für die Erklärung.
Jetzt kann ich wieder in ruhe atmen  :)

schnikemike

Kannst du mal kurz erklären was da in den logs vor sich geht. Ist mir irgendwie nicht so klar.
lG
Wer anderen eine Grube gräbt der hat ein Grubengrabgerät!
 

Andi

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.
schön´s Grüssle, Andi

schnikemike

#7
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
Wer anderen eine Grube gräbt der hat ein Grubengrabgerät!