Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2020-1362 — analisi di CVE-2020-1362 | Kitploit
Strumenti/GitHubGitHub/asdyxcyxc/cve-2020-1362
Escalation di PrivilegiMemory ForensicsAnalisi delle VulnerabilitàExploitReverse EngineeringApprendimento e FormazioneBinary Exploitation
GitHubasdyxcyxc/cve-2020-1362

CVE-2020-1362

analisi di CVE-2020-1362

Vedi Repository
37126 anni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Sfruttamento di un bug di elevazione dei privilegi in Windows 10 (CVE-2020-1362)

Bug di corruzione della memoria sfruttato - analisi di CVE-2020-1362

WalletService ha risolto bug di elevazione dei privilegi nell'ultimo Patch Tuesday, uno dei bug è stato assegnato con CVE-2020-1362. Il bug sfrutta un bug out-of-bounds nel servizio. Qui condividiamo le nostre tecniche per sfruttarlo.

Analisi della causa principale

Abbiamo condotto un'analisi binaria delle seguenti funzioni in walletservice.dll:

  • Wallet::WalletCustomProperty::SetGroup

La funzione SetGroup scriveva dati controllati dall'utente in un offset di memoria controllato dall'utente.

signed __int64 __fastcall Wallet::WalletCustomProperty::SetGroup(__int64 this, int a2, int a3, int a4)
{
  signed __int64 result; // rax

  result = 0i64;
  if ( a2 == 1 )
  {
    if ( a3 & 0xFFFFFFDF )
      return 0x80070057i64;
  }
  else if ( a3 == 0x20 )
  {
    return 0x80070057i64;
  }
  if ( a4 == -1 )
  {
    *(_DWORD *)(this + 8i64 * a2 + 0x74) = 0;
    *(_DWORD *)(this + 8i64 * a2 + 0x78) = 0x7FFFFFFF;
  }
  else
  {
    *(_DWORD *)(this + 8i64 * a2 + 0x74) = a3;
    *(_DWORD *)(this + 8i64 * a2 + 0x78) = a4;
  }
  return result;
}

Possiamo notare che la funzione non controlla l'intervallo dell'offset che l'utente può controllare. Quindi è qui che si verifica la vulnerabilità.

Dalla scrittura di memoria fuori dai limiti a WWW (write-what-where)

Ora possiamo scrivere memoria fuori dai limiti. Osservando possiamo scoprire che c'è una funzione per impostare e ottenere BSTR nella stessa classe:

  • Wallet::WalletCustomProperty::SetLabel
  • Wallet::WalletCustomProperty::GetLabel

Quindi possiamo facilmente modificare il puntatore a BSTR tramite oobw per ottenere la capacità di leggere e scrivere qualsiasi indirizzo.

Da WWW all'esecuzione arbitraria di codice

Una volta ottenuto WWW (write-what-where), possiamo scrivere la vtable degli oggetti Wallet::WalletCustomProperty sull'heap per controllare RIP. All'inizio, abbiamo provato a modificarlo direttamente con oobw, ma abbiamo scoperto che oobw non era allineato a 8 byte. Quindi abbiamo dovuto scrivere due volte per ottenere il vtable hijack usando una race condition. Ma questo potrebbe rendere l'exploit instabile. Ci sono altri metodi per aggirare questo problema. Ma nel nostro POC usiamo un'altra vulnerabilità di info leak (CVE-2020-1361) per divulgare l'indirizzo dell'heap e usiamo www per scrivere la vtable direttamente. BTW, sebbene CVE-2020-1361 sia contrassegnata come vulnerabilità di info leak, in realtà può essere utilizzata per ottenere EOP. Ne scriveremo un writeup in futuro.

Abbiamo trovato la funzione ATL::CComObject<CDXGIAdapter>::`vector deleting destructor in dxgi.dll per aiutarci a passare dall'esecuzione di funzioni arbitrarie all'esecuzione arbitraria di codice. Questa funzione chiama la funzione loadlibraryEx e prende un puntatore globale come primo parametro di loadlibraryEx. Quindi possiamo ottenere l'esecuzione arbitraria di codice caricando una DLL personalizzata.

Un esempio di POC è fornito nella directory POC.

Impatti della vulnerabilità

Attraverso la vulnerabilità, possiamo ottenere un'elevazione dei privilegi da medium a NT AUTHORITY\system.

Testato su Windows 10.0.18363.815, x64

Image text

Credits

Haoran Qin

Zhiniang Peng (@edwardzpeng) di Qihoo 360

Cronologia

10 Apr 2020: Vulnerabilità segnalate

21 Apr 2020: MSRC ha investigato e confermato il bug

14 Lug 2020: Patch rilasciata

17 Lug 2020: Writeup pubblicato

Scarica lo strumento