SQL-Injection
Teil 3: SQL-Injection: So schützen Sie Ihre Webserver vor Hackerangriffen
- SQL-Injection: So schützen Sie Ihre Webserver vor Hackerangriffen
- Teil 2: SQL-Injection: So schützen Sie Ihre Webserver vor Hackerangriffen
- Teil 3: SQL-Injection: So schützen Sie Ihre Webserver vor Hackerangriffen
- Teil 4: SQL-Injection: So schützen Sie Ihre Webserver vor Hackerangriffen
- Teil 5: SQL-Injection: So schützen Sie Ihre Webserver vor Hackerangriffen
- 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:
https://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:
https://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:
https://www.servername.de/
search.aspx?keyword=sql
SELECT url, title FROM myindex WHERE
keyword LIKE '%sql%'
kann wie folgt modifiziert werden:
https://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.

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:
Gutscheine
-
Peek & Cloppenburg* Düsseldorf
GLAMOUR SHOPPING WEEK bei Peek & Cloppenburg*: 20% Gutschein Zum Gutschein
bis 08.10.2023+ bis zu 1,0% Cashback -
XXXLutz
Glamour Shopping Week bei XXXLutz: 30% Rabatt + 22% Gutschein Zum Gutschein
bis 08.10.2023+ bis zu 3,0% Cashback -
Levi Strauss & Co.
Bis 25% sparen mit dem Levis Rabattcode zur GLAMOUR Shopping Week Zum Gutschein
bis 08.10.2023 -
DAZN
15€ Rabatt monatlich mit dem Jahresabo für DAZN Unlimited Zum Gutschein
bis 08.11.2023 -
Nespresso
Für Coffee Lover: 15% NESPRESSO Gutschein Zum Gutschein
bis 08.10.2023+ bis zu 1,5% Cashback -
eBay
10% Gutscheincode auf DYSON Zum Gutschein
bis 04.10.2023