A10:2021 – Server-seitige Anfragefälschung (SSRF)
Aktie
Beschreibung
Der „Server-Side Request Forgery“ (SSRF)-Angriff ist eine Angriffsart, bei der ein Angreifer die Funktionalität eines Servers missbraucht, um HTTP-Anfragen an nicht autorisierte interne oder externe Ressourcen zu stellen. Im Wesentlichen wird der Server dazu verleitet, im Namen des Angreifers unerwünschte Aktionen auszuführen.
Auswirkungen
Ein Angriff dieser Art kann schwerwiegende Folgen für die Sicherheit einer Webanwendung und der zugrunde liegenden Infrastruktur haben. Zu den möglichen Auswirkungen gehören:
- Unautorisierter Zugriff auf interne Ressourcen: Der Angreifer kann auf Systeme und Daten zugreifen, die normalerweise durch Firewalls oder Netzwerkbeschränkungen geschützt sind.
- Umgehung von Sicherheitskontrollen: SSRF kann es Angreifern ermöglichen, Sicherheitsmaßnahmen wie Firewalls und Zugriffskontrolllisten zu umgehen.
- Exfiltration sensibler Daten: Angreifer können SSRF verwenden, um sensible Informationen aus internen Systemen zu exfiltrieren.
- Internes Port-Scannen: SSRF kann verwendet werden, um das interne Netzwerk abzubilden und anfällige Dienste zu entdecken.
- Remote-Codeausführung: In extremen Fällen kann SSRF zur Ausführung willkürlichen Codes auf dem kompromittierten Server führen.
Angesichts der Schwere dieser Auswirkungen ist es von entscheidender Bedeutung, dass Entwickler robuste Sicherheitsmaßnahmen implementieren, um SSRF-Angriffe auf ihre Webanwendungen zu verhindern und abzuschwächen.
Praxisbeispiele
1. Zugang zu internen Dienstleistungen
Dies kann es dem Angreifer ermöglichen, auf Systeme und Daten zuzugreifen, die normalerweise durch Firewalls oder Netzwerkbeschränkungen geschützt sind, beispielsweise interne Datenbanken oder Verwaltungsbereiche.
http://vulnerable-app.com/fetch?url=http://localhost:8080/admin
Wenn die Anwendung in diesem Beispiel die bereitgestellte URL nicht ordnungsgemäß validiert, könnte sie eine Anfrage an das interne Administrationspanel auf Port 8080 stellen.
Zusammenfassung
- Erkennen Sie eine Abfrage, die über HTTP eine Anfrage an eine externe Ressource stellt.
- Modifizieren Sie die Anfrage so, dass der Webserver eine Anfrage an die Loopback-Schnittstelle stellt und so auf Funktionen oder Dienste zugreift, die im Ausland nicht veröffentlicht sind.
Beispiel
Nach der Analyse des Betriebs der geprüften Webseite kann festgestellt werden, dass über HTTP Anfragen an externe Ressourcen gestellt werden.
Abhilfemaßnahmen
- Überprüfen und bereinigen Sie alle Benutzereingaben, insbesondere URLs.
- Implementieren Sie Whitelists mit Domänen und zulässigen IP-Adressen.
- Verwenden Sie Web Application Firewalls (WAF), um bösartige Anfragen zu filtern.
- Konfigurieren Sie Netzwerk-Firewalls richtig, um den Zugriff auf interne Ressourcen einzuschränken.
- Implementieren Sie das Prinzip der geringsten Rechte auf Servern und Diensten.
- Verwenden Sie VPNs oder virtuelle private Netzwerke, um kritische Ressourcen zu isolieren.
- Deaktivieren Sie HTTP-Weiterleitungen, wenn sie nicht erforderlich sind.
- Implementieren Sie eine starke Authentifizierung und Autorisierung für alle internen Endpunkte.
- Verwenden Sie internes DNS, um Hostnamen aufzulösen, und vermeiden Sie die Verwendung direkter IP-Adressen.
- Überwachen und protokollieren Sie alle Netzwerkanfragen, um verdächtige Muster zu erkennen.
2. Scannen interner Ports
Zusammenfassung
- Erkennen Sie eine Abfrage, die über HTTP eine Anfrage an eine externe Ressource stellt.
- Ändern Sie die Anfrage so, dass der Webserver eine Anfrage an interne IP-Adressen und Ports stellt, die nicht nach außen sichtbar sind.
- Beobachten Sie die unterschiedlichen Antworten des Servers, um zu erkennen, wann eine IP-Adresse mit offenem Port vorhanden ist und wann nicht.
Beispiel
Abhilfemaßnahmen
- Implementieren Sie Whitelists mit IP-Adressen und zulässigen Bereichen für interne Anfragen.
- Verwenden Sie Web Application Firewalls (WAFs), die so konfiguriert sind, dass sie verdächtige Anforderungsmuster erkennen und blockieren.
- Segmentieren Sie das interne Netzwerk, um den Umfang möglicher Scans einzuschränken.
- Implementieren Sie das Prinzip der geringsten Rechte auf internen Servern und Diensten.
- Nutzen Sie starke Authentifizierung und Autorisierung für alle internen Endpunkte.
- Überwachen und protokollieren Sie alle Netzwerkanfragen, um Scanmuster zu erkennen.
- Implementieren Sie eine Ratenbegrenzung, um schnelle und automatisierte Scans zu verhindern.
- Verwenden Sie Virtual Private Cloud (VPC) in Cloud-Umgebungen, um kritische Ressourcen zu isolieren.
- Konfigurieren Sie Sicherheitsgruppen und Zugriffskontrolllisten (ACLs) im Netzwerk korrekt.
- Informieren Sie Entwickler über Best Practices für Sicherheit und die mit SSRF verbundenen Risiken.
3. Zugriff auf Metadaten in Cloud-Umgebungen
- Temporäre AWS-Anmeldeinformationen
- IAM-Rollen, die mit der Instanz verbunden sind
- Netzwerkkonfigurationsdaten
- Benutzerdefinierte Initialisierungsskripte
Zusammenfassung
- Erkennen Sie eine Abfrage, die über HTTP eine Anfrage an eine externe Ressource stellt.
- Ändern Sie die ursprüngliche Anfrage so, dass der Webserver eine Anfrage an Cloud-Serverressourcen stellt, die möglicherweise durch WhiteList eingeschränkt sind, sodass nur der Server darauf zugreifen kann.
- Beobachten Sie unterschiedliche Antworten des Servers, um zu erkennen, wann auf in der Cloud gespeicherte Ressourcen zugegriffen werden konnte und wann nicht.
Beispiel
Landschaft
Ausbeutungsschritte
- Der Angreifer stellt fest, dass die Anwendung auf Amazon Web Services (AWS) gehostet wird.
- Der Angreifer gibt die folgende URL in das Anwendungseingabefeld ein: http://169.254.169.254/latest/meta-data/
- Die Anwendung sendet eine Anfrage an diese interne AWS-IP-Adresse, die den Metadatenendpunkt der EC2-Instanz darstellt.
- Infolgedessen gibt die Anwendung vertrauliche Informationen über die EC2-Instanz zurück, wie zum Beispiel:
1. Instanz-ID2. Region3. Interner Hostname4. MAC-Adresse
5. Der Angreifer kann über bestimmte Pfade einen weiteren Drilldown durchführen, z. B.: http://169.254.169.254/latest/meta-data/iam/security-credentials/, um die temporären Sicherheitsanmeldeinformationen der mit der Instanz verknüpften IAM-Rolle zu erhalten.
Schadensbegrenzung
- Eine Whitelist von erlaubten URLs implementieren
- Verwenden Sie einen Reverse-Proxy für ausgehende Anfragen
- Konfigurieren Sie Firewalls, um den Datenverkehr zu internen IP-Adressen zu blockieren
- Implementieren Sie das Prinzip der geringsten Rechte in IAM-Rollen
- Verwenden Sie IMDSv2 (Instance Metadata Service Version 2), das Sitzungstoken erfordert
4. Exfiltration von Informationen (Cypher-Injektion)
Zusammenfassung
- Erkennen Sie eine Abfrage, über die es möglich ist, Code in die an die Datenbank gestellten Abfragen einzufügen.
- Führen Sie Abfragen an die Datenbank durch, um die darin gespeicherten Informationen abzurufen.
- Exfiltrieren Sie die über die CSV-Upload-Funktion erhaltenen Informationen über HTTP und führen Sie so eine SSRF-Technik aus.
Beispiel
Schadensbegrenzung
- Parameter verwenden: Verhindern Sie die Cypher-Injection, indem Sie Parameter verwenden, anstatt Benutzereingaben direkt in Abfragen zu verketten.
- Abfragen parametrisieren: Kompilieren Sie Abfragen in ausführbare Pläne, die nicht durch Parameterdaten geändert werden können.
- Verwenden Sie APOC-Verfahren sicher: Übergeben Sie bei der Verwendung von APOC weiterhin Parameter, um Sicherheitslücken bei der Zeichenfolgenverkettung zu vermeiden.
- Eingaben bereinigen: Wenn eine Parametrisierung nicht möglich ist (z. B. für Knotenbezeichnungen), bereinigen Sie Benutzereingaben, indem Sie Sonderzeichen mit Escapezeichen versehen.
- Vermeiden Sie die Rückgabe von Datenbankfehlern: Verwenden Sie generische Fehlermeldungen, um die Offenlegung von Informationen durch fehlerbasierte Injektion zu verhindern.
- Implementieren Sie die richtige Escape-Funktion: Verwenden Sie geeignete Escape-Sequenzen für verschiedene Cypher-Typen (String-Literale, Bezeichner).
- Eingaben validieren: Überprüfen Sie Benutzereingaben anhand bestimmter Kriterien, achten Sie jedoch auf mögliche Umgehungstechniken.
- Seien Sie vorsichtig bei Injektionen zweiter Ordnung: Bereinigen Sie weiterhin gespeicherte Daten, wenn sie in nachfolgenden Abfragen verwendet werden.
- Wenden Sie das Prinzip der geringsten Rechte an: Verwenden Sie eine rollenbasierte Zugriffskontrolle, um die potenziellen Auswirkungen erfolgreicher Injektionen zu begrenzen.
- Gehen Sie sorgfältig mit Datenimporten um: Seien Sie sich möglicher Schwachstellen beim Import von Daten aus externen Quellen wie CSV-Dateien bewusst.