
Ein Freund hat mich auf eine SQL-Injection-Schwachstelle in einer Anwendung hingewiesen, mit der ich arbeite.
Dieser Suchparameter:
'; exec xp_cmdshell 'dir'; --
Die Nachricht kam zurück:
The EXECUTE permission was denied on the object
'xp_cmdshell', database 'mssqlsystemresource', schema 'sys'.
Weil die Suche von einem Konto aus ausgeführt wird, das nur über Auswahlberechtigungen für einige Tabellen und gespeicherte Prozeduren verfügt.
Ich habe mich gefragt: Wenn ein böswilliger Benutzer zufällig die Anmeldeinformationen eines Administratorkontos für den SQL-Server kennt, wäre es ihm dann möglich, mit den Anmeldeinformationen über die Befehlsshell Root-Zugriff auf den Computer zu erhalten, oder dies auf andere Weise zu böswilligen Zwecken zu tun?
Antwort1
Es ist möglich, dass eine SQL-Injection mithilfe von zu einem Benutzer mit höheren Berechtigungen auf dem SQL-Server wechseln könnte exec as {credentials}
. Der ursprüngliche Benutzer, der die Abfrage ausführt, müsste jedoch über IMPERSONATE
Berechtigungen für den Benutzer verfügen, zu dem er wechseln möchte. Dies ist keine Standardkonfiguration, Sie müssten sie hinzufügen (es wäre ziemlich seltsam, dies ebenfalls hinzuzufügen).
Antwort2
Es ist wirklich egal, ob es möglich ist oder nicht. Sie haben hier ein echtes Problem, das Sie lösen sollten. Dieser Befehl hätte nicht einmal an den Server zurückgesendet werden dürfen.