Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2020-1362 — analyse de CVE-2020-1362 | Kitploit
Outils/GitHubGitHub/asdyxcyxc/cve-2020-1362
Escalade de PrivilègesCriminalistique MémoireAnalyse des VulnérabilitésExploitationRétro-ingénierieApprentissage et ÉducationExploitation de Binaires
GitHubasdyxcyxc/cve-2020-1362

CVE-2020-1362

analyse de CVE-2020-1362

Voir le dépôt
374il y a 6 ansPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Exploitation d'un bug d'élévation de privilèges dans Windows 10 (CVE-2020-1362)

Exploitation du bug de corruption mémoire - analyse de CVE-2020-1362

WalletService a corrigé des bugs d'élévation de privilèges lors du dernier Patch Tuesday, l'un des bugs étant identifié comme CVE-2020-1362. Le bug exploite une faille hors limites dans le service. Nous partageons ici nos techniques pour l'exploiter.

Analyse de la cause racine

Nous avons effectué une analyse binaire des fonctions suivantes dans walletservice.dll :

  • Wallet::WalletCustomProperty::SetGroup

La fonction SetGroup écrit des données contrôlées par l'utilisateur dans la mémoire à un offset contrôlé par l'utilisateur.

root@kitploit:~
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;
}

Nous pouvons remarquer que la fonction ne vérifie pas la plage de l'offset que l'utilisateur peut contrôler. C'est donc là que se situe la vulnérabilité.

De l'écriture mémoire hors limites à WWW (write-what-where)

Nous pouvons maintenant écrire en mémoire hors limites. En observant, nous constatons qu'il existe des fonctions pour définir et obtenir un BSTR dans la même classe :

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

Nous pouvons donc facilement modifier le pointeur vers le BSTR via oobw pour obtenir la capacité de lire et d'écrire à n'importe quelle adresse.

De WWW à l'exécution de code arbitraire

Une fois que nous disposons de WWW (write-what-where), nous pouvons écrire la vtable des objets Wallet::WalletCustomProperty sur le tas pour contrôler RIP. Au début, nous avons essayé de la modifier directement avec oobw, mais nous avons constaté que oobw n'était pas aligné sur 8 octets. Nous avons donc dû écrire deux fois pour réaliser le détournement de vtable en utilisant une condition de course. Mais cela peut rendre l'exploit instable. Il existe d'autres méthodes pour contourner ce problème. Cependant, dans notre POC, nous utilisons simplement une autre vulnérabilité de fuite d'informations (CVE-2020-1361) pour divulguer l'adresse du tas et utilisons www pour écrire directement la vtable. Au fait, bien que CVE-2020-1361 soit marquée comme une vulnérabilité de fuite d'informations, elle peut en réalité être utilisée pour obtenir une élévation de privilèges. Nous publierons une analyse à ce sujet à l'avenir.

Nous avons trouvé la fonction ATL::CComObject<CDXGIAdapter>::`vector deleting destructor dans dxgi.dll pour nous aider à passer de l'exécution de fonctions arbitraires à l'exécution de code arbitraire. Cette fonction appelle la fonction loadlibraryEx et prend un pointeur global comme premier paramètre de loadlibraryEx. Nous pouvons alors obtenir l'exécution de code arbitraire en chargeant une DLL personnalisée.

Un exemple de POC est fourni dans le répertoire POC.

Impacts de la vulnérabilité

Grâce à cette vulnérabilité, nous pouvons élever nos privilèges de medium à NT AUTHORITY\system.

Testé sur Windows 10.0.18363.815, x64

Image text

Crédits

Haoran Qin

Zhiniang Peng (@edwardzpeng) de Qihoo 360

Chronologie

10 avr. 2020 : Vulnérabilités signalées

21 avr. 2020 : MSRC a enquêté et confirmé le bug

14 juil. 2020 : Correctif publié

17 juil. 2020 : Analyse publiée

Télécharger l’outil