
Código de Prueba de Concepto para CVE-2023-32353: Escalada de privilegios local a través de iTunes en Windows
El instalador MSI del reproductor de música Apple iTunes contenía una vulnerabilidad que permitía a un usuario normal, con pocos privilegios en una computadora con Microsoft Windows, obtener permisos elevados en el contexto de NT AUTHORITY/SYSTEM. Este repositorio contiene una prueba de concepto (PoC) para mostrar cómo se podría explotar esto, así como más información para investigadores de seguridad y desarrolladores que quieran aprender más sobre este tipo de vulnerabilidad. Sin embargo, su aplicabilidad es limitada, como puede leer en la sección de Preguntas y Respuestas.
No obtuve un shell de SYSTEM. ¿Qué hice mal?
Dado que esto es una prueba de concepto, no se pensó mucho en pasar desapercibido. Para usarlo, debe ejecutar una instalación de Windows 10 HOME Edition anterior a la versión '10.0.19041.572', porque en esa versión se corrigió esta vulnerabilidad. Yo probé usando Windows 10 1909. Además, debe navegar a "Seguridad de Windows" y deshabilitar todo lo relacionado con Microsoft Defender/Windows Defender, ya que parecen bloquear la creación del enlace simbólico a \RPC Control mediante la Protección en Tiempo Real (que se activa automáticamente en cada reinicio, ¡recuérdelo!)
¿Debería tener miedo de usar iTunes ahora?
No, solo actualice a la última versión de iTunes y estará bien.
¿Puedo ejecutar la PoC sin necesidad de compilarla por mi cuenta?
Si bien recomiendo encarecidamente a todos que no ejecuten ningún archivo .exe de Internet, ejecutar Privilege-Escalation-using-Music-Player.exe desde el directorio ./x64/Release/ en una máquina virtual debería funcionar. Si no, intente instalar el último redistribuible de VC desde los enlaces proporcionados por Microsoft.
¿Cuál es la vulnerabilidad real aquí?
Durante la reparación del MSI, el instalador crea una carpeta con pocos privilegios llamada "SC Info" dentro de C:\ProgramData\Apple Computer\iTunes. Para ser precisos, el directorio C:\ProgramData\Apple Computer\iTunes no permite a Todos el control total. Pero la subcarpeta llamada "SC Info" otorga a Todos (incluidos usuarios estándar con pocos privilegios) control total. Si elimina manualmente todo el contenido de la carpeta C:\ProgramData\Apple Computer\iTunes\ (dependiendo de si ha ejecutado iTunes antes, puede haber más carpetas además de "SC Info"), entonces un usuario con pocos privilegios puede crear un punto de montaje desde C:\ProgramData\Apple Computer\iTunes\ a cualquier otro directorio que sea escribible por NT AUTHORITY/SYSTEM. En esta prueba de concepto se utilizó la técnica "wermgr.exe.local", que ya está mitigada en las versiones actuales de Windows 10 y solo se aplica a la edición Windows 10 HOME, hasta donde sé. Entonces, si crea un punto de montaje desde C:\ProgramData\Apple Computer\iTunes\ a \RPC Control y luego un enlace simbólico desde \RPC Control\SC Info (recuerde, SC Info es el nombre de la carpeta que crea el instalador dentro de la carpeta de iTunes) a ??\c:\windows\system32\wermgr.exe.local y luego usa la opción de reparación del MSI del instalador de iTunes, crea efectivamente un directorio llamado wermgr.exe.local dentro de C:\Windows\System32 que otorga control total a Todos. Esto redirige efectivamente la creación de la carpeta SC Info a \RPC Control, y RPC Control mismo redirigirá la creación de la carpeta al directorio System32. A partir de ahí (nuevamente, le digo que esto no es parte de la vulnerabilidad real, sino solo para completar la cadena de escalada de privilegios), puede crear una subcarpeta con un nombre específico con una DLL diseñada que un servicio que se ejecutará como NT AUTHORITY/SYSTEM, incluso cuando sea llamado mediante una tarea programada por un usuario con pocos privilegios, cargará y ejecutará los comandos allí. (por ejemplo, un cmd ejecutándose como NT AUTHORITY/SYSTEM) Para más detalles, consulte el código real o la sección "Pasos para reproducir manualmente" a continuación.
Dado que esto es una Prueba de Concepto, desactive Windows Defender/Microsoft Defender (también, lea la sección de Preguntas y Respuestas)
Instale iTunes anterior a la versión 12.12.9 (por ejemplo, 12.12.4.1)
Elimine todo el contenido de C:\ProgramData\Apple Computer\iTunes, pero mantenga la carpeta iTunes en sí
Cree un Punto de Montaje desde "C:\ProgramData\Apple Computer\iTunes" a "\RPC Control", por ejemplo, usando las symboliclink-testing-tools de James Forshaw:
CreateMountPoint.exe "C:\ProgramData\Apple Computer\iTunes" "\RPC Control"
Cree un Enlace Simbólico desde "\RPC Control\SC Info" a "??\c:\windows\system32\wermgr.exe.local"
CreateDosDeviceSymlink.exe "\RPC Control\SC Info" "??\c:\windows\system32\wermgr.exe.local"
Usando el MSI de iTunes/el EXE del instalador de iTunes, "repare" su instalación de iTunes (si ya no tiene el instalador, puede localizar "iTunes64.msi" en esta carpeta: C:\ProgramData\Apple Computer\Installer Cache\iTunes <versión>)
Navegue a c:\windows\system32\wermgr.exe.local\
Cree una subcarpeta llamada "amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.18362.418_none_e6c6b287130d565d" (esto puede ser diferente en su sistema, use el nombre de la última carpeta que comience con "amd64_microsoft.windows.common-controls_" del directorio C:\Windows\WinSxS)
Coloque un archivo DLL llamado "comctl32.dll" dentro de la carpeta amd64_microsoft.windows.common-controls_*
Ejecute este comando:
schtasks.exe /Run /TN "\Microsoft\Windows\Windows Error Reporting\QueueReporting"
La acción que especificó dentro de su archivo comctl32.dll se ejecutará ahora en el contexto de NT AUTHORITY/SYSTEM, por ejemplo, se abre una ventana de cmd