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.
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 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 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 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 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