Sunday, July 17, 2011

Cross Site Scripting wird in Browsern vertuscht

Cross Site Scripting ist eine unschöne Sache. Dabei übernimmt der Server ohne weitergehende Prüfung eingaben des Benutzers.

Formularfelder werden vielfach per Javascript geprüft. Das ist nicht sicher! Man kann zum Beispiel GET Parameter direkt in der URL Leiste manipulieren.

Moderne Browser machen hier leider einen Strich durch die Rechnung indem URLs automatisch URL-encoded werden.

Beispiel Chrome:
Sichtbar ist in der URL Bar folgendes:
example.com/?param=<script>alert(document.cookie)</script>
Tatsächlich verwendet wird aber:
http://example.com/?param=%3Cscript%3Ealert(document.cookie)%3C/alert%3E
Hier wurde ein URL Encoding vorgenommen. Problematisch, weil mit URL-Encoding häufig kein Ausnutzen des Cross Site Scripting möglich ist. Es sieht aus, als ob die Web Anwendung sicher ist. Durch einen Intercepting Proxy ist ein Ausnutzen aber immer noch möglich!

Ähnlich wird in Internet Explorerer 8 und Firefox 3 and 4 vorgegangen. Allerdings wird hier der URL encoded String im Browser angezeigt, zumindest ein Hinweis für die Web Entwickler.

Wichtig ist es für einen WEB Entwickler, die Anzeige in der URL Leiste gegenzuchecken mit Firefox Plugins wie Tamper Data oder der Network Leiste in Google Chrome. Nur so kann effektiv auf Cross Site scripting überprüft werden. Im Zweifel sollte ein intercepting Proxy, zum beispiel Burp, herangezogen werden. Der kann dann auch POST Parameter modifizieren und ist frei von jeglichen Jacascript Checks.


Links:
- OWASP: Cross Site Scripting
- Burp intercepting Proxy

No comments:

Post a Comment