Fragen zu SQL Injections

Cashmire

Grünschnabel
Hallo zusammen,

ich möchte bei meinem Projekt die Sicherheit bzgl. SQL Injectsions prüfen.

Ich gerne wissen, was man denn alles machen kann wenn man eine SQLi gefunden hat.
Vor allem folgende Punkte interessieren mich:
  • Kommt man über die DB auch auf den Server um Schadsoftware hochzuladen?
  • Kommt man über eine DB auf eine andere des selben Servers und kann man diese ebenfalls dumpen?
  • Wo sehe ich, ob evtl bereits Dumps von meiner DB gezogen wurden?
  • Gibt es generell eine Möglichkeit zu sehen ob ein SQLi Angriff durch ging?
Danke euch!
 
Hi Cashmire,

Kommt man über die DB auch auf den Server um Schadsoftware hochzuladen?
Das kommt auf die Art der Lücke, dem DB-Server und die generelle Absicherung des Systems an, aber normalerweise ja.

Kommt man über eine DB auf eine andere des selben Servers und kann man diese ebenfalls dumpen?
Je nachdem wie weit der Server übernommen wurde.

Wo sehe ich, ob evtl bereits Dumps von meiner DB gezogen wurden?
Nirgends, wenn der Angreifer seine Spuren verwischt hat.

Gibt es generell eine Möglichkeit zu sehen ob ein SQLi Angriff durch ging?
Ohne anständiges Logging in der angegriffenen Anwendung: Nein

Zum Thema Injection hier auch noch ein interessanter Beitrag von der Devoxx 2015:
Live Hacking gegen Webanwendungen: Übernahme von DB-Servern und Angriffe auf XML-Schnittstellen

Grüsse,
BK
 
Zuletzt bearbeitet:
Danke für deine Antwort.

Was mich etwas stutzig macht ist die Sache mit dem Serverzugriff.

Wenn das System ansonsten ordentlich gesichert ist und Passwörter von DB, Usern und evtl gespeicherten Datensätzen sich nicht mit denen des FTP/SFTP Zugangs decken.

Ich bin bis jetzt davon ausgegangen, dass man lediglich Zugriff auf die DB/DBs hat.

Was sollte man tun, wenn man bereits eine Injection vermutet?
  • DB / FTP Passwörter ändern?
  • alle Daten vom Server löschen und neu aufspielen?
  • ...
 
Hi,

ok, meine Antwort ist vielleicht doch ein bisschen zu viel "Panik". ;)
Du sollst halt verstehen, dass eine relativ harmlose SQL-Injection dir im Extremfall das System kosten kann. Sprich ein Angreifer kann das System übernehmen und somit alles davon abgreifen oder ändern. Wenn er das sauber macht und du keine eigenen Logs schreibst, dann bekommst du davon nicht mal etwas mit.

Was sollte man tun, wenn man bereits eine Injection vermutet?
Das System ordentlich überprüfen (Virenscanner, rkhunter, users, system logs). Wenn du dein System schon seit Monaten nicht mehr gepatcht hast, dann würde ich von 0 anfangen.

Ich bin bis jetzt davon ausgegangen, dass man lediglich Zugriff auf die DB/DBs hat.
Wie in dem Video demonstriert kann man über die Datenbank im Extremfall auch das System übernehmen. Hierzu braucht man allerdings auch Exploits um die (beschränkten) Rechte des DB-Servers auszuweiten. Das funktioniert halt nur, wenn dein System nicht ordentlich gepatcht ist (vorallem Kernel).

Grüsse,
BK
 
Danke nochmal :)

Also mein System ist ein Managed Server, an dem ich selber nichts update.

Ich habe meine einzelnen Domains unter eigenen Accounts, die als eigene User auf dem Server virtualisiert werden.

Ich könnte mir gut vorstellen, dass auf einer Domain eine Injection passiert sein kann, da die Anwendung die darauf läuft ziemlich veraltet ist.

Deiner Aussage zu folge, kann der Angreifer dann ggf. auch auf den ganzen Server zugegriffen haben und Schadsoftware nicht nur auf dem virtualisierten Teil wo auch die Injection lief aufgespielt haben, sondern eben auf dem kompletten Server - ist das richtig?
 
