Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2020-1362 — Write-up zu CVE-2020-1362 | Kitploit
Tools/GitHubGitHub/asdyxcyxc/cve-2020-1362
Privilege EscalationSpeicherforensikSchwachstellenanalyseExploitationReverse EngineeringLernen & BildungBinary-Exploitation
GitHubasdyxcyxc/cve-2020-1362

CVE-2020-1362

Write-up zu CVE-2020-1362

Repository anzeigen
374vor 6 JahrenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Ausnutzung eines Rechteerweiterungsfehlers in Windows 10 (CVE-2020-1362)

Ausnutzung eines Speicherkorruptionsfehlers – Analyse von CVE-2020-1362

Im letzten Patch Tuesday hat WalletService Rechteerweiterungsfehler behoben, einer der Fehler wurde mit CVE-2020-1362 gekennzeichnet. Der Fehler nutzt einen Out-of-Bounds-Fehler im Dienst aus. Hier teilen wir unsere Techniken, um ihn auszunutzen.

Ursachenanalyse

Wir haben eine binäre Analyse der folgenden Funktionen in walletservice.dll durchgeführt:

  • Wallet::WalletCustomProperty::SetGroup

Die SetGroup-Funktion schrieb benutzergesteuerte Daten an eine benutzergesteuerte Speicherposition.

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;
}

Wir können feststellen, dass die Funktion den Bereich des Offsets, den der Benutzer kontrollieren kann, nicht überprüft. Hier liegt also die Schwachstelle.

Von Out-of-Bounds-Speicherschreibzugriff zu WWW (Write-What-Where)

Wir können nun Speicher außerhalb der Grenzen beschreiben. Durch Beobachtung stellen wir fest, dass es eine Funktion zum Setzen und Abrufen von BSTR in derselben Klasse gibt:

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

So können wir den Zeiger auf BSTR einfach durch oobw modifizieren, um die Fähigkeit zu erhalten, jede Adresse zu lesen und zu schreiben.

Von WWW zur beliebigen Codeausführung

Sobald wir WWW (Write-What-Where) haben, können wir die vtable von Wallet::WalletCustomProperty-Objekten auf dem Heap beschreiben, um RIP zu kontrollieren. Anfangs versuchten wir, sie direkt mit oobw zu modifizieren, aber wir stellten fest, dass oobw nicht auf 8 Byte ausgerichtet war. Also müssen wir zweimal schreiben, um einen vtable-Hijack mittels Race Condition zu erreichen. Das kann den Exploit jedoch instabil machen. Es gibt andere Methoden, dies zu umgehen. In unserem POC verwenden wir jedoch eine andere Information-Leak-Schwachstelle (CVE-2020-1361), um die Heap-Adresse preiszugeben, und nutzen WWW, um die vtable direkt zu überschreiben. Übrigens, obwohl CVE-2020-1361 als Information-Leak-Schwachstelle markiert ist, kann sie tatsächlich zur Erreichung von EOP verwendet werden. Wir werden in Zukunft eine Ausarbeitung dazu veröffentlichen.

Wir haben die Funktion ATL::CComObject<CDXGIAdapter>::`vector deleting destructor in dxgi.dll gefunden, die uns hilft, von beliebigen Funktionsaufrufen zur beliebigen Codeausführung zu gelangen. Diese Funktion ruft die loadlibraryEx-Funktion auf und übergibt einen globalen Zeiger als ersten Parameter von loadlibraryEx. Dann können wir durch Laden einer benutzerdefinierten DLL eine beliebige Codeausführung erreichen.

Ein Beispiel-POC wird im Verzeichnis POC bereitgestellt.

Auswirkungen der Schwachstelle

Durch die Schwachstelle können wir eine Rechteerweiterung von mittleren Rechten auf NT AUTHORITY\system erreichen.

Getestet unter Windows 10.0.18363.815, x64

Bildtext

Danksagungen

Haoran Qin

Zhiniang Peng (@edwardzpeng) von Qihoo 360

Zeitplan

10. April 2020: Schwachstellen gemeldet

21. April 2020: MSRC untersuchte und bestätigte den Fehler

14. Juli 2020: Patch veröffentlicht

17. Juli 2020: Ausarbeitung veröffentlicht

Tool herunterladen