BrowExt - XSS Example
Cross-Site Scripting (XSS) deur middel van Iframe
In hierdie opstelling word 'n inhoudskrip geïmplementeer om 'n Iframe te instansieer, wat 'n URL met navraagparameters inkorporeer as die bron van die Iframe:
'n Openlik toeganklike HTML-bladsy, message.html
, is ontwerp om dinamies inhoud by die dokumentliggaam te voeg op grond van die parameters in die URL:
'n Kwaadwillige skripsie word uitgevoer op 'n teenstander se bladsy, waar die content
parameter van die Iframe se bron gewysig word om 'n XSS-payload in te sluit. Dit word bereik deur die Iframe se bron op te dateer om 'n skadelike skripsie in te sluit:
'n Oormatig toegeeflike Inhoudsveiligheidsbeleid soos:
maak die uitvoering van JavaScript moontlik, wat die stelsel vatbaar maak vir XSS-aanvalle.
'n Alternatiewe benadering om die XSS uit te lok, behels die skep van 'n Iframe-element en die instelling van sy bron om die skadelike skrip as die content
-parameter in te sluit:
DOM-gebaseerde XSS + ClickJacking
Hierdie voorbeeld is geneem uit die oorspronklike pos skryfwerk.
Die kernprobleem ontstaan uit 'n DOM-gebaseerde Cross-site Scripting (XSS) kwesbaarheid wat geleë is in /html/bookmarks.html
. Die problematiese JavaScript, deel van bookmarks.js
, word hieronder beskryf:
Hierdie stukkie haal die waarde uit die txtName
invoerveld en gebruik string-konkatenasie om HTML te genereer, wat dan aan die DOM geheg word deur gebruik te maak van jQuery se .append()
funksie.
Normaalweg sal die Chrome-uitbreiding se Inhoudsbeveiligingsbeleid (CSP) sulke kwesbaarhede voorkom. Tog is uitbuiting steeds moontlik as gevolg van CSP-verslapping met 'unsafe-eval' en die gebruik van jQuery se DOM-manipulasie-metodes (wat globalEval()
gebruik om skripte na eval()
te stuur by DOM-invoeging).
Hoewel hierdie kwesbaarheid betekenisvol is, is die uitbuiting gewoonlik afhanklik van gebruikersinteraksie: die besoek aan die bladsy, die invoer van 'n XSS-lading en die aktivering van die "Voeg by" knoppie.
Om hierdie kwesbaarheid te verbeter, word 'n sekondêre clickjacking-kwesbaarheid uitgebuit. Die manifest van die Chrome-uitbreiding toon 'n uitgebreide web_accessible_resources
-beleid:
Veral die /html/bookmarks.html
bladsy is vatbaar vir framing en dus kwesbaar vir clickjacking. Hierdie kwesbaarheid word gebruik om die bladsy binne 'n aanvaller se webwerf te rame, en dit te oorlê met DOM-elemente om die koppelvlak bedrieglik te herontwerp. Hierdie manipulasie lei slagoffers om onbedoeld met die onderliggende uitbreiding te interaksieer.
Verwysings
Last updated