Come prevenire il seguente attacco clickjacking?

2

L'attributo Security è stato implementato per prevenire gli attacchi XSS in iFrame disabilitando qualsiasi JS implementato nell'origine iFrame, quindi eliminando gli attacchi XSS, ma disabilitando anche qualsiasi script di sicurezza come frame busters, killers & ecc.

Ad esempio, qui ci sono tre pagine:

Pagina delle vittime

<html>
<head>
<script type="text/javascript">
if(top != self) top.location.replace(location);
</script>
</head>
<body bgcolor="red">
<img src="kitten.jpg" width="100%" height="100%">
</body>
</html>

Questa pagina contiene un frame buster molto scarso, ma abbastanza buono per questa dimostrazione. Nel caso in cui la pagina non sia il frame superiore nella sua finestra, reindirizza la finestra al percorso della pagina.

Pagina A

<html>
<body>
<center><iframe src="noIFrame.htm" border=1>    </center>
</body>
</html>

Questa pagina contiene un esempio, cosa succede quando l'utente malintenzionato aggiunge la pagina usando iframe, senza abilitare l'attributo di sicurezza. Il risultato dell'apertura di questa pagina è una rapida occhiata alla pagina click jackers e quindi al reindirizzamento del browser al percorso della pagina.

Pagina B

<html>
<body>
<center><iframe src="noIFrame.htm" security="restricted" border=1></center>
</body>
</html>

Infine, questa pagina mostra l'implementazione dell'attributo di sicurezza. L'iFrame è caricato e, poiché l'attributo è impostato per limitare lo script di busting del frame, non sta reindirizzando il browser al percorso della pagina delle vittime. Nota che questo attacco è valido solo in IE8 e versioni successive.

Ora, supponendo che un utente malintenzionato possa caricare file sul web server delle vittime *, disabilitando il possibile utilizzo di X-Frame-Options, in che modo la vittima può proteggere il suo sito web da attacchi di tipo click contro i suoi utenti di IE? / p>

* Questa è una domanda ipotetica, ovviamente se l'attaccante ha accesso al dominio del server web che attaccherebbe in modo diverso.

    
posta Boaz Tirosh 12.09.2012 - 22:19
fonte

1 risposta

3

L'unico modo per impedire il clickjacking su una versione di IE troppo vecchia per supportare X-Frame-Options è di rendere la pagina dipendente da JavaScript, in modo che si interrompa quando viene eseguita con security="restricted" . Ad esempio:

<style type="text/css">
   body.notframed #warning { display: none; }
   body.framed #content { display: none; }
</style>
<body class="framed">
   <script type="text/javascript">
       if (top==self)
           document.body.className= 'notframed';
   </script>
   <div id="content">
       ...
   </div>
   <div id="warning">
       This site cannot be used in a frame or with JavaScript disabled.
   </div>
</body>

Ovviamente questo ha implicazioni strongmente negative sull'accessibilità. Se il sito in questione non funziona già senza JS, potrebbe essere accettabile, ma di solito non ne vale la pena.

(Dimostra anche la tattica di rendere la tua pagina inutilizzabile invece di provare a reindirizzare la pagina principale come nel framebuster "molto povero" .In effetti, l'opzione di reindirizzamento non può essere resa sicura.)

Non sono sicuro di cosa stia riferendo il tuo ultimo commento - X-Frame-Options non impedisce il caricamento di file, ma funziona benissimo per proteggersi dal framing di qualsiasi sito (terzo o primo partito), l'unico problema con è la mancanza di supporto nelle vecchie versioni di IE.

    
risposta data 14.09.2012 - 01:12
fonte

Leggi altre domande sui tag