
Codice Proof of Concept per CVE-2023-32353: Escalation dei privilegi locali tramite iTunes in Windows
Il programma di installazione MSI del lettore musicale Apple iTunes conteneva una vulnerabilità che permetteva a un utente normale, con privilegi bassi, su un computer Microsoft Windows di ottenere permessi elevati nel contesto di NT AUTHORITY/SYSTEM. Questo repository contiene un proof of concept (PoC) per mostrare come questa vulnerabilità potesse essere sfruttata, oltre a ulteriori informazioni per ricercatori di sicurezza e sviluppatori che vogliono saperne di più su questo tipo di vulnerabilità. Tuttavia, la sua applicabilità è limitata, come puoi leggere nella sezione Q&A.
Non ho ottenuto una shell SYSTEM. Cosa ho sbagliato?
Poiché si tratta di un proof of concept, non sono state fatte molte considerazioni per rimanere sotto traccia. Per utilizzarlo, dovresti eseguire un'installazione di Windows 10 Home Edition precedente alla release 'Version 10.0.19041.572', perché in quella versione questa vulnerabilità è stata corretta. Io ho effettuato i test utilizzando Windows 10 1909. Inoltre, dovresti andare in "Sicurezza di Windows" e disabilitare tutto ciò che riguarda Microsoft Defender/Windows Defender, poiché sembrano bloccare la creazione del symlink verso \RPC Control usando la Protezione in tempo reale (che si riattiva automaticamente a ogni riavvio, ricordalo!)
Dovrei avere paura di usare iTunes adesso?
No, basta aggiornare all'ultima versione di iTunes e tutto è a posto.
Posso eseguire il PoC senza doverlo compilare da solo?
Anche se sconsiglio vivamente di eseguire file .exe scaricati da Internet, eseguire Privilege-Escalation-using-Music-Player.exe dalla directory ./x64/Release/ in una macchina virtuale dovrebbe funzionare. In caso contrario, prova a installare l'ultimo redistribuibile VC dai link forniti da Microsoft.
Qual è la vulnerabilità reale qui?
Durante la riparazione MSI, il programma di installazione crea una cartella con privilegi bassi chiamata "SC Info" all'interno di C:\ProgramData\Apple Computer\iTunes. Per la precisione, la directory C:\ProgramData\Apple Computer\iTunes non concede il controllo completo a tutti. Ma la sottocartella chiamata "SC Info" concede il controllo completo a Everyone (inclusi utenti con privilegi bassi/standard). Se elimini manualmente tutto il contenuto della cartella C:\ProgramData\Apple Computer\iTunes\ (a seconda che tu abbia eseguito iTunes in precedenza, potrebbero esserci più cartelle oltre a "SC Info"), un utente con privilegi bassi è in grado di creare un mount point da C:\ProgramData\Apple Computer\iTunes\ a qualsiasi altra directory scrivibile da NT AUTHORITY/SYSTEM. In questo proof of concept è stata utilizzata la tecnica "wermgr.exe.local", già mitigata nelle versioni correnti di Windows 10 e applicabile solo alla versione Windows 10 Home per quanto ne so. Quindi, se crei un mount point da C:\ProgramData\Apple Computer\iTunes\ a \RPC Control e poi un symlink da \RPC Control\SC Info (ricorda, SC Info è il nome della cartella che il programma di installazione crea all'interno della cartella iTunes) a ??\c:\windows\system32\wermgr.exe.local e poi usi l'opzione di riparazione MSI del programma di installazione di iTunes, crei di fatto una directory chiamata wermgr.exe.local all'interno di C:\Windows\System32 che concede il controllo completo a Everyone. Questo reindirizza effettivamente la creazione della cartella SC Info a \RPC Control, e RPC Control stesso reindirizza la creazione della cartella alla directory System32. Da lì (ripeto, questa non fa parte della vulnerabilità reale, ma serve solo a completare la catena di escalation di privilegi), puoi creare una sottocartella con un nome specifico contenente una DLL craftata che un servizio in esecuzione come NT AUTHORITY/SYSTEM, anche quando chiamato tramite un'attività pianificata da un utente con privilegi bassi, caricherà ed eseguirà i comandi al suo interno (es. un cmd in esecuzione come NT AUTHORITY/SYSTEM). Per maggiori dettagli, consulta il codice vero e proprio o la sezione "Passaggi per la riproduzione manuale" qui sotto.
Poiché si tratta di un Proof of Concept, disattiva Windows Defender/Microsoft Defender (leggi anche la sezione Q&A)
Installa iTunes precedente alla versione 12.12.9 (es. 12.12.4.1)
Elimina tutto il contenuto di C:\ProgramData\Apple Computer\iTunes, ma mantieni la cartella iTunes stessa
Crea un Mount Point da "C:\ProgramData\Apple Computer\iTunes" a "\RPC Control", ad esempio usando gli strumenti di test dei collegamenti simbolici di James Forshaw:
CreateMountPoint.exe "C:\ProgramData\Apple Computer\iTunes" "\RPC Control"
Crea un Symlink da "\RPC Control\SC Info" a "??\c:\windows\system32\wermgr.exe.local"
CreateDosDeviceSymlink.exe "\RPC Control\SC Info" "??\c:\windows\system32\wermgr.exe.local"
Usando il MSI di iTunes / l'EXE di installazione di iTunes, "ripara" la tua installazione di iTunes (se non hai più il programma di installazione, puoi trovare "iTunes64.msi" in questa cartella: C:\ProgramData\Apple Computer\Installer Cache\iTunes )
Naviga fino a c:\windows\system32\wermgr.exe.local\
Crea una sottocartella chiamata "amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.18362.418_none_e6c6b287130d565d" (può essere diversa sul tuo sistema; usa il nome dell'ultima cartella che inizia con "amd64_microsoft.windows.common-controls_" dalla directory C:\Windows\WinSxS)
Metti un file DLL chiamato "comctl32.dll" all'interno della cartella amd64_microsoft.windows.common-controls_*
Esegui questo comando:
schtasks.exe /Run /TN "\Microsoft\Windows\Windows Error Reporting\QueueReporting"
L'azione specificata all'interno del tuo file comctl32.dll verrà ora eseguita nel contesto di NT AUTHORITY/SYSTEM, ad esempio si aprirà una finestra cmd