SQL-Injection

SQL-Injection

Ein Anführungszeichen in einem Nachschlagefeld schreibt die Abfrage neu.

Was ist SQL-Injection?

Eine vom Benutzer bereitgestellte Zeichenfolge wird zu einer Abfrage verkettet, und diese Zeichenfolge kann ändern, wonach die Abfrage fragt. Jede Anfrage läuft hier gegen eine echte eingebettete Datenbank, sodass nichts gefälscht wird. Sie unterbrechen ein Kontosuchformular mit einem einfachen Anführungszeichen, geben die gesamte Mitgliedertabelle mit ' OR '1'='1 zurück und verwenden dann UNION SELECT und information_schema , um Administrator-E-Mails und Passwort-Hashes daraus abzurufen. Der Fix bindet den Wert als Parameter, sodass die SQL-Grammatik Eingaben nie als Code analysiert. Keine Desinfektion, keine Firewall-Blocklist.

Was Sie lernen in SQL-Injection

SQL-Injection — Trainingsschritte

  1. Das Zielformular finden

    Bob hat Vantyr im Visier, einen Mitgliederdienst mit einer öffentlichen Seite zur Kontosuche . Keine Anmeldung, nur ein E-Mail-Feld, das den Tarif eines Mitglieds zurückgibt. Genau hier beginnen Angriffe auf Web-Anwendungen: bei einem ganz gewöhnlichen Formular, das im Stillen mit einer Datenbank spricht.

  2. Eine normale Suche absenden

    Sehen Sie sich zuerst an, wie sich das Formular im Normalfall verhält. Geben Sie die E-Mail-Adresse eines echten Mitglieds ein und senden Sie sie ab. Das Network panel des Browsers öffnet sich und zeichnet die Anfrage auf — genau das, was ein Entwickler in den DevTools sieht.

  3. Die Anfrage untersuchen

    Da ist die Anfrage. Die eingetippte E-Mail-Adresse reist in der Payload der Anfrage zum Server, und die Antwort liefert genau das eine passende Mitglied zurück. Bis hierhin ist nichts falsch — genau so soll die Funktion arbeiten.

  4. Den Handler-Code lesen

    Jetzt kommt der interessante Teil: der Server-Code, der diese Anfrage verarbeitet. Er baut die SQL-Abfrage, indem er Ihre E-Mail-Adresse direkt in den Abfragetext einfügt . Diese eine Anweisung ist das ganze Problem.

  5. Die Zeile mit der Schwachstelle finden

    Diese eine Anweisung ist die gesamte Schwachstelle: Ihre Eingabe wird in den SQL-Text geklebt, und der Kommentar zeigt genau die Abfrage, die an die Datenbank geht — live neu zusammengebaut aus allem, was Sie tippen.

  6. Die Abfrage mit einem Anführungszeichen aufbrechen

    Im Feld steht noch morgan.lee@example.com aus Ihrer ersten Suche. Ihre Eingabe landet innerhalb einer Zeichenkette in Anführungszeichen — was passiert also, wenn Sie selbst ein Anführungszeichen schicken? Hängen Sie ein einfaches Anführungszeichen an und senden Sie ab. Beobachten Sie dabei, wie sich der Kommentar executed query im Code beim Tippen neu aufbaut: Ihr Anführungszeichen landet innerhalb der Zeichenkette und zerlegt sie. Sie senden keine Daten mehr — Sie bearbeiten die Abfrage.

  7. Die Datenbankfehlermeldung lesen

    Der Server hat einen 500 mit einer echten Datenbankfehlermeldung zurückgegeben. Das zusätzliche Anführungszeichen hat die Zeichenkette vorzeitig beendet und die Abfrage fehlerhaft zurückgelassen. Die Datenbank hat versucht, sie auszuführen, und ist daran erstickt. So eine Fehlermeldung ist für einen Angreifer grünes Licht: Die Eingabe erreicht die SQL-Engine.

  8. Den Filter umgehen

    Jetzt bringen Sie die Abfrage dazu, etwas Nützliches für Sie zu tun. Schließen Sie die Zeichenkette selbst, ergänzen Sie eine Bedingung, die immer wahr ist — und der Filter WHERE filtert nicht mehr. Der Klassiker: ' OR '1'='1 .

  9. Den vollständigen Datenabzug sehen

    Der Filter ist weg. Statt eines einzigen Mitglieds liefert die Antwort die komplette Mitgliedertabelle : jede E-Mail-Adresse und jeden Tarif, den Vantyr führt. Sie haben nach einem Konto gefragt, und die Datenbank hat alle herausgerückt.

  10. Wissenscheck

    Sie haben gerade gesehen, wie eine einzige Payload die komplette Tabelle zurückgeliefert hat. Prägen Sie sich ein, warum.

Abdeckung der Sicherheits-Frameworks

OWASP Top 10

  • A05:2025 Injection
  • A03:2021 Injection

CWE

  • CWE-89 Improper Neutralization of Special Elements used in an SQL Command

CIS Controls

  • CIS 16 Application Software Security

NIST CSF

  • PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
  • PR.PS Platform Security