OWASP10 – Server-Side Request Forgery
Einführung
Server-Side Request Forgery, kurz SSRF, ist eine Angriffskategorie, die in der Praxis zwar selten von Angreifern genutzt wird, für die jedoch eine überdurchschnittliche Anzahl an Tests durchgeführt wird. Der Grund hierfür sind die schweren Folgen, welche durch das Gelingen eines solchen Angriffs ausgelöst werden können. Im Folgenden beschäftigt sich dieser Blogpost mit verschiedenen Aspekten dieser Kategorie von Angriffen.
Entwicklung und Risiken
Server-Side Request Forgery (SSRF) spielte früher nur eine untergeordnete Rolle, zwar war bereits der Zugriff auf interne Admin Panels und Netzwerkscans möglich, allerdings liefen viele wichtige Abläufe unabhängig ab.
Diese Zeiten sind vorbei, da heutzutage deutlich mehr Informationen über diese ausgetauscht werden. Ein Zugriff auf interne Ressourcen wie ein Intranet, Dateisysteme und Cloud-Dienste bedeuten bei den meisten Unternehmen große finanzielle Verluste.
Außerdem bietet der Exploit dem Angreifer die Möglichkeit, Angriffe auszuführen, ohne dass seine Beteiligung vom betroffenen System nachvollziehbar ist. Ein solcher Vorfall kann ebenfalls rechtlich auf das Unternehmen zurückfallen und finanzielle Verluste nach sich ziehen.
Konkret besteht die Gefahr vor Daten- und Identitätsdiebstahl sowie der Nutzung der Netzwerkstruktur zur Durchführung von DoS-Angriffen. Diese können sich sowohl gegen unbeteiligte Dritte richten und den Anschein erwecken, dass der Angriff vom Unternehmen ausgeht, als auch gegen das angegriffene Netzwerk, indem eine Vielzahl von Anfragen in dieses weitergeleitet werden und dieses unter der Last zusammenbricht. Dies wird dadurch ermöglicht, dass öffentliche Server von Unternehmen häufig eine hohe Bandbreite haben, während die Datenrate im internen Netzwerk geringer angelegt ist.
Im schlimmsten Fall ist es sogar möglich, Remotezugriff auf den Systemen zu erhalten und über diese Schadcode (Bsp. Viren, Trojaner, etc.) in das Netzwerk einzuschleusen und dieses zu kompromittieren.
Wie ein Angriff funktioniert
Um Zugriff auf sensible Informationen zu erlangen, müssen Sicherheitsmechanismen wie zum Beispiel eine Firewall, die normalerweise eine Anfrage blockieren würde, überwunden werden. Hierfür wird eine vertrauenswürdige Anwendung, wie zum Beispiel ein Web-Server ausgenutzt, indem er eine vom Angreifer definierte Anfrage an gesicherte Systeme sendet, für die nicht erkennbar ist, dass die Anfrage von außerhalb kommt. Ermöglicht wird dies durch unzureichende Überprüfung der angefragten Adressen durch den Server.
Der sich im internen Netzwerk befindliche Server verarbeitet die Anfrage und sendet eine Antwort an den Web-Server zurück. Der Web-Server stellt dem Angreifer die Antwort auf seine Anfrage zur Verfügung und gibt somit vertrauliche Informationen weiter. Diese Bereitstellung erfolgt ohne vorherige Überprüfung.
Fallbeispiel
Ein Unternehmen betreibt auf seinem Web-Server einen öffentlich erreichbaren Online-Shop. Auf dem Web-Server liegen alle Informationen und Dateien, die zur Darstellung der Seite benötigt werden. Zusätzlich möchte der Betreiber die aktuelle Verfügbarkeit seiner Produkte darstellen, hierzu ermöglicht er dem Web-Server mithilfe einer internen API-Schnittstelle auf diese Informationen zuzugreifen. Die Verfügbarkeitsanfrage zu einem spezifischen Produkt stellt sich im Browser folgendermaßen dar:
https://domain.com/products?url=https://lager.com/verf.php?product=4
Diese Anfrage lässt sich mithilfe der Netzwerkanalyse des Internet-Browsers anzeigen und modifizieren.
![Darstellung in der Netzwerkanalyse](/images/team_ssrf/netzwerkanalyse.png)
Hierdurch ist es nicht nur möglich, den Produktstatus beliebiger Produkte anzeigen zu lassen, sondern auch, den Web-Server dazu zu bringen auf andere Ressourcen des Netzwerks zuzugreifen. Dazu muss die Anfrage vom Angreifer modifiziert und an den Web-Server gesendet werden. Diese modifizierte Anfrage könnte folgendermaßen aussehen:
https://domain.com/products?url=file:///etc/passwd
Mithilfe dieser Anfrage ist es möglich auf interne Informationen zuzugreifen, wenn keine Schutzmaßnahmen ergriffen wurden.
Systemschutz
Zum Schutz vor derartigen Angriffen gibt es unterschiedliche Möglichkeiten.
Die erste Möglichkeit hierfür wäre eine verstärkte Überprüfung der Anfragen durch den Web-Server. Durch diesen würden schädliche Anfragen bereits im Voraus erkannt und blockiert werden.
Eine weitere Möglichkeit besteht darin, dass interne Netz in unterschiedliche Sektoren zu unterteilen und die Firewallkonfiguration so zu gestalten das der Zugriff auf sensible Bereiche verhindert wird.
Außerdem ist es auch möglich die Server so zu konfigurieren, dass der öffentliche Web-Server nur mit Servern und Ressourcen im internen Netzwerk kommunizieren darf, die für die Erfüllung seiner Aufgaben erforderlich sind und die Geräte im internen Netzwerk einen Zugriff auf andere Ressourcen blockieren.
Referenzen
- https://owasp.org/Top10/A10_2021-Server-Side_Request_Forgery_%28SSRF%29/, aufgerufen am 16.10.2021
- https://programmerwiki.com/article/82391453059/, aufgerufen am 16.10.2021
- https://www.hackerone.com/top-ten-vulnerabilities, aufgerufen am 16.10.2021
- https://blog.sqreen.com/ssrf-explained/, aufgerufen am 16.10.2021