heise online Logo
Anmelden
Menü
  • c't – Magazin für Computertechnik
  • iX – Magazin für professionelle Informationstechnik
  • MIT Technology Review – Das Magazin für Innovation von Heise
  • c't Fotografie - Das Magazin rund ums digitale Bild
  • Mac & i – Nachrichten, Tests, Tipps und Meinungen rund um Apple
  • Make – Kreativ mit Technik
  • Alle Magazine im Browser lesen
IT News
  • Newsticker
  • heise Developer
  • heise Netze
  • heise Open Source
  • heise Security
Online-Magazine
  • heise+
  • Telepolis
  • heise Autos
  • TechStage
  • tipps+tricks
Services
  • Stellenmarkt heise Jobs
  • Weiterbildung
  • heise Download
  • Preisvergleich
  • Whitepaper/Webcasts
  • DSL-Vergleich
  • Netzwerk-Tools
  • Spielen bei Heise
  • Loseblattwerke
  • iMonitor
  • IT-Markt
Heise Medien
  • heise Shop
  • Abo
  • Veranstaltungen
  • Arbeiten bei Heise
  • Mediadaten
  • Presse
Anzeige Go! Schule morgen
Newsletter heise-Bot heise-Bot Push Nachrichten Push Push-Nachrichten
heise Security Logo
  • News
    • Archiv
    • 7-Tage-News
  • Hintergrund
  • heise Security Pro
    • FAQs zu heise Security Pro
  • Events
  • Kontakt
  1. Security
  2. Hintergrund
  3. Giftspritze

Giftspritze

Hintergrund 06.01.2004 20:00 Uhr Daniel Bachfeld
Inhaltsverzeichnis
  1. Giftspritze
  2. Kung Fu
  3. Besser Coden
  4. Auf einer Seite lesen

SQL-Injection bezeichnet das Einschleusen von eigenen Befehlen in eine SQL-Datenbank. Überprüft eine Web-Applikation Benutzereingaben nicht ausreichend, ist damit jede Datenbank auf jedem Betriebssystem verwundbar.

Webshops, News-Boards, Groupware- und Content-Management-Systeme setzen Datenbanken ein, um darin Kundendaten, Artikel und Texte abzulegen. Oft trifft der Besucher solch einer Seite auf Kombinationen von Windows-2000-Server, IIS, MS-SQL-Server und Active Server Pages oder Linux zusammen mit Apache, mySQL und PHP oder Perl.

In Webformularen können Benutzer Informationen eingeben, um Bestellungen einzugeben oder sich als Kunde zu registrieren. Aus diesen Angaben erzeugt die Web-Applikation dynamische Datenbankanfragen. Überprüft die Applikation die Eingabe nicht oder fehlerhaft, ist es möglich, spezielle Zeichenketten einzuschleusen. Mit geschickt gewählten Eingaben kann ein Angreifer dann eigene Parameter und Befehle an die Datenbank übergeben und auf deren Inhalte und sogar das System zugreifen.

Linguistik

Um Daten in eine SQL-Datenbank zu schreiben oder daraus zu lesen, kommuniziert eine Applikation mit der Datenbank über die Befehlssprache SQL (Structured Query Language). In der Regel übergibt sie einen kompletten String, den sie vorher aus Befehlen und Benutzereingaben zusammengefügt hat. Da es eine Vielzahl von SQL-Datenbank-Lösungen gibt, die teilweise eigene Funktionen unterstützen, ist der SQL-Befehlsumfang mittlerweile recht groß. Eine Schnittmenge von Befehlen, wie etwa Befehle SELECT, UPDATE, DELETE, INSERT, DROP und WHERE, verstehen aber alle. SQL-Datenbanken können mehrere Datenbanken mit jeweils mehreren Tabellen enthalten, die wiederum aus mehreren Spalten bestehen.

Ungefiltert

Mit dem SQL-Befehl

SELECT * FROM kunde WHERE card = 'visa'

liefert eine Datenbank alle Datensätze der Tabelle kunde zurück, die in der Spalte card den Wert visa abgelegt haben. Ersetzt man die konstante Zeichenkette visa durch eine Variable $card, so sind in Verbindung mit einer Benutzereingabe verschiedene Zeichenketten möglich:

SELECT * FROM kunde WHERE card = '$card'

Solange in der Variablen Werte wie visa, amex oder master stehen, reagiert die Datenbank wie erwartet. Gibt ein böswilliger Benutzer jedoch die Zeichenkette ';DROP TABLE KUNDE-- ein, schickt die Applikation folgendes an die Datenbank:

SELECT * FROM kunde WHERE card = '';DROP TABLE KUNDE--'

Da das Semikolon ein Trennzeichen darstellt, sieht die Datenbank zwei Befehle:

SELECT * FROM kunde WHERE card = ''

zeigt alle Datensätze deren Spalte card leer ist. Anschließend führt die Datenbank den zweiten Befehl aus, der die Tabelle kunde komplett löscht.

DROP TABLE KUNDE--'

