SQL-Injection

Teil 3: SQL-Injection: So schützen Sie Ihre Webserver vor Hackerangriffen

Was man unter lückenloser Sicherheit verstehen möchte, ist natürlich höchst relativ. Auch wenn MySQL und PHP fachgerecht installiert wurden, so kann dennoch zum Beispiel eine fehlerhafte Apache-Konfiguration die ganze Sicherheit komplett infrage stellen.

Liegt eine Include-Datei innerhalb des Dokumenten-Verzeichnisses des Webservers, wie es bei Shared-Hosting oft der Fall ist, so ist die Sicherheit leicht zu kompromittieren. Bei einem dedizierten Server kann man Include-Dateien außerhalb des Dokumenten-Verzeichnisses von Apache 2 ablegen, damit sie nicht über das Internet zugänglich sind.

Parameterübergabe

Skripte, die bereits auf dem Server liegen und Parameter über die URL entgegennehmen, bieten sich für SQL-Injections nahezu an. Werden auf einem Webserver etwa CGI-Skripte zum Zugriff auf eine SQL-Datenbank genutzt, können sie oft ohne Weiteres missbraucht werden. Ein Aufruf eines CGI-Skriptes zum Auslesen eines Datenbankelementes wie diesem:

http://www.servername.de/cgi-bin/
find.cgi?ID=54

resultiert dann etwa im Absenden eines SQL-Befehls wie diesem:

SELECT author, subject, text FROM
artikel WHERE ID=54

Ein Angreifer kann über das URL-Feld zusätzliche Parameter an das Skript übergeben, um dem SQL-Parser bösartigen Code unterzuschieben. Zum Beispiel aus diesem modifizierten Aufruf:

http://www.servername.de/cgi-bin/
find.cgi?ID=54;UPDATE+USER+SET+TYPE="admin"+WHERE+ID=13

ergibt sich der folgende SQL-Befehl - mit weitreichenden Folgen für die Integrität der Datenbank:

SELECT author, subject, text FROM
artikel WHERE ID=54; UPDATE USER SET TYPE="admin" WHERE ID=13

Doch es geht sogar noch weiter. Wenn man eine SQL-Injection ins Spiel bringt, kann man leider mehr Unheil anrichten als lediglich ein paar Variablen zu verändern, bestehende Benutzer zu löschen oder neue Benutzer einzurichten. Ein Angreifer kann im extremsten Fall unter Windows sogar die Festplatte formatieren, wenn er es darauf anlegt.

Ein beabsichtigter Aufruf eines an sich harmlosen Skriptes, welches den Parameter keyword entgegennimmt:

http://www.servername.de/
search.aspx?keyword=sql
SELECT url, title FROM myindex WHERE
keyword LIKE '%sql%'

kann wie folgt modifiziert werden:

http://www.servername.de/search.asp
x?keyword=sql'+;GO+EXEC+cmdshell('format+C')+-- SELECT url, title FROM myindex WHERE keyword LIKE '%sql' ;GO EXEC cmdshell('format C') --%'

Wie auch in dem ersten Beispiel wird der ursprünglichen Abfrage noch ein weiterer Befehl angehängt. Die zwei Bindestriche sind insofern trickreich, weil auf diese Weise das Hochkomma als Rest der eigentlichen Abfrage auskommentiert wird.

Der Datenbankadministrator merkt das spätestens jetzt, wenn die Festplatte wie aus heiterem Himmel formatiert wird. Das Potenzial von SQL-Injections, Unheil anzurichten, darf also wirklich nicht auf die leichte Schulter genommen werden.

Offengelegter Quelltext

Eine besonders wichtige Sicherheitslücke stellen Quelltexte dar, die im Web-Browser im Klartext dargestellt werden können. Das betrifft sowohl Javascript-Code, der Formulareingaben verarbeitet, als auch etwaige Fehlermeldungen des PHP-Interpreters.Wer diese Aspekte der Webserversicherheit ignoriert, lädt Angreifer ein. Es ist ungefähr so als ob man sich vor der Abreise um die Absicherung kleiner Fenster auf dem Dach eines Einfamilienhauses gekümmert und dann den Schlüssel zur Haustüre im Erdgeschoss im Schloss stecken gelassen hätte.Das Problem mit offengelegtem Quelltext betrifft unter anderem Include-Dateien, die im Dokumentenverzeichnis abgelegt wurden. Apache weiß leider nicht, was und wie wichtig eine .inc-Datei wirklich ist. Den inc-Dateien wird von Apache leider standardmäßig nur der unpassende DefaultType text/plain zugewiesen. Als Folge daraus sind Include-Dateien leider im Webbrowser im Klartext für jeden zu sehen.

Sicherheit

© Archiv

suPHP ermöglicht das Ausführen von PHP-Skripten mit granulierten Zugriffsrechten.

Abhilfe schafft man hier, indem man die Include-Dateien in einem Verzeichnis ablegt, welches aus dem Web nicht zugänglich ist. Ist es aus technischen Gründen nicht möglich, wie es oft bei Shared-Hosting der Fall ist, so kann man sich durch das Anpassen der Apache-Konfiguration behelfen:

Mehr zum Thema

Youtube Sperre umgehen GEMA
Videos freischalten

So umgehen Sie die GEMA-Sperre bei Youtube. Was Sie dazu brauchen, und wie es am einfachsten geht.
Neue Fritzboxen unterstützen den AC-Standard.
WLAN-Geschwindigkeit verdoppeln

Mehr WLAN-Geschwindigkeit: Mit dem WLAN-Standard 802.11ac und den richtigen Geräten und Einstellungen verdoppeln Sie den Datendurchsatz.
Netflix auf dem TV
Programm in der Übersicht

Welche Filme und Serien gibt es bei Netflix eigentlich zu sehen? Was ist neu im Streaming-Angebot? Diese Antworten helfen weiter.
Netflix
Streaming

Preise, kompatible Geräte, Datenrate, Serien- und Filmangebot von Netflix: Wir beantworten die wichtigsten Fragen rund um den Streaming-Dienst.
E.T. – Der Außerirdische
Vorschau auf Film- und Serien-Highlights

Amazon Prime Instant Video lockt im Dezember 2016 mit Film-Highlights wie "E.T.", "Fast & Furious 7" und der Serie "Ku’damm 56​".