Injektionen für Einsteiger
Zu den bekanntesten Schwachstellenklassen gehören Injection-Schwachstellen, allen voran – wenig überraschend – der unangefochtene Klassiker: SQL-Injection. Da man in der Tech-Welt kaum an SQL-Injection vorbeikommt, werden wir uns genau damit befassen.
Bei einer SQL-Injection ist es möglich, das Verhalten einer SQL-Abfrage so zu manipulieren, dass sie die Befehle eines Angreifers ausführt.
Es gibt viele weitere Arten von Injections, die sich zwar oberflächlich unterscheiden, aber alle auf demselben Prinzip basieren.
Zur Wiederholung: Hier sind einige der häufigsten Injection-Arten:
- SQL-Injection
- Cross-Site Scripting (HTML/Javascript-Injection)
- Path Traversal (Pfad-/URL-Injection)
- Command-Injection
- Code-Injection
Ein wenig Injection 101
Betrachtet man die obige Liste der Injection-Arten, so haben sie alle eines gemeinsam: Sie basieren auf einer Zeichenfolge, die von einem Interpreter verarbeitet wird, welcher dann genau das ausführt, was die Zeichenfolge vorgibt. Wir haben die „Benutzereingaben“ in geschweifte Klammern gesetzt.
Was passiert also, wenn die Einfügung von Benutzereingaben unsicher ist? Was könnte ein Angreifer tun? Auch hier gilt: Alles in den geschweiften Klammern wird in diesem Szenario als „Benutzereingabe“ betrachtet.
Achten Sie in diesen Beispielen darauf, wie die Eingabe genutzt werden kann, um das Ergebnis der Benutzereingabe zu beeinflussen.
Das ist der Kern einer Injection. Es geht darum, die Daten zu beeinflussen, die an den Interpreter übergeben werden, um ihn dazu zu bringen, etwas anderes zu tun, als vom ursprünglichen Programmierer beabsichtigt.
Das sind nur die Grundlagen. Wir haben einige der verschiedenen Injection-Arten auf eigene Seiten ausgelagert, da sie etwas mehr Aufmerksamkeit verdienen.
Sie finden sie hier:
Sichere Programmierung in der Praxis
Entdecken Sie Richtlinien für sicheres Programmieren, um Schwachstellen wie die OWASP Top 10 zu verstehen und zu beheben, und tauchen Sie in geführte Trainingsmissionen ein, um diese in realistischen Anwendungssimulationen zu üben.