Die zwei Bindestriche kennzeichnen den Anfang eines Kommentars, weshalb auch das letzte Hochkomma (Quote) ignoriert wird, statt einen Fehler hervorzurufen. In diesem Beispiel kann ein Angreifer ohne vorherige Authentifizierung ganze Tabellen von der Festplatten wischen. Allerdings muss die Web-Applikation die erforderlichen Zugriffsrechte besitzt. Beim Anlegen des entsprechenden Datenbanknutzers muss der Datenbank-Administrator das Löschen mittels DROP erlauben.

Das grundlegende Problem bei SQL-Injection ist die fehlende Filterung der Eingaben auf mögliche Quotes. Viele Applikationen setzen einen SQL-Befehl aus Stringelementen zusammen, die von Hochkommas eingerahmt werden müssen. Unter Java sieht das dann so aus:

String sql = new String("SELECT * FROM kunden WHERE
card= '" + request.getParameter("cardname")"'")

Java expandiert die Eingabe cardname und fügt sie dem feststehenden String hinzu. Mögliche Quotes in cardname bleiben erhalten, erscheinen nun aber in einem anderem Kontext. Der ursprünglichen Befehl kann um weitere Befehle ergänzt werden.

Vorherige 1 2 3 Nächste

Teile diesen Beitrag

https://heise.de/-270382 Drucken
Dienste
  • Security Consulter
  • Netzwerkcheck
  • Anti-Virus
  • Emailcheck
  • Krypto-Kampagne
Alerts! alle Alert-Meldungen

Citrix

Tails, Tor Browser

Google Chrome

Zoom

Anzeige
  • Chrome OS: Das bessere Betriebssystems
  • So geht intelligentes Gebäudemanagement
  • OPPO Find X5 Pro: Fotos und Videos auf professionellem Niveau
  • Zuverlässiger Zugriff dank Zero Trust
  • Wie IT zu nachhaltigem Wirtschaften beitragen kann
  • Sicher entwickeln im Open-Source-Universum
  • Kundenservice mit künstlicher Intelligenz
  • Wann lohnt es sich, die IT-Security auszulagern?
  • Weniger Umweltbelastung durch die IT
  • Mehr Kunden mit Ihrem Online-Shop gewinnen
Artikel

Utimaco, der Krypto-Miner und ein Disclosure-Desaster​

Auch Anbieter von Hochsicherheitslösungen sind vor Securityproblemen nicht gefeit. Man sollte sich vorbereiten, bevor man davon erfährt, sagt Jürgen Schmidt.

11 Kommentare
Aufmacher: Kommentar Welt-Passwort-Gedenktag

Kommentar: "Willkommen zum Welt-Passwort-Gedenktag"

Welt-Passwort-Tag: Jürgen Schmidt, Senior Fellow Security bei Heise, hat einen Kommentar aus einer Zukunft ohne Passwörter geschickt.

230 Kommentare
  • Passwortsicherheit – Alles, was Sie wissen müssen
  • Welt-Passwort-Tag: Zugangssicherheit im Fokus

Der Patch-Alptraum: Wenn schnell nicht schnell genug ist

Neben den überbewerteten Zero-Day-Lücken gibt es eine weniger bekannte Bedrohung durch "Beinahe-Zero-Days". Die sind weitverbreitet und brandgefährlich.

95 Kommentare

Neueste Forenbeiträge

  1. Re: Desinfect 2021-p2 erkennt Ethernet Verbindung in Bauvorschlag 9-2022 nicht
    Hallo, ich schrieb selbst: Da ich weder den c't-Bauvorschlag 2021 bzw. 9/2022 noch ein aktuelleres Desinfec't (z.B. 2021/2022 aus dem…

    Forum:  Desinfect

    maal1 hat keinen Avatar
    von maal1; vor 8 Stunden
  2. Re: Nicht nur SOPHOS, auch ESET mag nicht, Rechtefehler bei ClamAV
    Moin, wir gucken. Viele Grüße des

    Forum:  Desinfect

    Avatar von Dennis Schirrmacher
    von Dennis Schirrmacher; Dienstag, 16:28
  3. Re: sudo apt-get update: Signatur abgelaufen
    Moin, wir schauen uns das an. Viele Grüße des

    Forum:  Desinfect

    Avatar von Dennis Schirrmacher
    von Dennis Schirrmacher; Dienstag, 16:27
News und Artikel
  • News
  • 7-Tage-News
  • News-Archiv
  • Hintergrund-Artikel
  • Alert-Meldungen
Service
  • Newsletter
  • Tools
  • Foren
  • RSS
  • mobil
Dienste
  • Security Consulter
  • Netzwerkcheck
  • Anti-Virus
  • Emailcheck
  • Krypto-Kampagne
  • Datenschutz
  • Cookies & Tracking
  • Impressum
  • Kontakt
  • Barriere melden
  • Mediadaten
  • 244982
  • Content Management by InterRed
  • Hosted by Plus.line
  • Copyright © 2022 Heise Medien