Skip to content

Schwachstellen in FTAPI 4.0 – 4.11

9. Juni 2021

Um die hauseigene IT-Infrastruktur der Pentest Factory gegen Angriffe abzusichern, sind interne Penetrationstests ein fester Bestandteil unserer Strategie. Hierbei prüfen wir insbesondere die Systeme, die zur Verarbeitung von sensitiven Kundendaten eingesetzt werden. In einem Penetrationstest unserer Dateiaustauschplattform FTAPI konnten wir zwei Schwachstellen identifizieren, welche wir anschließend an den Hersteller zur Behebung meldeten. Beide Schwachstellen wurden in dem nächsten FTAPI-Release erfolgreich gefixt und können in der aktuellen Softwareversion nicht mehr ausgenutzt werden.

Vielen Dank nochmals an FTAPI für die reibungslose Kommunikation und der schnellen Schwachstellenbehebung.

Weitere Details der Schwachstellen finden sich in diesem Blog-Beitrag.


CVE-2021-25277: FTAPI Stored XSS (via File Upload)

Die FTAPI Webanwendung ist anfällig für „Stored Cross-Site Scripting”, kurz XSS genannt. FTAPI bietet sogenannte Submit-Boxen an, worüber externe Nutzer ohne Zugangsdaten eine Nachricht, inklusive Dateianhang, einreichen können. Als Pentest Factory nutzen wir diese Submit-Boxen, um unseren Kunden eine sichere und einfache Plattform für die Einreichung von Zugangsdaten, Dokumentationen oder sonstigen sensitiven Dateien anzubieten. Die Dateien werden hierbei verschlüsselt übertragen und anschließend von unseren Penetrationstestern abgerufen.

Der Dateiupload beim Einreichen einer Submit-Box-Nachricht erlaubt es hierbei Nutzern, Dateien mit einem schadhaften Namen hochzuladen. Beim Hovern über das Dateinamensfeld wird ein Alternativtext-Element eingeblendet (siehe folgender Screenshot), welches den Dateinamen anzeigt. Dieses dynamisch eingeblendete Element nimmt keine Filterung des Dateinamens auf bösartige Zeichen vor, wodurch eine XSS-Schwachstelle entsteht.

blank

Abbildung 1: Verwundbares Alternativtextfeld der Dateinamens-Box

Proof-of-Concept (PoC)

Beim Hochladen einer Datei mit dem folgenden Namen wird exemplarisch eine JavaScript-Alert-Box ausgeführt, um die Schwachstelle zu verifizieren:

blank

Abbildung 2: Proof-of-Concept Dateiname mit alert() Ausführung

Damit der Upload erfolgreich abschließt, darf die Datei jedoch nicht leer sein. Sie lässt sich mit dem folgenden Linux-Befehl erzeugen:

echo "test" >> "<iframe onload=alert('XSS')>"

Das Dateinamensfeld wird hierbei nicht nur beim Upload für den Datei-Einreicher selbst, sondern auch für den Empfänger beim Abruf der Datei eingeblendet. Dies erlaubt die Ausführung von JavaScript-Code im Namen des Besitzers einer Submit-Box, sobald dieser die Datei abruft. Der Payload eines Angreifers wird ausgeführt, sobald die Maus das grüne Datei-Feld mit dem schadhaften Dateinamen in der FTAPI-Weboberfläche berührt. Submit-Boxen stehen in der Regel öffentlich zur Verfügung, d.h. unter Kenntnis der Submit-Box-URL eines Empfängers können beliebige Nachrichten inklusive schadhafte Dateien eingereicht werden.

blank

Abbildung 3: PoC mit einer JS-Alert-Box in der Inbox eines FTAPI-Nutzers


CVE-2021-25278: FTAPI Stored XSS (via Submit Box Template)

Weiterhin konnten wir eine zweite Cross-Site Scripting (XSS) Schwachstelle in der Anwendung identifizieren. Administrativen Nutzern ist es möglich, das allgemeine Template von Submit-Boxen zu ändern. Hierbei existiert eine Funktion zum Hochladen von Hintergrundbildern. Die Uploads werden dabei nicht auf bösartige Inhalte gefiltert, was es einem Angreifer erlaubt, eine SVG-Datei mit eingebettetem JavaScript-Code hochzuladen. Dies erlaubt erneut die Ausführung von JS-Code und führt eine XSS-Schwachstelle in der Anwendung ein. Die Schwachstelle kann jedoch lediglich von administrativen Nutzern ausgenutzt werden, welches die Wahrscheinlichkeit einer realen Ausnutzung einschränkt.

blank

Abbildung 4: Verwundbarer Hintergrundbild-Upload im Layout-Editor einer Submit-Box

Proof-of-Concept (PoC)

Um die Schwachstelle exemplarisch auszunutzen, kann eine SVG-Datei mit folgendem Inhalt als Hintergrundbild hochgeladen werden:

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg">
   <polygon id="triangle" points="0,0 0,50 50,0" fill="#009900" stroke="#004400"/>
   <script type="text/javascript">
      alert('Pentest Factory XSS');
   </script>
</svg>
 

Die hochgeladene Datei wird im Verzeichnis /api/2/staticfile/ gespeichert und führt zu XSS, sobald diese aufgerufen wird:

blank

Abbildung 5: Stored XSS beim Aufruf der schadhaften SVG-Datei


Mögliche Auswirkungen

Ein Angreifer, der eine der Cross-Site Scripting (XSS) Schwachstellen ausnutzt, könnte unter anderem folgende Angriffe ausführen:

  • Session-Hijacking mit Zugriff auf vertrauliche Dateien und Identifikatoren
  • Veränderung der Webseitenpräsentation (z.B. Phishing)
  • Einfügen von schädlichen Inhalten
  • Umleiten von Anwendern auf schädliche Seiten
  • Malwareinfektion

Dies könnte zum Verlust der Vertraulichkeit, Integrität und Verfügbarkeit der von FTAPI verarbeiteten Daten führen.


Behebung der Schwachstellen

Die Schwachstellen wurden im nächsten Release des Herstellers behoben. Es bestehen keine Informationen dazu, dass die Schwachstellen zuvor aktiv ausgenutzt worden sind.
Mehr Informationen hierzu finden sich unter https://docs.ftapi.com/display/RN/4.11.0.

Vielen Dank dabei an das Team von FTAPI für die reibungslose Kommunikation sowie der schnellen Behebung der identifizierten Schwachstellen!