Was sind Injektionsangriffe
Injection-Angriffe beziehen sich auf eine breite Klasse von Angriffsvektoren. Bei einem Injection-Angriff liefert ein Angreifer nicht vertrauenswürdige Eingaben an ein Programm. Diese Eingabe wird von einem Interpreter als Teil eines Befehls oder einer Abfrage verarbeitet. Dies verändert wiederum die Ausführung dieses Programms.
Injections gehören zu den ältesten und gefährlichsten Angriffen auf Webanwendungen. Sie können zu Datendiebstahl, Datenverlust, Verlust der Datenintegrität, Denial-of-Service sowie vollständigen Systemkompromittierungen führen. Der Hauptgrund für Injection-Schwachstellen ist in der Regel eine unzureichende Überprüfung der Benutzereingaben.
Dieser Angriffstyp gilt als großes Problem in der Websicherheit. Es wird in den OWASP Top 10 als Sicherheitsrisiko Nummer eins für Webanwendungen aufgeführt – und das aus gutem Grund. Injection-Angriffe, insbesondere SQL-Injections (SQLi-Angriffe) und Cross-Site-Scripting (XSS), sind nicht nur sehr gefährlich, sondern auch weit verbreitet, insbesondere in Legacy-Anwendungen.
Was Injection-Schwachstellen besonders beängstigend macht, ist die enorme Angriffsfläche (insbesondere bei XSS- und SQL-Injection-Schwachstellen). Darüber hinaus sind Injection-Angriffe eine sehr gut bekannte Schwachstellenklasse. Das bedeutet, dass es viele frei verfügbare und zuverlässige Tools gibt, die es selbst unerfahrenen Angreifern ermöglichen, diese Schwachstellen automatisch auszunutzen.
Arten von Injektionsangriffen
SQL-Injection (SQLi) und Cross-Site-Scripting (XSS) sind die häufigsten Injection-Angriffe, aber sie sind nicht die einzigen. Im Folgenden finden Sie eine Liste gängiger Injection-Angriffstypen.
Injektionsangriff | Beschreibung | Mögliche Auswirkungen |
---|---|---|
Code-Injektion | Der Angreifer fügt Anwendungscode ein, der in der Anwendungssprache geschrieben ist. Dieser Code kann verwendet werden, um Betriebssystembefehle mit den Rechten des Benutzers auszuführen, der die Webanwendung ausführt. In fortgeschrittenen Fällen kann der Angreifer zusätzliche Sicherheitslücken zur Rechteausweitung ausnutzen, was zu einer vollständigen Kompromittierung des Webservers führen kann. |
|
CRLF-Injektion | Der Angreifer fügt eine unerwartete CRLF-Zeichenfolge (Carriage Return and Line Feed) ein. Diese Sequenz wird verwendet, um einen HTTP-Antwortheader aufzuteilen und beliebige Inhalte in den Antworttext zu schreiben. Dieser Angriff kann mit Cross-Site-Scripting (XSS) kombiniert werden. |
|
Cross-Site-Scripting (XSS) | Der Angreifer fügt ein willkürliches Skript (normalerweise in JavaScript) in eine legitime Website oder Webanwendung ein. Dieses Skript wird dann im Browser des Opfers ausgeführt. |
|
E-Mail-Header-Injektion | Dieser Angriff ist CRLF-Injektionen sehr ähnlich. Der Angreifer sendet IMAP/SMTP-Befehle an einen Mailserver, der nicht direkt über eine Webanwendung erreichbar ist. |
|
Host-Header-Injektion | Der Angreifer missbraucht das implizite Vertrauen des HTTP-Host-Headers, um die Funktion zum Zurücksetzen von Passwörtern und Web-Caches zu vergiften. |
|
LDAP-Injektion | Der Angreifer fügt LDAP-Anweisungen (Lightweight Directory Access Protocol) ein, um beliebige LDAP-Befehle auszuführen. Sie können Berechtigungen erlangen und den Inhalt des LDAP-Baums ändern. |
|
OS-Befehlsinjektion | Der Angreifer fügt Betriebssystembefehle mit den Rechten des Benutzers ein, der die Webanwendung ausführt. In fortgeschrittenen Fällen kann der Angreifer zusätzliche Sicherheitslücken zur Rechteausweitung ausnutzen, was zu einer vollständigen Kompromittierung des Systems führen kann. |
|
SQL-Injection (SQLi) | Der Angreifer fügt SQL-Anweisungen ein, die Datenbankdaten lesen oder ändern können. Bei fortgeschrittenen SQL-Injection-Angriffen kann der Angreifer SQL-Befehle verwenden, um beliebige Dateien auf den Server zu schreiben und sogar Betriebssystembefehle auszuführen. Dies kann zu einer vollständigen Kompromittierung des Systems führen. |
|
XPath-Injektion | Der Angreifer fügt Daten in eine Anwendung ein, um präparierte XPath-Abfragen auszuführen. Sie können sie verwenden, um auf nicht autorisierte Daten zuzugreifen und die Authentifizierung zu umgehen. |
|
Es ist einfach zu testen, ob Ihre Website oder Webanwendung für alle oben aufgeführten Injection-Angriffe anfällig ist. Alles, was Sie tun müssen, ist einen automatisierten Web-Scan mit einem Scanner durchzuführen.
Wie können Sie Injection-Schwachstellen in Ihrer Web-App erkennen?
Ein automatisierter Web-Schwachstellen-Scanner ist der einfachste Weg, eine Injection-Schwachstelle zu erkennen. Ein solcher Scanner, ähnlich einem automatisierten Pentest-Tool, kann Angriffsvektoren leicht erkennen und Ihnen helfen, die notwendigen Schritte zum Schutz Ihrer Anwendung zu unternehmen.
Nachdem Sie nun die häufigsten Schwachstellen in Webanwendungen kennen, stellen Sie sicher, dass Sie die Grundlagen behandeln und diese häufigen Injection-Angriffe in Ihrem Entwicklungsprozess berücksichtigen.
So verhindern Sie Injektionsangriffe
Um Injection-Angriffe auf Ihre Webanwendung zu verhindern, müssen Sie diese sicher codieren. OWASP hat mehrere Möglichkeiten zur Verhinderung von SQL-Injection-Angriffen definiert , diese gelten jedoch auch für andere Arten von Datenbankangriffen. Diese und einige andere Strategien beinhalten:
- Validierung von Benutzereingaben durch Erstellen einer Zulassungsliste (Whitelist) für gültige Anweisungen und Konfigurieren von Eingaben für Benutzerdaten nach Kontext
- Verwenden vorbereiteter Anweisungen mit parametrisierten Abfragen, die helfen, zwischen Code und Benutzereingaben zu unterscheiden und Anweisungen nicht mit Befehlen zu verwechseln
- Verwendung gespeicherter Prozeduren, die in der Datenbank definiert und gespeichert sind und von der Webanwendung aufgerufen werden
Begrenzung von Sonderzeichen, um die Verkettung von Zeichenfolgen zu verhindern - Alle vom Benutzer bereitgestellten Eingaben umgehen (die letzte Möglichkeit gemäß OWASP)
- Reduzieren Sie die Angriffsfläche Ihrer Anwendung, indem Sie alle unnötigen Funktionen entfernen, die andernfalls geschützt werden müssten
- Erzwingen der geringsten Privilegien und des strengen Zugriffs, indem nur die Privilegien zugelassen werden, die für ein Konto erforderlich sind
Häufig gestellte Fragen
Was sind Injektionsangriffe?
Bei einem Injection-Angriff ist der Angreifer in der Lage, schädliche Eingaben an eine Webanwendung zu liefern (inject it). Die Anwendung verarbeitet diese böswillige Eingabe, was dazu führt, dass sich die Anwendung auf unerwartete Weise verhält. Beispielsweise kann es Informationen preisgeben, die nicht preisgegeben werden sollten, dem Benutzer Berechtigungen erteilen, die der Benutzer niemals haben sollte, oder schädlichen Code auf dem Server oder dem Client ausführen.
Was sind die häufigsten Arten von Injektionsangriffen?
Einige der häufigsten Arten von Injection-Angriffen sind SQL-Injections, Cross-Site-Scripting (XSS), Code-Injection, OS-Command-Injection, Host-Header-Injection und mehr. Ein großer Teil der Schwachstellen, die in Webanwendungen existieren, können als Injection-Schwachstellen klassifiziert werden.
Wie erkennt man Injection-Schwachstellen?
Der effizienteste Weg, Injection-Schwachstellen zu erkennen, die Injection-Angriffe ermöglichen, ist die Verwendung eines automatisierten Web-Schwachstellen-Scanners. Sie können sie manuell durch Penetrationstests erkennen, aber dies erfordert viel mehr Zeit und Ressourcen. Aktuelle Software ist in der Lage, alle Arten von Injection-Schwachstellen zu erkennen, zu bewerten und zu verwalten.
Wie kann man Injektionsangriffe vermeiden?
Um Injection-Angriffe zu vermeiden, müssen Sie Ihre Webanwendungen auf sichere Weise codieren, um Injection-Schwachstellen zu vermeiden. Der wichtigste Teil ist: Vertrauen Sie niemals Benutzereingaben. Je mehr Sie jede Form von Benutzereingaben einschränken, kontrollieren und überwachen, desto besser können Sie verhindern, dass Ihre Anwendung gehackt wird.