Teil 1 – Was ist Injection?

Ein einfacher Gedankentrick

Stell dir vor, du gehst in ein Restaurant und bestellst: „Einmal Pizza Margherita.“ Der Kellner schreibt das auf. Alles normal.
Jetzt stell dir vor, du sagst: „Einmal Pizza Margherita und öffne die Kasse.“ Der Kellner führt beides aus – weil er deine Bestellung nicht von echten Befehlen unterscheiden kann.
Genau das ist Injection in Computersystemen: Nutzer-Eingaben werden nicht sauber von Befehlen getrennt, und plötzlich führt die Anwendung Dinge aus, die niemals erlaubt sein sollten.


Definition von Injection

Unter Injection versteht man Schwachstellen, bei denen ein Angreifer eigenen Code, Befehle oder Abfragen in eine Anwendung einschleusen kann. Die Anwendung verarbeitet diesen Input so, als wäre er legitim – oft mit gravierenden Folgen:

  • Auslesen oder Manipulieren von Daten.
  • Umgehung von Logins und Zugriffsbeschränkungen.
  • Übernahme des Systems bis hin zu Remote Code Execution (RCE).

Injection ist seit über 20 Jahren eine der gefährlichsten Web-Schwachstellen und taucht regelmäßig in den OWASP Top 10 auf.


Typen von Injection

Es gibt viele Varianten, die alle denselben Kern haben: „Fremder Code wird nicht als Daten erkannt, sondern als Befehl ausgeführt.“ Die wichtigsten sind:

  • SQL Injection (SQLi): Manipulation von Datenbankabfragen.
  • Command Injection: Einschleusen von Betriebssystembefehlen.
  • NoSQL Injection: Angriffe auf moderne Datenbanken wie MongoDB.
  • Template Injection: Missbrauch von Template-Engines in Webframeworks.
  • LDAP Injection: Manipulation von Verzeichnisabfragen.

Jede dieser Techniken hat eigene Tricks und Payloads – aber das Grundprinzip bleibt gleich.


Ein erstes Beispiel: SQL Injection

Stell dir eine Login-Abfrage vor:

SELECT * FROM users 
WHERE username = 'alice' 
AND password = 'mypassword';

Wenn die Anwendung die Eingaben direkt in die SQL-Abfrage einsetzt, kann ein Angreifer Folgendes eintippen:

Username: ' OR '1'='1
Password: anything

Die Abfrage wird dann zu:

SELECT * FROM users 
WHERE username = '' OR '1'='1' 
AND password = 'anything';

Da '1'='1' immer wahr ist, gibt die Abfrage einen Nutzer zurück – der Login ist umgangen.


Warum Injection so gefährlich ist

  • Einfacher Angriffsweg: Oft reicht es, in ein Formularfeld oder eine URL etwas einzutragen.
  • Hoher Schaden: Datenklau, Datenmanipulation, Systemübernahme.
  • Breite Angriffsfläche: Fast jede Anwendung hat Eingaben (Formulare, APIs, Parameter).

Besonders kritisch: Viele Injection-Lücken sind von außen sichtbar und lassen sich automatisiert scannen und ausnutzen – Angreifer können also massenhaft Systeme kompromittieren.


Injection in der Praxis

Bekannte reale Fälle:

  • 2008 wurde Heartland Payment Systems durch SQL Injection gehackt – Millionen Kreditkartendaten wurden gestohlen.
  • Zahlreiche Bug-Bounty-Programme listen Injection als High-Impact-Vulnerability, die regelmäßig zu fünfstelligen Belohnungen führt.

Injection ist also kein Relikt der Vergangenheit, sondern hochaktuell.


Was du mitnehmen solltest

  • Injection bedeutet: Nutzereingaben werden als Befehle interpretiert.
  • Es gibt viele Arten – von SQL bis Template Injection.
  • Alle haben gemeinsam: fehlende Trennung von Daten und Code.
  • Schon kleine Fehler können riesige Auswirkungen haben.

In den nächsten Teilen tauchen wir tiefer ein: Zuerst in die SQL Injection, den Klassiker unter den Injections – mit Beispielen, Angriffsvarianten und Schutzmaßnahmen.


Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert