
En sistemas Windows, se descubrió que GlobalProtect (versiones de aplicación 6.1.1-5 y 6.2.0-89) era vulnerable a la eliminación arbitraria de archivos con privilegios elevados mediante un ataque de enlace simbólico, lo que conduce a una escalada de privilegios local en la máquina local.
Se observó que cuando un usuario de Windows sin privilegios intenta conectarse a la VPN con GlobalProtect, el proceso "PanGpHip.exe" hace lo siguiente con privilegios de SYSTEM:
consulta el directorio "C:\Users\<user>\AppData\Local\Temp\waapi-*"
si se descubre algún directorio, consulta además el directorio "C:\Users\<user>\AppData\Local\Temp\waapi-<random>\*"
si se descubren archivos o directorios en "C:\Users\<user>\AppData\Local\Temp\waapi-<random>*", los elimina
finalmente, elimina el directorio "C:\Users\<user>\AppData\Local\Temp\waapi-<random>"
nota al margen: el programa puede consultar un directorio anidado, pero no logra abrir un handle hacia él. Por lo tanto, podemos ignorar este caso

Dado que el directorio "C:\Users\<user>\AppData\Local\Temp\waapi-<random>" puede ser creado por el usuario actual y asignársele el privilegio "Modify" para el usuario actual, el usuario actual puede modificar todo el directorio. Con esta configuración, un usuario sin privilegios puede lograr la eliminación arbitraria de archivos creando un enlace simbólico a una ubicación privilegiada (por ejemplo, C:\Windows\System32). Además, un usuario malintencionado podría lograr la escalada de privilegios local a partir de la eliminación arbitraria de archivos.
Para realizar la eliminación arbitraria de archivos como usuario sin privilegios, el usuario podría seguir los siguientes pasos:
Método 1
El usuario crea la carpeta "C:\Users\<user>\AppData\Local\Temp\waapi-1234567"
El usuario crea el archivo "C:\Users\<user>\AppData\Local\Temp\waapi-1234567\12345.txt"
El usuario establece un OpLock en el archivo "C:\Users\<user>\AppData\Local\Temp\waapi-1234567\12345.txt"
El usuario se conecta a la VPN. El proceso "PanGpHip.exe" intentará eliminar el archivo "C:\Users\<user>\AppData\Local\Temp\waapi-1234567\12345.txt" con privilegios de SYSTEM.
El proceso "PanGpHip.exe" se pausará debido al OpLock
Cuando se activa el OpLock, el usuario mueve el archivo "C:\Users\<user>\AppData\Local\Temp\waapi-1234567\12345.txt" a otro lugar para vaciar la carpeta
El usuario crea un junction "C:\Users\<user>\AppData\Local\Temp\waapi-1234567" hacia "\RPC Control"
El usuario crea un enlace simbólico "GLOBAL\GLOBALROOT\RPC Control\12345.txt" hacia el archivo objetivo (por ejemplo, C:\Windows\System32\secrets.txt)
El usuario libera el OpLock
El usuario elimina el enlace simbólico
El archivo objetivo (por ejemplo, C:\Windows\System32\secrets.txt) sería eliminado
.\PoC.exe del C:\windows\System32\secrets.txt 1
Método 2
El usuario crea la carpeta "C:\Users<user>\AppData\Local\Temp\waapi-1234567" y "C:\Users\<user>\AppData\Local\Temp\fakedir-1234567"
El usuario crea el archivo "C:\Users<user>\AppData\Local\Temp\fakedir-1234567\11111.txt" y crea el archivo "C:\Users\<user>\AppData\Local\Temp\fakedir-1234567\12345.txt"
El usuario crea un junction "C:\Users<user>\AppData\Local\Temp\waapi-1234567" hacia "C:\Users\<user>\AppData\Local\Temp\fakedir-1234567"
El usuario establece un OpLock en el archivo "C:\Users\<user>\AppData\Local\Temp\fakedir-1234567\11111.txt"
El usuario se conecta a la VPN. El proceso "PanGpHip.exe" intentará eliminar el archivo "C:\Users\<user>\AppData\Local\Temp\waapi-1234567\11111.txt" con privilegios de SYSTEM.
El proceso "PanGpHip.exe" se pausará debido al OpLock
El usuario elimina el junction existente y crea un junction "C:\Users\<user>\AppData\Local\Temp\waapi-1234567" hacia "\RPC Control"
El usuario crea un enlace simbólico "GLOBAL\GLOBALROOT\RPC Control\12345.txt" hacia el archivo objetivo (por ejemplo, C:\Windows\System32\secrets.txt)
El usuario libera el OpLock
El usuario elimina el enlace simbólico
El archivo objetivo (por ejemplo, C:\Windows\System32\secrets.txt) sería eliminado
.\PoC.exe del C:\windows\System32\secrets.txt 2
Para realizar una escalada de privilegios local a partir de la eliminación arbitraria de archivos, podríamos aprovechar Windows Installer como se describe en este artículo https://www.zerodayinitiative.com/blog/2022/3/16/abusing-arbitrary-file-deletes-to-escalate-privilege-and-other-great-tricks.
Método 1
.\PoC.exe pe RollbackScript.rbs 1
Método 2
.\PoC.exe pe RollbackScript.rbs 2
cmd.rbs abrirá un símbolo del sistema
public_run_bat.rbs ejecutará C:\Users\Public\run.bat