Vaadin-Pentesting in Aktion (Teil 3)

Freitag, 23.8.2019

vaadin-Beitrag1

In den ersten beiden Teilen der Blogreihe haben wir beschrieben, wieso Vulnerability-Scanner nicht in der Lage sind, Vaadin-Anwendungen zu scannen. Anschließend haben wir ein Konzept vorgestellt, wie die identifizierten Probleme gelöst werden können. In dem letzten Blogbeitrag unserer Reihe möchten wir die entwickelte Anwendung vorstellen und einen echten Scan durchführen.

Für die Evaluation von PenTest4Vaadin wurde eine kleine Vaadin-Anwendung entwickelt, die eine SQL-Injection und XSS-Lücke enthält. Wir werden hier nur die SQL-Injection betrachten, da das Vorgehen für das Auffinden der XSS-Lücke äquivalent ist. Die folgende Abbildung zeigt die entwickelte Testanwendung. Die Felder Username und Password des Login-Formulars (links) sind beide für SQL-Injection-Angriffe anfällig.

Abb2 Vaadin Testanwendung
Abbildung 1: Vaadin Testanwendung

Nachdem die Hilfsanwendung gestartet wurde, ruft man das Frontend auf (siehe Abbildung 3). In dem Forms-Tab gibt man die URL der Anwendung ein, die gescannt werden soll und startet den Form Selector. Die folgende Abbildung 2 zeigt den Form Selector (grüner Teil), der automatisch in die Webanwendung eingebettet wird. Im Form Selector müssen alle Elemente ausgewählt werden, die zu einem Formular gehören. Ausgewählte Elemente werden orange hervorgehoben. Es können eigene Parameternamen für die Felder definiert werden, damit es leichter ist, die URL-Parameter den Feldern zuzuordnen. Wenn wie im Bild alle Felder eines Formulars ausgewählt worden sind, kann über Save form das Formular in der Datenbank gespeichert werden.

Abbildung 3 Vaadin Testanwendung mit Form-Selector
Abbildung 2: Vaadin Testanwendung mit Form-Selector

Anschließend sieht man im Frontend von PenTest4Vaadin, dass das Formular gespeichert worden ist, da dieses nun in einem Dropdown-Feld auswählbar ist. Im Tab Scan Helper kann noch eingestellt werden, ob während des Scans ein sichtbarer oder kopfloser Browser verwendet werden soll. Wir wählen den sichtbaren Browser aus, damit wir die Aktionen während des Scans verfolgen können. Schließlich wird über den Button Export URLs die URL des ausgewählten Formulars in eine Textdatei exportiert (siehe Abbildung 3).

Abbildung 4 Frontend von PenTest4Vaadin
Abbildung 3: Frontend von PenTest4Vaadin

Die Textdatei enthält folgende URL, weil nur ein Formular untersucht werden soll:

http://localhost:8087/scan/login?username=val&password=val

Diese URL verweist auf die Hilfsanwendung, gibt aber zusätzliche Informationen, wie das zu scannende Formular (login) und die vorhandenen Parameter (username & password), mit.

Danach wird die Textdatei in OWASP ZAP importiert. Nachdem der Seitenbaum geladen wurde, wird ein aktiver Scan auf die URL ausgeführt. Der Browser öffnet sich und der Scan Helper füllt die Felder mit den Eingaben von OWASP ZAP aus, wie im folgenden Bild zu sehen ist (siehe Abbildung 4).

Abbildung 5 Vaadin Testanwendung während des Scans
Abbildung 4: Vaadin Testanwendung während des Scans

Nachdem der Scan beendet wurde, lässt sich sehen (s. folgende Abbildung), dass die SQL-Injection-Lücke erfolgreich gefunden worden ist. OWASP ZAP gibt noch ein paar andere Warnungen aus, die allerdings irrelevant für die Testanwendung sind. Da die Anfragen an PenTest4Vaadin geschickt werden, werden einige Warnungen zu den Headern ausgegeben, die sich auf die Hilfs- und nicht die zu testende Anwendung beziehen. Wenn die Header der Testanwendung analysieren werden sollen, muss zusätzlich direkt die URL der Anwendung gescannt werden.

Abbildung 6 OWASP ZAP ErgebnisansichtAbbildung 5: OWASP ZAP Ergebnisansicht

Diese Demonstration zeigt, dass die entwickelte Hilfsanwendung erfolgreich zwischen Vaadin-Anwendung und OWASP ZAP vermittelt. Auch wenn wir das Beispiel mit OWASP ZAP durchgeführt haben, ist es möglich, andere Vulnerability Scanner zu verwenden. Im Moment können nur HTML-Formulare gescannt werden, aber das Konzept und die Anwendung bieten noch viel Entwicklungspotenzial, z.B. für den Angriff über Header- oder Parameterwerte.

PenTest4Vaadin ist auf Github als Open-Source-Lösung veröffentlicht, damit die Security-Community davon profitieren kann. Wir freuen uns über Feedback und weitere Beiträge zu dem Projekt.

Dieser Beitrag ist Teil einer Serie:

Teil 1: Probleme beim Security-Test von Vaadin-Anwendungen

Teil 2: Konzept: Penetrationtesting für Vaadin

Teil 3: Vaadin-Pentesting in Action


Hinweis: Dieser Artikel fasst im Wesentlichen Erkenntnisse aus der Abschlussarbeit von Tamara Gunkel (2019) an der WWU Münster zusammen.


zurück zur Blogübersicht

Diese Beiträge könnten Sie ebenfalls interessieren

Keinen Beitrag verpassen – viadee Blog abonnieren

Jetzt Blog abonnieren!

Kommentare

Tamara Gunkel

Tamara Gunkel

Tamara Gunkel studiert Wirtschaftsinformatik an der WWU Münster und arbeitet als Werkstudentin bei der viadee IT-Unternehmensberatung. Im Rahmen ihrer Tätigkeit arbeitet sie an der Entwicklung des viadee Process Application Validators und übernimmt Aufgaben aus dem Bereich IT-Sicherheit.