# Iframes in XSS, CSP en SOP {{#include ../../banners/hacktricks-training.md}} ## Iframes in XSS Daar is 3 maniere om die inhoud van 'n iframed bladsy aan te dui: - Deur `src` wat 'n URL aandui (die URL kan kruis oorsprong of dieselfde oorsprong wees) - Deur `src` wat die inhoud aandui met die `data:` protokol - Deur `srcdoc` wat die inhoud aandui **Toegang tot Ouers & Kind veranderlikes** ```html ``` ```html ``` As jy toegang tot die vorige html via 'n http-server (soos `python3 -m http.server`) verkry, sal jy opgemerk dat al die skripte uitgevoer sal word (aangesien daar geen CSP is wat dit verhinder nie). **die ouer sal nie in staat wees om toegang te verkry tot die `secret` var binne enige iframe nie** en **slegs die iframes if2 & if3 (wat as dieselfde webwerf beskou word) kan toegang verkry tot die geheim** in die oorspronklike venster.\ Let op hoe if4 beskou word as 'n `null` oorsprong. ### Iframes met CSP > [!TIP] > Let asseblief op hoe in die volgende omseilings die antwoord op die iframed bladsy geen CSP-kop bevat wat JS-uitvoering verhinder nie. Die `self` waarde van `script-src` sal nie die uitvoering van die JS-kode met die `data:` protokol of die `srcdoc` attribuut toelaat nie.\ Ehowever, selfs die `none` waarde van die CSP sal die uitvoering van die iframes toelaat wat 'n URL (volledig of net die pad) in die `src` attribuut plaas.\ Daarom is dit moontlik om die CSP van 'n bladsy te omseil met: ```html
``` Let op hoe die **vorige CSP slegs die uitvoering van die inline script toelaat**.\ Echter, **slegs `if1` en `if2` skripte gaan uitgevoer word, maar slegs `if1` sal toegang hê tot die ouer geheim**. .png>) Daarom is dit moontlik om **'n CSP te omseil as jy 'n JS-lêer na die bediener kan oplaai en dit via iframe kan laai, selfs met `script-src 'none'`**. Dit kan **ook moontlik wees om 'n same-site JSONP-eindpunt te misbruik**. Jy kan dit toets met die volgende scenario waar 'n koekie gesteel word selfs met `script-src 'none'`. Voer eenvoudig die toepassing uit en toegang dit met jou blaaskans: ```python import flask from flask import Flask app = Flask(__name__) @app.route("/") def index(): resp = flask.Response('') resp.headers['Content-Security-Policy'] = "script-src 'self'" resp.headers['Set-Cookie'] = 'secret=THISISMYSECRET' return resp @app.route("/cookie_s.html") def cookie_s(): return "" if __name__ == "__main__": app.run() ``` #### Nuwe (2023-2025) CSP omseil tegnieke met iframes Die navorsingsgemeenskap gaan voort om kreatiewe maniere te ontdek om iframes te misbruik om beperkende beleide te oorwin. Hieronder kan jy die mees noemenswaardige tegnieke vind wat gedurende die afgelope paar jaar gepubliseer is: * **Dangling-markup / named-iframe data-exfiltration (PortSwigger 2023)** – Wanneer 'n toepassing HTML reflekteer maar 'n sterk CSP script uitvoering blokkeer, kan jy steeds sensitiewe tokens lek deur 'n *dangling* `