# Cookie Bomb + Onerror XS Leak {{#include ../../banners/hacktricks-training.md}} Questa tecnica combina: - Cookie bombing: riempire il browser della vittima con molti/grandi cookies per l'origine target in modo che le richieste successive raggiungano i limiti del server/della richiesta (dimensione degli header della richiesta, lunghezza dell'URL nei redirect, ecc.). - Error-event oracle: sondare un endpoint cross-origin con un ``` Perché il popup (window.open)? - I browser moderni bloccano sempre più i third-party cookies. Aprire una top-level window verso il target rende i cookie first‑party, quindi le risposte Set-Cookie dal target rimarranno attive, abilitando il cookie-bomb step anche con restrizioni sui third-party cookies. Helper di probing generico Se hai già un modo per impostare molti cookie sull'origin target (first-party), puoi riutilizzare questa minimal oracle contro qualsiasi endpoint il cui successo/fallimento porti a diversi esiti di rete (status/MIME/redirect): ```js function probeError(url) { return new Promise((resolve) => { const s = document.createElement('script'); s.src = url; s.onload = () => resolve(false); // loaded successfully s.onerror = () => resolve(true); // failed (e.g., 4xx/5xx, wrong MIME, blocked) document.head.appendChild(s); }); } ``` Consigli per costruire l'oracolo - Forza lo stato “positivo” a essere più pesante: concatena un redirect aggiuntivo solo quando la condizione è vera, oppure fai in modo che l'URL di redirect rifletta input utente illimitato in modo che cresca col prefisso indovinato. - Inflate headers: ripeti il cookie bombing finché non si osserva un errore consistente nel percorso “pesante”. I server comunemente limitano la dimensione degli header e falliranno prima quando sono presenti molti cookie. - Stabilizza: avvia più operazioni parallele di impostazione cookie e esegui sonde ripetute per mediere il rumore di timing e caching. Related XS-Search tricks - Oracoli basati sulla lunghezza dell'URL (non servono cookie) possono essere combinati o usati in alternativa quando puoi forzare un target di richiesta molto lungo: {{#ref}} url-max-length-client-side.md {{#endref}} Difese e hardening - Rendi le risposte di successo/fallimento indistinguibili: - Evita redirect condizionali o grandi differenze nella dimensione della risposta tra gli stati. Restituisci lo stesso status, lo stesso content type e una lunghezza del body simile indipendentemente dallo stato. - Blocca le sonde su subresource cross-site: - SameSite cookies: imposta i cookie sensibili su SameSite=Lax o Strict in modo che le richieste di subresource come