Um unsere Infrastruktur gegen Angriffe abzusichern und Schachstellen zu finden, sind interne Penetrationstests ein fester Bestandteil unserer Strategie. Wir prüfen dabei besonders die Systeme, die zur Verarbeitung von Kundendaten eingesetzt werden. In einem Penetrationstest unserer Homepage vor dem initialen Go-Live konnten wir dabei zwei Schwachstellen in dem bekannten WordPress-Plugin NEX Forms zur Erstellung und Verwaltung von Formularen identifizieren.
Nach der Entdeckung haben wir die Schwachstellen an den Hersteller weitergeleitet, womit diese im nächsten Release geschlossen werden konnten. Weitere Details finden sich hierzu im folgenden Beitrag.
Hintergrund
NEX-Forms ist ein beliebtes WordPress-Plugin für die Erstellung von Formularen sowie der Verwaltung übermittelter Formulardaten. Es wurde bereits über 12.500 mal verkauft und kann auf vielen WordPress-Webseiten vorgefunden werden. Das Plugin bietet zusätzlich eine Funktion zur Erstellung von Formular-Berichten an, wobei diese entweder als PDF- oder Excel-Datei exportiert werden können. In genau dieser Komponente konnten wir zwei Schwachstellen identifizieren.
CVE-2021-34675: NEX Forms Authentication Bypass für PDF Berichte
Der “Reporting” Bereich des NEX-Forms-Backends erlaubt es Nutzern, Formulareinsendungen zu aggregieren und diese in das PDF-Format zu überführen. Sobald eine Auswahl als PDF exportiert wird, speichert der Server die Ergebnisdatei unter dem folgenden Pfad:
/wp-content/uploads/submission_report.pdf
Abbildung 1: Exportfunktionen im “Reporting” Bereich
Während unserer Tests konnten wir feststellen, dass diese Exportdatei nicht zugriffsgeschützt ist. Ein Angreifer kann somit die Datei ohne Authentifizierung herunterladen:
Abbildung 2: Proof-of-Concept: Zugriff auf die PDF-Datei ohne Authentifizierung
CVE-2021-43676: NEX Forms Authentication Bypass für Excel Berichte
Ähnlich zur zuvor beschriebenen Feststellung existiert eine weitere Schwachstelle für die Export-Funktion in das Excel-Format. Hierbei wird die Excel-Datei nicht im Dateisystem des Webservers abgelegt, sondern durch den Server direkt zurückgegeben.
Um die Schwachstelle auszunutzen muss zunächst ein Bericht in das Excel-Format exportiert worden sein. Der Server gibt danach die letzte erzeugte Excel-Datei zurück, sobald im Backend der GET Parameter “export_csv” mit dem Wert “true” übergeben wird. Für diesen URL-Handler werden jedoch keine Authentifizierungsparameter geprüft, was es einem Angreifer erlaubt, ohne Authentifizierung auf die Inhalte zuzugreifen:
Abbildung 3: Proof-of-Concept: Zugriff auf die Excel-Datei ohne Authentifizierung
Mögliche Auswirkungen
Ein Angreifer, der eine dieser Authentifizierungslücken ausnutzt, könnte unter anderem folgende Schäden bewirken:
- Zugriff auf vertrauliche Daten, die über das Kontaktformular eingesendet wurden
- Zugriff auf personenbezogene Daten wie Name, E-Mail-Adresse, IP-Adresse oder Telefonnummern
Dies könnte zu einem signifikanten Verlust der Vertraulichkeit, der von NEX-Forms verarbeiteten Daten, führen.
Behebung der Schwachstellen
Die Schwachstellen wurden im nächsten Release des Herstellers behoben. Mehr Informationen hierzu finden sich unter https://codecanyon.net/item/nexforms-the-ultimate-wordpress-form-builder/7103891.
Vielen Dank dabei an das Envato Security Team für die Kommunikation mit den Entwicklern und die schnelle Behebung der identifizierten Schwachstellen!