Categories
Development

Cross-Site Scripting mit Burp Suite

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<acx><ScRiPt>alert(9854)</ScRiPt>

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