SQL-Injection

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

8.3.2010 von Redaktion pcmagazin und Anna Kobylinska

ca. 2:35 Min
Ratgeber
  1. SQL-Injection: So schützen Sie Ihre Webserver vor Hackerangriffen
  2. Teil 2: SQL-Injection: So schützen Sie Ihre Webserver vor Hackerangriffen
  3. Teil 3: SQL-Injection: So schützen Sie Ihre Webserver vor Hackerangriffen
  4. Teil 4: SQL-Injection: So schützen Sie Ihre Webserver vor Hackerangriffen
  5. Teil 5: SQL-Injection: So schützen Sie Ihre Webserver vor Hackerangriffen
  6. Teil 6: 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
suPHP ermöglicht das Ausführen von PHP-Skripten mit granulierten Zugriffsrechten.
© Archiv

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 lesen

Chronologische Liste und Netflix-Links

Marvel-Filme- und -Serien: Das ist die richtige Reihenfolge

Neuerscheinungen in der Übersicht

Netflix: Neue Filme und Serien

Vorschau auf Film- und Serien-Highlights

Amazon Prime Video: Neuheiten

Weiter zur Startseite  

Mehr zum Thema

internet, webdesign, adobe,  Illustrator, CS6

Webdesign

Webdesign in Adobe Illustrator CS6

Adobe Illustrator wird im Webdesign immer beliebter. Wie Sie das Tool richtig einsetzen, erfahren Sie hier.

Facebook stellte die neue Suche

Facebook

Facebooks Social Graph Search

Was sind die Implikationen für Unternehmen und Endanwender bei Facebooks neuer Suche Graph Search?

Der BGH erklärt das Internet zur Lebensgrundlage.

Online-Recht

Darauf müssen Sie bei den AGB achten

Allgemeine Geschäftsbedingungen liest sich niemand gerne durch. Sie sind jedoch notwendig und äußerst sinnvoll. Worauf sie achten sollten.

Online-Urheberrecht: Unser Ratgeber bietet Tipps für das Cloud-Recht.

Online-Recht in der Cloud

Wie sieht das Urheberrecht in der Wolke aus?

Dateien werden immer häufiger in der Cloud bereitgestellt. Rechtlich ist das jedoch durchaus problematisch. Wir klären über das Urheberrecht in der…

Logistik im E-Commerce: Prozesse rund um die Logistik.

E-Commerce-Logistik

Logistik im E-Commerce

Für den Erfolg eines Online-Shops sind zahlreiche Faktoren verantwortlich. Neben Produktvielfalt und Darstellung der Waren gehört auch die Logistik.