Hi

um es etwas anders zu sagen - die SQL-Injection selber ist für den Server im Gesamten nicht so schlimm. Mehr Daten auslesen/ändern, als man sollte. (Dass jemand die Daten dann hat kann je nach Daten natürlich sehr schlimm sein, aber für die Menschen, nicht für den Server).
Dann gibts aber meistens auch Programme, die Daten aus der DB verwenden - und da beginnt das Serverproblem dann. Angefangen mit ganz legitimen Aktionen, wie zB. über die DB den Hash von Passwörtern vergleichen - mit Schreibzugriff auf die DB hier könnte man sich leicht Adminrechte für das Forum verschaffen. Und mit Zugriff auf die AccountDB einer Bankseite, aber ohne Zugriff auf das besser gesicherte Zahlungsflusssystem, kann man sich mit dem eigenenen gesetzten Passwort auf der echten Bankseite einloggen und sich dort Geld vom Opfer zukommen lassen. Ganz ohne "heimlichen" Zugriff auf Kontostand usw. ... Weitere Beispiele mit Logininfos in DBs sind zB. Mailserver, oder auch SSH selber (wo man dann schon den gesamten Server steuern kann)
Falls das nicht genug Zugriff bietet, gibts noch immer genug Programme, die sich auf DB-Daten zu sehr verlassen (selbst reingeschrieben, also können sich manche Programmierer im Traum nciht vorstellen, dass die DB beim Auslesen was anderes wieder zurückliefert. ). Dass man zB. statt irgendeinem menschenlesbaren Text in der DB PHP-Code reinschreibt und der dann von anderen Programmen am Server ausgeführt wird, kommt schon mal vor...
Drittens gibts natürlich dann noch die unbewussten Fehler (egal ob in der PHP-Software oder in PHP oder der DB selber), die bei bestimmten Inhalten plötzlich andere Sachen auslösen als sie sollten.Klassisches Beispiel: Ein String ist länger als erwartet (auch wenn das für einen PHP-Programmierer eher nicht nach vollziehbar ist - PHP und DB haben viel C drin, und da eine fehlende Prüfung ein Problem)

...

Nächster Punkt, wer SQL-Injections im Code hat hat oft mehr Probleme. Oft auch welche außerhalb vom PHP-Code, zB. falsche EInstellungen der DB: Keine getrennten Zugriffspasswörter für verschiedene unabhängige Datenbanken wäre ein Spitzenkandidat. Und schön hat man mit einer Injection Zugriff auf alle DBs. ...

da die Anwendung die darauf läuft ziemlich veraltet ist.
Updaten? :D

Deiner Aussage zu folge, kann der Angreifer dann ggf. auch auf den ganzen Server zugegriffen haben und Schadsoftware nicht nur auf dem virtualisierten Teil wo auch die Injection lief aufgespielt haben, sondern eben auf dem kompletten Server - ist das richtig?
Prinzipiell ja. Auch wenn deine Softwareversion, die DB-Version, DB-EInstellungen usw. alle passen, gibt es noch immer die Möglichkeit, dass jemand bisher nicht (öffentlich) bekannte Bugs ausnutzt.

Was sollte man tun, wenn man bereits eine Injection vermutet?
Außer dem, was schon gesagt wurde:
a) Genaue Codestelle und Input usw. herausfinden versuchen, und das dem hersteller der Software melden
b) Wenns um Daten von Benutzern/Kunden/... usw. geht, die informieren. Ja, das kann wehtun. Nicht informieren aber noch viel mehr, wenn sie dadurch irgendeinen anderen Schaden haben und später draufkommen.

Sonstiges, nur nebenbei: FTP hat rein technisch mit SFTP kaum was zu tun. Und es gibt noch FTPS, nicht verwechseln.

Und zu dem Video...
a) Habs nicht schauen können
b) Bratkartoffel, warum kannst du noch :eek: :D ... Bitte, alle schnell Flash deinstallieren. Nicht nur eines der verbugtesten Programme aller Zeiten, sondern inzwischen von Adobe auch ganz offiziell aufgegeben.
c) Danke für den Hinweis, dass da Flasheinbindungen sind ... Vimeo-Videos gibts selten, wusste das nicht.
 
Zurück