Im Rahmen eines Security Scans einer von mir betreuten Applikation gab es ein Finding zum Thema Cross-Site Scripting.
Cross-Site Scripting
Reproduzieren:
Burp Suite starten und im Browser die Proxy Einstellungen auf Burp Suite stellen:
- 127.0.0.1
- Port 80
In der Burp Suite in den User options unter Connections: Upstream Proxy Servers einstellen:
- Destination Host: *
- Proxy host: cache.services.mycompany.com
- Proxy port: 9090
Im Browser MyApplication ansurfen (https://myapplication.test.mycompany.com) und die Registrierung aufrufen.
In der Burp Suite unter Proxy -> Intercept: Intercept auf on stellen.
Die Registrierung unverändert abschicken. Der Aufruf durchläuft die Burp Suite und ist dort vor der Weiterleitung editierbar.
Um das XSS nachzustellen diese Änderung vornehmen:
- Parameter: plState
- Value: registration%22>()%26%25


Lösung
Ein erster Ansatz wäre, das Value der Input Felder in den JSPs zu escapen.
Möglicherweise ist dies in den HiddenFields.inc als zentrale Stelle ausreichend.
Zur Verwendung könnten eine Bibliothek der Apache Foundation kommen:
org.apache.commons.lang.StringEscapeUtils
