Пример #1
0
	def __init__(self, playground_path=PLAYGROUND_PATH):
		LinuxExploit.__init__(self)
		self.name = "CVE20084210"
		self.formatted_name = "CVE-2008-4210"
		self.e_type = "linux"
		self.brief_desc = "Linux kernel < 2.6.22 open/ftruncate local exploit"
		self.reliability = MEDIUM_RELIABILITY
		self.vulnerable_base = KernelWindow(GENERIC_LINUX, BASE_VULNERABLE, 2, 6, 11, 2, 6, 22)
		self.vulnerable_kernels = [
			KernelWindow(UBUNTU_8, VERSION_VULNERABLE, 2, 6, 11, 2, 6, 27, highest_patch_level="2.6.27-9-generic - 2.6.27-9.19"),
			KernelWindow(UBUNTU_8, VERSION_VULNERABLE, 2, 6, 11, 2, 6, 24, highest_patch_level="2.6.24-22-generic - 2.6.24-22.45"),
			KernelWindow(UBUNTU_7, VERSION_VULNERABLE, 2, 6, 11, 2, 6, 22, highest_patch_level="2.6.22-16-generic - 2.6.22-16.60"),
			KernelWindow(UBUNTU_6, VERSION_VULNERABLE, 2, 6, 11, 2, 6, 15, highest_patch_level="2.6.15-53-686 - 2.6.15-53.74"),
			KernelWindow(UBUNTU_GENERIC, BASE_VULNERABLE, 2, 6, 11, 2, 6, 15),
			KernelWindow(DEBIAN_GENERIC, BASE_VULNERABLE, 2, 6, 11, 2, 6, 18, highest_patch_level="2.6.18-6_2.6.18.dfsg.1-22etch3"),
		]
		self.exploit_kernels = [

		]
		self.architecture = ARCHITECTURE_i686
		self.playground_path = playground_path
		self.exploit_source_file_name = "{}.c".format(self.name)
		self.source_c_path = os.path.join(self.playground_path, self.exploit_source_file_name)
		self.compilation_path = os.path.join(self.playground_path, self.name)
		self.compilation_command = "gcc -o {} {} -O2 -fomit-frame-pointer".format(self.compilation_path, self.source_c_path)
		self.exploit_command = self.compilation_path
		self.exploit_source = """
Пример #2
0
	def __init__(self, playground_path=PLAYGROUND_PATH):
		LinuxExploit.__init__(self)
		self.name = "CVE20132094_semtex"
		self.formatted_name = "CVE-2013-2094"
		self.e_type = "linux"
		self.brief_desc = "perf_swevent_init Local root exploit (32 bit)"
		self.reliability = MEDIUM_RELIABILITY
		self.vulnerable_base = KernelWindow(GENERIC_LINUX, BASE_VULNERABLE, 0, 0, 0, 3, 8, 9) # reported...maybe not real
		self.vulnerable_kernels = [
			KernelWindow(RHEL, VERSION_VULNERABLE, 0, 0, 0, 2, 6, 32, highest_patch_level="2.6.32-358.6.2"),
			KernelWindow(SUSE, VERSION_VULNERABLE, 0, 0, 0, 3, 0, 74, highest_patch_level="3.0.74-0.6.8.1"),
			KernelWindow(CENTOS, VERSION_VULNERABLE, 2, 6, 32, 2, 6, 37, highest_patch_level="2.6.32-358.6.2"),
			KernelWindow(UBUNTU_12, VERSION_VULNERABLE, 0, 0, 0, 3, 2, 0, highest_patch_level="3.2.0-43.68"),
			KernelWindow(UBUNTU_12, VERSION_VULNERABLE, 0, 0, 0, 3, 5, 0, highest_patch_level="3.5.0-30.51"),
			KernelWindow(UBUNTU_13, VERSION_VULNERABLE, 0, 0, 0, 3, 5, 0, highest_patch_level="3.8.0-21.32"),
			KernelWindow(UBUNTU_GENERIC, BASE_VULNERABLE, 0, 0, 0, 3, 2, 0),
			KernelWindow(DEBIAN_8, VERSION_VULNERABLE, 0, 0, 0, 3, 8, 11, highest_patch_level="3.8.11-1"),
			KernelWindow(DEBIAN_7, VERSION_VULNERABLE, 0, 0, 0, 3, 2, 41, highest_patch_level="3.2.41-2+deb7u2"),
			KernelWindow(DEBIAN_GENERIC, BASE_VULNERABLE, 0, 0, 0, 3, 2, 41),
		]
		self.exploit_kernels = [
			# don't know what the PoC targets, so can't say for sure it'll work
		]
		self.architecture = ARCHITECTURE_i686
		self.playground_path = playground_path
		self.exploit_source_file_name = "{}.c".format(self.name)
		self.source_c_path = os.path.join(self.playground_path, self.exploit_source_file_name)
		self.compilation_path = os.path.join(self.playground_path, self.name)
		self.compilation_command = "gcc -o {} {} -O2".format(self.compilation_path, self.source_c_path)
		self.exploit_command = self.compilation_path
		self.exploit_source = """
Пример #3
0
	def __init__(self, playground_path=PLAYGROUND_PATH):
		LinuxExploit.__init__(self)
		self.name = "CVE20080600"
		self.formatted_name = "CVE-2008-0600"
		self.e_type = "linux"
		self.brief_desc = "vmsplice_to_pipe 2.6.17 through 2.6.24.1"
		self.reliability = MEDIUM_RELIABILITY
		self.vulnerable_base = KernelWindow(GENERIC_LINUX, BASE_VULNERABLE, 2, 6, 17, 2, 6, 24)
		self.vulnerable_kernels = [
			KernelWindow(GENERIC_LINUX, VERSION_VULNERABLE, 2, 6, 17, 2, 6, 24),
			KernelWindow(UBUNTU_7, VERSION_VULNERABLE, 2, 6, 17, 2, 6, 22, highest_patch_level="2.6.22-14-generic - 2.6.22-14.52"),
			KernelWindow(UBUNTU_6, VERSION_VULNERABLE, 2, 6, 17, 2, 6, 17, highest_patch_level="2.6.17-12-generic - 2.6.17.1-12.44"),
			KernelWindow(UBUNTU_GENERIC, BASE_VULNERABLE, 2, 6, 17, 2, 6, 24),
			KernelWindow(DEBIAN_4, VERSION_VULNERABLE, 2, 6, 17, 2, 6, 18, highest_patch_level="2.6.18.dfsg.1-18etch1"),
			KernelWindow(DEBIAN_5, VERSION_VULNERABLE, 2, 6, 17, 2, 6, 22, highest_patch_level="2.6.22-6.lenny1"),
			KernelWindow(DEBIAN_6, VERSION_VULNERABLE, 2, 6, 17, 2, 6, 24, highest_patch_level="2.6.24-4"),
			KernelWindow(DEBIAN_GENERIC, BASE_VULNERABLE, 2, 6, 17, 2, 6, 24)
		]
		self.exploit_kernels = [
			KernelWindow(GENERIC_LINUX, VERSION_VULNERABLE, 2, 6, 23, 2, 6, 24),
		]
		self.architecture = ARCHITECTURE_i686
		self.playground_path = playground_path
		self.exploit_source_file_name = "{}.c".format(self.name)
		self.source_c_path = os.path.join(self.playground_path, self.exploit_source_file_name)
		self.compilation_path = os.path.join(self.playground_path, self.name)
		self.compilation_command = "gcc -o {} {}".format(self.compilation_path, self.source_c_path)
		self.exploit_command = self.compilation_path
		self.exploit_source = """
Пример #4
0
	def __init__(self, playground_path=PLAYGROUND_PATH):
		LinuxExploit.__init__(self)
		self.name = "CVE20144699"
		self.formatted_name = "CVE-2014-4699"
		self.e_type = "linux"
		self.brief_desc = "Exploitable race condition in linux before 3.15.4"
		self.reliability = MEDIUM_RELIABILITY
		self.vulnerable_base = KernelWindow(GENERIC_LINUX, VERSION_VULNERABLE, 0, 0, 0, 3, 15, 4)
		self.vulnerable_kernels = [
			KernelWindow(UBUNTU_10, VERSION_VULNERABLE, 0, 0, 0, 2, 6, 32, highest_patch_level="2.6.32-62.126"),
			KernelWindow(UBUNTU_12, VERSION_VULNERABLE, 0, 0, 0, 3, 2, 0, highest_patch_level="3.2.0-65.99"),
			KernelWindow(UBUNTU_13, VERSION_VULNERABLE, 0, 0, 0, 3, 11, 0, highest_patch_level="3.11.0-24.42"),
			KernelWindow(UBUNTU_14, VERSION_VULNERABLE, 0, 0, 0, 3, 13, 0, highest_patch_level="3.13.0-30.55"),
			KernelWindow(UBUNTU_GENERIC, BASE_VULNERABLE, 0, 0, 0, 3, 2, 0),
			KernelWindow(DEBIAN_8, VERSION_VULNERABLE, 0, 0, 0, 3, 14, 10, highest_patch_level="3.14.10-1"),
			KernelWindow(DEBIAN_7, VERSION_VULNERABLE, 0, 0, 0, 3, 2, 60, highest_patch_level="3.2.60-1+deb7u1"),
			KernelWindow(DEBIAN_6, VERSION_VULNERABLE, 0, 0, 0, 2, 6, 32, highest_patch_level="2.6.32-48squeeze8"),
			KernelWindow(DEBIAN_GENERIC, BASE_VULNERABLE, 0, 0, 0, 2, 6, 32),
		]
		self.exploit_kernels = [
			KernelWindow(UBUNTU_12, EXPLOIT_AVAILABLE, 0, 0, 0, 3, 4, 0)
		]
		self.playground_path = playground_path
		self.exploit_source_file_name = "{}.c".format(self.name)
		self.source_c_path = os.path.join(self.playground_path, self.exploit_source_file_name)
		self.compilation_path = os.path.join(self.playground_path, self.name)

		self.compilation_command = "gcc -O2 -o {} {}".format(self.compilation_path, self.source_c_path)
		self.exploit_command = self.compilation_path
		self.exploit_source = """
Пример #5
0
 def __init__(self, playground_path=PLAYGROUND_PATH):
     LinuxExploit.__init__(self)
     self.name = "CVE20171000372"
     self.formatted_name = "CVE-2017-1000372"
     self.e_type = "linux"
     self.brief_desc = "Stack clash vulnerability from qualys"
     self.reliability = HIGH_RELIABILITY
     self.vulnerable_base = KernelWindow(GENERIC_LINUX, BASE_VULNERABLE, 4,
                                         11, 5, 4, 11, 5)
     self.vulnerable_kernels = [
         KernelWindow(OPENBSD, VERSION_VULNERABLE, 0, 0, 0,
                      KERNEL_MAJOR_VERSION_CAP + 1, 0, 0)
     ]
     self.exploit_kernels = [
         KernelWindow(OPENBSD, EXPLOIT_AVAILABLE, 0, 0, 0,
                      KERNEL_MAJOR_VERSION_CAP + 1, 0, 0)
     ]
     self.architecture = ARCHITECTURE_i686
     self.playground_path = playground_path
     self.exploit_source_file_name = "{}.c".format(self.name)
     self.source_c_path = os.path.join(self.playground_path,
                                       self.exploit_source_file_name)
     self.compilation_path = os.path.join(self.playground_path, self.name)
     self.compilation_command = "gcc -o {} {}".format(
         self.compilation_path, self.source_c_path)
     self.exploit_command = self.compilation_path
     self.exploit_source = """
Пример #6
0
 def __init__(self, playground_path=PLAYGROUND_PATH):
     LinuxExploit.__init__(self)
     self.name = "CVE20140038"
     self.formatted_name = "CVE-2014-0038"
     self.e_type = "linux"
     self.brief_desc = "recvmmsg syscall issues in x86_32 can lead to root (timeoutpwn)"
     self.reliability = MEDIUM_RELIABILITY
     self.vulnerable_base = KernelWindow(GENERIC_LINUX, BASE_VULNERABLE, 0,
                                         0, 0, 3, 13, 2)
     self.vulnerable_kernels = [
         KernelWindow(SUSE,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      11,
                      10,
                      highest_patch_level="3.11.10-7.1"),
         KernelWindow(UBUNTU_13,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      11,
                      1,
                      highest_patch_level="3.11.0-15.25"),
         KernelWindow(UBUNTU_12,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      8,
                      0,
                      highest_patch_level=" 3.11.0-15.25~precise1"),
         KernelWindow(UBUNTU_GENERIC, BASE_VULNERABLE, 0, 0, 0, 3, 8, 0),
     ]
     self.exploit_kernels = [
         KernelWindow(UBUNTU_13,
                      EXPLOIT_AVAILABLE,
                      0,
                      0,
                      0,
                      3,
                      11,
                      1,
                      highest_patch_level="3.11.0-15.25"),
     ]
     self.architecture = ARCHITECTURE_i686
     self.playground_path = playground_path
     self.exploit_source_file_name = "{}.c".format(self.name)
     self.source_c_path = os.path.join(self.playground_path,
                                       self.exploit_source_file_name)
     self.compilation_path = os.path.join(self.playground_path, self.name)
     self.compilation_command = "gcc -o {} {}".format(
         self.compilation_path, self.source_c_path)
     self.exploit_command = self.compilation_path
     self.exploit_source = """
Пример #7
0
 def __init__(self, playground_path=PLAYGROUND_PATH):
     LinuxExploit.__init__(self)
     self.name = "CVE20175123"
     self.formatted_name = "CVE-2017-5123"
     self.e_type = "linux"
     self.brief_desc = "waitid() not calling access_ok()"
     self.reliability = LOW_RELIABILITY
     self.vulnerable_base = KernelWindow(GENERIC_LINUX, BASE_VULNERABLE, 4,
                                         13, 0, 4, 13, 6)
     self.vulnerable_kernels = [
         KernelWindow(RHEL, VERSION_VULNERABLE, 0, 0, 0,
                      KERNEL_MAJOR_VERSION_CAP + 1, 0, 0)
     ]
     self.exploit_kernels = [
         KernelWindow(RHEL, EXPLOIT_AVAILABLE, 0, 0, 0,
                      KERNEL_MAJOR_VERSION_CAP + 1, 0, 0)
     ]
     self.playground_path = playground_path
     self.exploit_source_file_name = "{}.c".format(self.name)
     self.source_c_path = os.path.join(self.playground_path,
                                       self.exploit_source_file_name)
     self.compilation_path = os.path.join(self.playground_path, self.name)
     self.compilation_command = "gcc -o {} {}".format(
         self.compilation_path, self.source_c_path)
     self.exploit_command = self.compilation_path
     self.exploit_source = """
Пример #8
0
 def __init__(self, playground_path=PLAYGROUND_PATH):
     LinuxExploit.__init__(self)
     self.name = "CVE20080900"
     self.formatted_name = "CVE-2008-0900"
     self.e_type = "linux"
     self.brief_desc = "CVE-2008-0900 'jessica_biel_naked_in_my_bed.c'"
     self.reliability = MEDIUM_RELIABILITY
     self.vulnerable_base = KernelWindow(GENERIC_LINUX, BASE_VULNERABLE, 2,
                                         6, 17, 2, 6, 24)
     self.vulnerable_kernels = [
         KernelWindow(GENERIC_LINUX, VERSION_VULNERABLE, 2, 6, 17, 2, 6, 24)
     ]
     self.exploit_kernels = [
         KernelWindow(GENERIC_LINUX, VERSION_VULNERABLE, 2, 6, 17, 2, 6, 24)
     ]
     self.architecture = ARCHITECTURE_i686
     self.playground_path = playground_path
     self.exploit_source_file_name = "{}.c".format(self.name)
     self.source_c_path = os.path.join(self.playground_path,
                                       self.exploit_source_file_name)
     self.compilation_path = os.path.join(self.playground_path, self.name)
     self.compilation_command = "gcc -o {} {} -static -Wno-format".format(
         self.compilation_path, self.source_c_path)
     self.exploit_command = self.compilation_path
     self.exploit_source = """
Пример #9
0
	def __init__(self, playground_path=PLAYGROUND_PATH):
		LinuxExploit.__init__(self)
		self.name = "CVE20062451"
		self.formatted_name = "CVE-2006-2451"
		self.e_type = "linux"
		self.brief_desc = "Design flaw in prctl(PR_SET_DUMPABLE, ...) system call"
		self.reliability = MEDIUM_RELIABILITY
		self.vulnerable_base = KernelWindow(GENERIC_LINUX, BASE_VULNERABLE, 2, 3, 16, 2, 6, 17)
		self.vulnerable_kernels = [
			KernelWindow(UBUNTU_6, VERSION_VULNERABLE, 2, 3, 16, 2, 6, 15, highest_patch_level="2.6.15-26-686 - 2.6.15-26.44"),
			KernelWindow(UBUNTU_GENERIC, BASE_VULNERABLE, 2, 3, 16, 2, 6, 15),
			KernelWindow(DEBIAN_GENERIC, VERSION_VULNERABLE, 2, 3, 16, 2, 6, 15),
			KernelWindow(SUSE, VERSION_VULNERABLE, 8, 0, 0, 10, 0, 0)
		]
		self.exploit_kernels = [
			KernelWindow(UBUNTU_6, EXPLOIT_AVAILABLE, 2, 3, 16, 2, 6, 15, highest_patch_level="2.6.15-26-686 - 2.6.15-26.44"),
			KernelWindow(DEBIAN_GENERIC, EXPLOIT_AVAILABLE, 2, 3, 16, 2, 6, 17, highest_patch_level="2.6.17-3"),
			KernelWindow(SUSE, EXPLOIT_AVAILABLE, 2, 3, 16, 2, 6, 17, highest_patch_level="2.6.17-3")
		]
		self.architecture = ARCHITECTURE_i686
		self.playground_path = playground_path
		self.exploit_source_file_name = "{}.c".format(self.name)
		self.source_c_path = os.path.join(self.playground_path, self.exploit_source_file_name)
		self.compilation_path = os.path.join(self.playground_path, self.name)
		self.compilation_command = "gcc -o {} {} -O2 -fomit-frame-pointer".format(self.compilation_path, self.source_c_path)
		self.exploit_command = self.compilation_path
		self.exploit_source = """
Пример #10
0
 def __init__(self, playground_path=PLAYGROUND_PATH):
     LinuxExploit.__init__(self)
     self.name = "CVE20165195_32_poke"
     self.formatted_name = "CVE-2016-5195 (x86) [poke variant]"
     self.e_type = "linux"
     self.brief_desc = "Dirty COW race condition root priv esc for 32 bit (poke variant)"
     self.reliability = HIGH_RELIABILITY
     self.vulnerable_base = KernelWindow(GENERIC_LINUX, BASE_VULNERABLE, 2,
                                         0, 0, 4, 8, 3)
     self.vulnerable_kernels = [
         KernelWindow(RHEL, VERSION_VULNERABLE, 0, 0, 0,
                      KERNEL_MAJOR_VERSION_CAP + 1, 0, 0)
     ]
     self.exploit_kernels = [
         KernelWindow(RHEL, EXPLOIT_AVAILABLE, 0, 0, 0,
                      KERNEL_MAJOR_VERSION_CAP + 1, 0, 0)
     ]
     self.architecture = ARCHITECTURE_i686
     self.playground_path = playground_path
     self.exploit_source_file_name = "{}.c".format(self.name)
     self.source_c_path = os.path.join(self.playground_path,
                                       self.exploit_source_file_name)
     self.compilation_path = os.path.join(self.playground_path, self.name)
     self.compilation_command = "gcc {} -o {} -pthread".format(
         self.source_c_path, self.compilation_path)
     self.exploit_command = self.compilation_path
     self.exploit_source = """
Пример #11
0
 def __init__(self, playground_path=PLAYGROUND_PATH):
     LinuxExploit.__init__(self)
     self.name = "CVE20144014"
     self.formatted_name = "CVE-2014-4014"
     self.e_type = "linux"
     self.brief_desc = "`chmod` restriction bypass allows users to get root before 3.14.8"
     self.reliability = HIGH_RELIABILITY
     self.vulnerable_base = KernelWindow(GENERIC_LINUX, BASE_VULNERABLE, 0,
                                         0, 0, 3, 14, 8)
     self.vulnerable_kernels = [
         KernelWindow(UBUNTU_13,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      11,
                      0,
                      highest_patch_level="3.11.0-26.45"),
         KernelWindow(UBUNTU_12,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      13,
                      0,
                      highest_patch_level="3.13.0-35.62~precise1"),
         KernelWindow(UBUNTU_14,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      13,
                      0,
                      highest_patch_level="3.13.0-35.62"),
         KernelWindow(UBUNTU_GENERIC, BASE_VULNERABLE, 0, 0, 0, 3, 11, 0),
         KernelWindow(DEBIAN_8,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      14,
                      7,
                      highest_patch_level="3.14.7-1"),
         KernelWindow(DEBIAN_GENERIC, BASE_VULNERABLE, 0, 0, 0, 3, 14, 7),
     ]
     self.exploit_kernels = []
     self.playground_path = playground_path
     self.exploit_source_file_name = "{}.c".format(self.name)
     self.source_c_path = os.path.join(self.playground_path,
                                       self.exploit_source_file_name)
     self.compilation_path = os.path.join(self.playground_path, self.name)
     self.compilation_command = "gcc -o {} {}".format(
         self.compilation_path, self.source_c_path)
     self.exploit_command = self.compilation_path
     self.exploit_source = """
Пример #12
0
 def test_write_exploit_source(self):
     test_exploit = LinuxExploit()
     test_exploit.write_exploit_source()
     print("randomstring {}".format(test_exploit.source_c_path))
     self.assertTrue(os.path.exists(test_exploit.source_c_path))
     # remove it so it's not in the project
     if os.path.exists(test_exploit.source_c_path):
         os.remove(test_exploit.source_c_path)
Пример #13
0
 def exploit(self):
     # should stabilize exploit
     stabilization_command = "echo 0 > /proc/sys/vm/dirty_writeback_centisecs"
     color_print(("\t[*] stabilizing exploit:\n\t\t`{}`".format(
         stabilization_command)))
     self.shell_results(stabilization_command)
     # call super-class exploit
     LinuxExploit.exploit(self)
Пример #14
0
 def __init__(self, playground_path=PLAYGROUND_PATH):
     LinuxExploit.__init__(self)
     self.name = "CVE20041235"
     self.formatted_name = "CVE-2004-1235"
     self.e_type = "linux"
     self.brief_desc = "Linux Kernel 2.4.29-rc2 - 'uselib()' Local Privilege Escalation"
     self.reliability = MEDIUM_RELIABILITY
     self.vulnerable_base = KernelWindow(GENERIC_LINUX, BASE_VULNERABLE, 0,
                                         0, 0, 2, 4, 29)
     self.vulnerable_kernels = [
         KernelWindow(GENERIC_LINUX, VERSION_VULNERABLE, 0, 0, 0, 2, 4, 29),
         KernelWindow(UBUNTU_GENERIC, BASE_VULNERABLE, 0, 0, 0, 2, 6, 8),
         KernelWindow(DEBIAN_GENERIC, BASE_VULNERABLE, 0, 0, 0, 2, 4, 19)
     ]
     self.exploit_kernels = [
         KernelWindow(UBUNTU_4,
                      EXPLOIT_AVAILABLE,
                      0,
                      0,
                      0,
                      2,
                      6,
                      8,
                      highest_patch_level="2.6.8.1-4-686"),
         KernelWindow(DEBIAN_4,
                      EXPLOIT_AVAILABLE,
                      0,
                      0,
                      0,
                      2,
                      4,
                      27,
                      highest_patch_level="2.4.27-8"),
         KernelWindow(DEBIAN_3,
                      EXPLOIT_AVAILABLE,
                      0,
                      0,
                      0,
                      2,
                      4,
                      19,
                      highest_patch_level="2.4.19-4.woody3"),
     ]
     self.architecture = ARCHITECTURE_i686
     self.playground_path = playground_path
     self.exploit_source_file_name = "{}.c".format(self.name)
     self.source_c_path = os.path.join(self.playground_path,
                                       self.exploit_source_file_name)
     self.compilation_path = os.path.join(self.playground_path, self.name)
     self.compilation_command = "gcc -o {} {} -O2 -fomit-frame-pointer".format(
         self.compilation_path, self.source_c_path)
     self.exploit_command = self.compilation_path
     self.exploit_source = """
Пример #15
0
	def __init__(self, playground_path=PLAYGROUND_PATH):
		LinuxExploit.__init__(self)
		self.name = "CVE201716996"
		self.formatted_name = "CVE-2017-16996"
		self.e_type = "linux"
		self.brief_desc = "eBPF Verifier check_alu_op() Sign Extension Local Root Exploit"
		self.reliability = HIGH_RELIABILITY
		self.vulnerable_base = KernelWindow(GENERIC_LINUX, BASE_VULNERABLE, 4, 0, 0, 4, 14, 8)
		self.playground_path = playground_path
		self.exploit_source_file_name = "{}.c".format(self.name)
		self.source_c_path = os.path.join(self.playground_path, self.exploit_source_file_name)
		self.compilation_path = os.path.join(self.playground_path, self.name)
		self.compilation_command = "gcc -o {} {}".format(self.compilation_path, self.source_c_path)
		self.exploit_command = self.compilation_path
		self.exploit_source = """
Пример #16
0
	def __init__(self, playground_path=PLAYGROUND_PATH):
		LinuxExploit.__init__(self)
		self.name = "CVE20030961"
		self.formatted_name = "CVE-2003-0961"
		self.e_type = "linux"
		self.brief_desc = "Linux Kernel 2.4.22 - 'do_brk()' Local Privilege Escalation"
		self.reliability = MEDIUM_RELIABILITY
		self.vulnerable_base = KernelWindow(GENERIC_LINUX, BASE_VULNERABLE, 0, 0, 0, 2, 4, 22)
		self.vulnerable_kernels = [
			KernelWindow(GENERIC_LINUX, BASE_VULNERABLE, 0, 0, 0, 2, 4, 22),
		]
		self.architecture = ARCHITECTURE_i686
		self.playground_path = playground_path
		self.exploit_source_file_name = "{}.c".format(self.name)
		self.source_c_path = os.path.join(self.playground_path, self.exploit_source_file_name)
		self.compilation_path = os.path.join(self.playground_path, self.name)
		self.compilation_command = "gcc -o {} {}".format(self.compilation_path, self.source_c_path)
		self.exploit_command = self.compilation_path
		self.exploit_source = """
Пример #17
0
 def __init__(self, playground_path=PLAYGROUND_PATH):
     LinuxExploit.__init__(self)
     self.name = "CVE20050736"
     self.formatted_name = "CVE-2005-0736"
     self.e_type = "linux"
     self.brief_desc = "Integer overflow in sys_epoll_wait in eventpoll.c"
     self.reliability = MEDIUM_RELIABILITY
     self.vulnerable_base = KernelWindow(GENERIC_LINUX, BASE_VULNERABLE, 0,
                                         0, 0, 2, 6, 11)
     self.vulnerable_kernels = [
         KernelWindow(RHEL,
                      VERSION_VULNERABLE,
                      2,
                      6,
                      0,
                      2,
                      6,
                      9,
                      highest_patch_level="2.6.9-5.EL"),
     ]
     self.exploit_kernels = [
         KernelWindow(RHEL,
                      EXPLOIT_AVAILABLE,
                      2,
                      6,
                      0,
                      2,
                      6,
                      9,
                      highest_patch_level="2.6.9-5.EL"),
     ]
     self.architecture = ARCHITECTURE_i686
     self.playground_path = playground_path
     self.exploit_source_file_name = "{}.c".format(self.name)
     self.source_c_path = os.path.join(self.playground_path,
                                       self.exploit_source_file_name)
     self.compilation_path = os.path.join(self.playground_path, self.name)
     self.compilation_command = "gcc -o {} {} -static -O2".format(
         self.compilation_path, self.source_c_path)
     self.exploit_command = self.compilation_path
     self.exploit_source = """
Пример #18
0
 def __init__(self, playground_path=PLAYGROUND_PATH):
     LinuxExploit.__init__(self)
     self.name = "CVE20171000367"
     self.formatted_name = "CVE-2017-1000367"
     self.e_type = "linux"
     self.brief_desc = "sudo get_process_ttyname() root priv esc"
     self.reliability = HIGH_RELIABILITY
     self.vulnerable_base = KernelWindow(GENERIC_LINUX, BASE_VULNERABLE, 0,
                                         0, 0, 4, 20, 0)
     self.architecture = ARCHITECTURE_i686
     self.playground_path = playground_path
     self.vulnerable_kernels = []
     self.exploit_kernels = []
     self.playground_path = playground_path
     self.exploit_source_file_name = "{}.c".format(self.name)
     self.source_c_path = os.path.join(self.playground_path,
                                       self.exploit_source_file_name)
     self.compilation_path = os.path.join(self.playground_path, self.name)
     self.compilation_command = "gcc -o {} {}".format(
         self.compilation_path, self.source_c_path)
     self.exploit_command = self.compilation_path
     self.exploit_source = """
Пример #19
0
 def __init__(self, playground_path=PLAYGROUND_PATH):
     LinuxExploit.__init__(self)
     self.name = "CVE20091185"
     self.formatted_name = "CVE-2009-1185"
     self.e_type = "linux"
     self.brief_desc = "udev before 1.4.1 NETLINK user space priv esc"
     self.reliability = MEDIUM_RELIABILITY
     self.vulnerable_base = KernelWindow(GENERIC_LINUX, BASE_VULNERABLE, 0,
                                         0, 0, 2, 6, 27)
     self.vulnerable_kernels = [
         KernelWindow(GENERIC_LINUX, BASE_VULNERABLE, 0, 0, 0, 2, 6, 27),
     ]
     self.exploit_kernels = []
     self.playground_path = playground_path
     self.exploit_source_file_name = "{}.c".format(self.name)
     self.source_c_path = os.path.join(self.playground_path,
                                       self.exploit_source_file_name)
     self.compilation_path = os.path.join(self.playground_path, self.name)
     self.compilation_command = "gcc -o {} {}".format(
         self.compilation_path, self.source_c_path)
     self.exploit_command = self.compilation_path
     self.exploit_source = """
Пример #20
0
 def __init__(self, playground_path=PLAYGROUND_PATH):
     LinuxExploit.__init__(self)
     self.name = "CVE20104347"
     self.formatted_name = "CVE-2010-4347"
     self.e_type = "linux"
     self.brief_desc = "american-sign-language ACPI LID root exploit"
     self.reliability = MEDIUM_RELIABILITY
     self.vulnerable_base = KernelWindow(GENERIC_LINUX, BASE_VULNERABLE, 0,
                                         0, 0, 2, 6, 36)
     self.vulnerable_kernels = [
         KernelWindow(GENERIC_LINUX, BASE_VULNERABLE, 0, 0, 0, 2, 6, 36),
     ]
     self.exploit_kernels = []
     self.architecture = ARCHITECTURE_x86_64
     self.playground_path = playground_path
     self.exploit_source_file_name = "{}.c".format(self.name)
     self.source_c_path = os.path.join(self.playground_path,
                                       self.exploit_source_file_name)
     self.compilation_path = os.path.join(self.playground_path, self.name)
     self.compilation_command = "gcc -o {} {}".format(
         self.compilation_path, self.source_c_path)
     self.exploit_command = self.compilation_path
     self.exploit_source = """
Пример #21
0
 def __init__(self, playground_path=PLAYGROUND_PATH):
     LinuxExploit.__init__(self)
     self.name = "CVE20173630"
     self.formatted_name = "CVE-2017-3630"
     self.e_type = "linux"
     self.brief_desc = "Stack clash vuln in solaris"
     self.reliability = HIGH_RELIABILITY
     self.vulnerable_base = KernelWindow(GENERIC_LINUX, BASE_VULNERABLE, 0,
                                         0, 0, 4, 8, 3)
     self.vulnerable_kernels = [
         KernelWindow(SOLARIS, VERSION_VULNERABLE, 0, 0, 0, 4, 8, 3)
     ]
     self.exploit_kernels = [
         KernelWindow(SOLARIS, EXPLOIT_AVAILABLE, 0, 0, 0, 4, 8, 3)
     ]
     self.playground_path = playground_path
     self.exploit_source_file_name = "{}.c".format(self.name)
     self.source_c_path = os.path.join(self.playground_path,
                                       self.exploit_source_file_name)
     self.compilation_path = os.path.join(self.playground_path, self.name)
     self.compilation_command = "gcc -o {} {}".format(
         self.compilation_path, self.source_c_path)
     self.exploit_command = self.compilation_path
     self.exploit_source = """
Пример #22
0
 def test_compile_exploit_source(self):
     test_exploit = LinuxExploit()
     test_exploit.write_exploit_source()
     test_exploit.exploit_compile()
     self.assertTrue(os.path.exists(test_exploit.compilation_path))
     # remove files so they're not in the project
     if os.path.exists(test_exploit.source_c_path):
         os.remove(test_exploit.source_c_path)
     if os.path.exists(test_exploit.compilation_path):
         os.remove(test_exploit.compilation_path)
Пример #23
0
 def __init__(self, playground_path=PLAYGROUND_PATH):
     LinuxExploit.__init__(self)
     self.name = "CVE20102959"
     self.formatted_name = "CVE-2010-2959"
     self.e_type = "linux"
     self.brief_desc = "Integer overflow in CAN subsystem"
     self.reliability = MEDIUM_RELIABILITY
     self.vulnerable_base = KernelWindow(GENERIC_LINUX, BASE_VULNERABLE, 0,
                                         0, 0, 2, 35, 4)
     self.vulnerable_kernels = [
         KernelWindow(DEBIAN_5,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      2,
                      6,
                      26,
                      highest_patch_level="2.6.26-1um-2+24lenny1"
                      ),  # 2.6.26-1um-2+24lenny1
         KernelWindow(FEDORA,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      2,
                      6,
                      32,
                      highest_patch_level="2.6.32.21-166.fc12"
                      ),  # Fedora 12 2.6.32.21-166.fc12
         KernelWindow(SUSE,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      2,
                      6,
                      34,
                      highest_patch_level="2.6.34.7-0.2.2"),
         KernelWindow(UBUNTU_10,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      2,
                      6,
                      31,
                      highest_patch_level="2.6.31-608.19"),
         KernelWindow(UBUNTU_9,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      2,
                      6,
                      31,
                      highest_patch_level="2.6.31-214.30"),
         KernelWindow(UBUNTU_9,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      2,
                      6,
                      28,
                      highest_patch_level="2.6.28-19.64"),
         KernelWindow(UBUNTU_8,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      2,
                      6,
                      24,
                      highest_patch_level="2.6.24-28.75"),
         KernelWindow(UBUNTU_GENERIC, BASE_VULNERABLE, 0, 0, 0, 2, 6, 24),
         KernelWindow(UBUNTU_6,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      2,
                      6,
                      15,
                      highest_patch_level="2.6.15-55.87"),
         KernelWindow(DEBIAN_5,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      2,
                      6,
                      26,
                      highest_patch_level="2.6.26-24lenny1"),
         KernelWindow(DEBIAN_6,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      2,
                      6,
                      32,
                      highest_patch_level="2.6.32-20"),
         KernelWindow(DEBIAN_GENERIC, BASE_VULNERABLE, 0, 0, 0, 2, 6, 32)
     ]
     self.exploit_kernels = [
         KernelWindow(UBUNTU_10,
                      EXPLOIT_AVAILABLE,
                      0,
                      0,
                      0,
                      2,
                      6,
                      31,
                      highest_patch_level="2.6.31-608.19"),
     ]
     self.architecture = ARCHITECTURE_i686
     self.playground_path = playground_path
     self.exploit_source_file_name = "{}.c".format(self.name)
     self.source_c_path = os.path.join(self.playground_path,
                                       self.exploit_source_file_name)
     self.compilation_path = os.path.join(self.playground_path, self.name)
     self.compilation_command = "gcc -o {} {}".format(
         self.compilation_path, self.source_c_path)
     self.exploit_command = self.compilation_path
     self.exploit_source = """
Пример #24
0
 def __init__(self, playground_path=PLAYGROUND_PATH):
     LinuxExploit.__init__(self)
     self.name = "CVE20143153"
     self.formatted_name = "CVE-2014-3153"
     self.e_type = "linux"
     self.brief_desc = "`futex_requeue` vulnerability before 3.14.6 allows for priv esc"
     self.reliability = HIGH_RELIABILITY
     self.vulnerable_base = KernelWindow(GENERIC_LINUX, BASE_VULNERABLE, 0,
                                         0, 0, 3, 14, 16)
     self.vulnerable_kernels = [
         KernelWindow(SUSE, VERSION_VULNERABLE, 0, 0, 0, 3, 0, 100),
         KernelWindow(UBUNTU_10,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      2,
                      6,
                      32,
                      highest_patch_level="2.6.32-61.124"),
         KernelWindow(UBUNTU_12,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      2,
                      0,
                      highest_patch_level="3.2.0-64.97"),
         KernelWindow(UBUNTU_14,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      13,
                      0,
                      highest_patch_level="3.13.0-29.53"),
         KernelWindow(UBUNTU_13,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      11,
                      0,
                      highest_patch_level="3.11.0-23.40"),
         KernelWindow(UBUNTU_GENERIC, BASE_VULNERABLE, 0, 0, 0, 3, 2, 0),
         KernelWindow(DEBIAN_8,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      14,
                      5,
                      highest_patch_level="3.14.5-1"),
         KernelWindow(DEBIAN_7,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      2,
                      57,
                      highest_patch_level="3.2.57-3+deb7u2"),
         KernelWindow(DEBIAN_6,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      2,
                      6,
                      32,
                      highest_patch_level="2.6.32-48squeeze7"),
         KernelWindow(DEBIAN_GENERIC, BASE_VULNERABLE, 0, 0, 0, 2, 6, 32),
         KernelWindow(RHEL, VERSION_VULNERABLE, 0, 0, 0,
                      KERNEL_MAJOR_VERSION_CAP + 1, 0, 0)
     ]
     self.exploit_kernels = [
         KernelWindow(RHEL, EXPLOIT_AVAILABLE, 0, 0, 0,
                      KERNEL_MAJOR_VERSION_CAP + 1, 0, 0)
     ]
     self.playground_path = playground_path
     self.exploit_source_file_name = "{}.c".format(self.name)
     self.source_c_path = os.path.join(self.playground_path,
                                       self.exploit_source_file_name)
     self.compilation_path = os.path.join(self.playground_path, self.name)
     self.compilation_command = "gcc -o {} {} -lpthread".format(
         self.compilation_path, self.source_c_path)
     self.exploit_command = self.compilation_path
     self.exploit_source = """
Пример #25
0
 def __init__(self, playground_path=PLAYGROUND_PATH):
     LinuxExploit.__init__(self)
     self.name = "CVE20165195_32"
     self.formatted_name = "CVE-2016-5195 (x86)"
     self.e_type = "linux"
     self.brief_desc = "Dirty COW race condition root priv esc for 32 bit"
     self.reliability = HIGH_RELIABILITY
     self.vulnerable_base = KernelWindow(GENERIC_LINUX, BASE_VULNERABLE, 2,
                                         0, 0, 4, 8, 3)
     self.vulnerable_kernels = [
         KernelWindow(UBUNTU_16,
                      VERSION_VULNERABLE,
                      2,
                      0,
                      0,
                      4,
                      8,
                      0,
                      highest_patch_level="4.8.0-26.28"),
         KernelWindow(UBUNTU_16,
                      VERSION_VULNERABLE,
                      2,
                      0,
                      0,
                      4,
                      4,
                      0,
                      highest_patch_level="4.4.0-45.66"),
         KernelWindow(UBUNTU_14,
                      VERSION_VULNERABLE,
                      2,
                      0,
                      0,
                      3,
                      13,
                      0,
                      highest_patch_level="3.13.0-100.147"),
         KernelWindow(UBUNTU_12,
                      VERSION_VULNERABLE,
                      2,
                      0,
                      0,
                      3,
                      2,
                      0,
                      highest_patch_level="3.2.0-113.155"),
         KernelWindow(UBUNTU_GENERIC, BASE_VULNERABLE, 0, 0, 0, 3, 2, 0),
         KernelWindow(DEBIAN_9,
                      VERSION_VULNERABLE,
                      2,
                      0,
                      0,
                      4,
                      7,
                      8,
                      highest_patch_level="4.7.8-1"),
         KernelWindow(DEBIAN_8,
                      VERSION_VULNERABLE,
                      2,
                      0,
                      0,
                      3,
                      16,
                      36,
                      highest_patch_level="3.16.36-1+deb8u2"),
         KernelWindow(DEBIAN_7,
                      VERSION_VULNERABLE,
                      2,
                      0,
                      0,
                      3,
                      2,
                      82,
                      highest_patch_level="3.2.82-1"),
         KernelWindow(DEBIAN_GENERIC, BASE_VULNERABLE, 0, 0, 0, 3, 2, 82),
     ]
     self.exploit_kernels = [
         KernelWindow(UBUNTU_16,
                      EXPLOIT_AVAILABLE,
                      2,
                      0,
                      0,
                      4,
                      8,
                      0,
                      highest_patch_level="4.8.0-26.28"),
         KernelWindow(UBUNTU_16,
                      EXPLOIT_AVAILABLE,
                      2,
                      0,
                      0,
                      4,
                      4,
                      0,
                      highest_patch_level="4.4.0-45.66"),
         KernelWindow(UBUNTU_14,
                      EXPLOIT_AVAILABLE,
                      2,
                      0,
                      0,
                      3,
                      13,
                      0,
                      highest_patch_level="3.13.0-100.147"),
         KernelWindow(UBUNTU_12,
                      EXPLOIT_AVAILABLE,
                      2,
                      0,
                      0,
                      3,
                      2,
                      0,
                      highest_patch_level="3.2.0-113.155"),
         KernelWindow(DEBIAN_9,
                      EXPLOIT_AVAILABLE,
                      2,
                      0,
                      0,
                      4,
                      7,
                      8,
                      highest_patch_level="4.7.8-1"),
         KernelWindow(DEBIAN_8,
                      EXPLOIT_AVAILABLE,
                      2,
                      0,
                      0,
                      3,
                      16,
                      36,
                      highest_patch_level="3.16.36-1+deb8u2"),
         KernelWindow(DEBIAN_7,
                      EXPLOIT_AVAILABLE,
                      2,
                      0,
                      0,
                      3,
                      2,
                      82,
                      highest_patch_level="3.2.82-1"),
     ]
     self.architecture = ARCHITECTURE_i686
     self.playground_path = playground_path
     self.exploit_source_file_name = "{}.c".format(self.name)
     self.source_c_path = os.path.join(self.playground_path,
                                       self.exploit_source_file_name)
     self.compilation_path = os.path.join(self.playground_path, self.name)
     self.compilation_command = "gcc {} -o {} -pthread".format(
         self.source_c_path, self.compilation_path)
     self.exploit_command = self.compilation_path
     self.exploit_source = """
Пример #26
0
 def __init__(self, playground_path=PLAYGROUND_PATH):
     LinuxExploit.__init__(self)
     self.name = "CVE20162384"
     self.formatted_name = "CVE-2016-2384"
     self.e_type = "linux"
     self.brief_desc = "Double free vulnerability in the `snd_usbmidi_create` (requires physical proximity)"
     self.reliability = LOW_RELIABILITY
     self.vulnerable_base = KernelWindow(GENERIC_LINUX, BASE_VULNERABLE, 0,
                                         0, 0, 4, 5, 0)
     self.vulnerable_kernels = [
         KernelWindow(UBUNTU_15,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      4,
                      2,
                      0,
                      highest_patch_level="4.2.0-34.39"),
         KernelWindow(UBUNTU_14,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      13,
                      0,
                      highest_patch_level="3.13.0-83.127"),
         KernelWindow(UBUNTU_12,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      2,
                      0,
                      highest_patch_level="3.2.0-101.141"),
         KernelWindow(UBUNTU_GENERIC, BASE_VULNERABLE, 0, 0, 0, 3, 2, 0),
         KernelWindow(DEBIAN_9,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      4,
                      4,
                      2,
                      highest_patch_level="4.4.2-1"),
         KernelWindow(DEBIAN_8,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      16,
                      7,
                      highest_patch_level="3.16.7-ckt20-1+deb8u4"),
         KernelWindow(DEBIAN_7,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      2,
                      73,
                      highest_patch_level="3.2.73-2+deb7u3"),
         KernelWindow(DEBIAN_6,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      2,
                      6,
                      32,
                      highest_patch_level="2.6.32-48squeeze20"),
         KernelWindow(DEBIAN_GENERIC, BASE_VULNERABLE, 0, 0, 0, 2, 6, 32),
     ]
     self.exploit_kernels = []
     self.playground_path = playground_path
     self.exploit_source_file_name = "{}.c".format(self.name)
     self.source_c_path = os.path.join(self.playground_path,
                                       self.exploit_source_file_name)
     self.compilation_path = os.path.join(self.playground_path, self.name)
     self.compilation_command = "gcc -o {} {} -masm=intel".format(
         self.compilation_path, self.source_c_path)
     self.exploit_command = self.compilation_path
     self.exploit_source = """
Пример #27
0
 def __init__(self, playground_path=PLAYGROUND_PATH):
     LinuxExploit.__init__(self)
     self.name = "CVE20140196"
     self.formatted_name = "CVE-2014-0196"
     self.e_type = "linux"
     self.brief_desc = "`n_tty_write` vuln before 3.14.4 allows priv esc to root"
     self.reliability = LOW_RELIABILITY
     self.vulnerable_base = KernelWindow(GENERIC_LINUX, BASE_VULNERABLE, 2,
                                         6, 31, 3, 14, 4)
     self.vulnerable_kernels = [
         KernelWindow(RHEL, VERSION_VULNERABLE, 0, 0, 0, 2, 6, 32),
         KernelWindow(UBUNTU_10,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      2,
                      6,
                      32,
                      highest_patch_level="2.6.32-58.121"),
         KernelWindow(UBUNTU_12,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      2,
                      0,
                      highest_patch_level="3.2.0-61.93"),
         KernelWindow(UBUNTU_12,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      5,
                      0,
                      highest_patch_level="3.5.0-49.74"),
         KernelWindow(UBUNTU_13,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      11,
                      0,
                      highest_patch_level="3.11.0-20.35"),
         KernelWindow(UBUNTU_14,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      13,
                      0,
                      highest_patch_level="3.13.0-24.47"),
         KernelWindow(UBUNTU_GENERIC, BASE_VULNERABLE, 0, 0, 0, 3, 2, 0),
         KernelWindow(DEBIAN_8,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      14,
                      4,
                      highest_patch_level="3.14.4-1"),
         KernelWindow(DEBIAN_7,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      2,
                      57,
                      highest_patch_level="3.2.57-3+deb7u1"),
         KernelWindow(DEBIAN_6,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      2,
                      6,
                      32,
                      highest_patch_level="2.6.32-48squeeze6"),
         KernelWindow(DEBIAN_GENERIC, BASE_VULNERABLE, 0, 0, 0, 2, 6, 32)
     ]
     self.exploit_kernels = []
     self.playground_path = playground_path
     self.exploit_source_file_name = "{}.c".format(self.name)
     self.source_c_path = os.path.join(self.playground_path,
                                       self.exploit_source_file_name)
     self.compilation_path = os.path.join(self.playground_path, self.name)
     self.compilation_command = "gcc -o {} {} -lutil -lpthread".format(
         self.compilation_path, self.source_c_path)
     self.exploit_command = self.compilation_path
     self.exploit_source = """
Пример #28
0
 def __init__(self, playground_path=PLAYGROUND_PATH):
     LinuxExploit.__init__(self)
     self.name = "CVE20160728"
     self.formatted_name = "CVE-2016-0728"
     self.e_type = "linux"
     self.brief_desc = "`join_session_keyring` function can be abused to get root NOTE: (takes about 30 minutes)"
     self.reliability = MEDIUM_RELIABILITY
     self.vulnerable_base = KernelWindow(GENERIC_LINUX, BASE_VULNERABLE, 3,
                                         8, 0, 4, 4, 1)
     self.vulnerable_kernels = [
         KernelWindow(UBUNTU_15,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      4,
                      2,
                      0,
                      highest_patch_level="4.2.0-25.30"),
         KernelWindow(UBUNTU_15,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      19,
                      0,
                      highest_patch_level="3.19.0-47.53"),
         KernelWindow(UBUNTU_14,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      13,
                      0,
                      highest_patch_level="3.13.0-76.120"),
         KernelWindow(UBUNTU_12,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      13,
                      0,
                      highest_patch_level="3.13.0-76.120~precise1"),
         KernelWindow(UBUNTU_GENERIC, BASE_VULNERABLE, 0, 0, 0, 3, 13, 0),
         KernelWindow(DEBIAN_9,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      4,
                      3,
                      3,
                      highest_patch_level="4.3.3-6"),
         KernelWindow(DEBIAN_8,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      16,
                      7,
                      highest_patch_level="3.16.7-ckt20-1+deb8u3"),
         KernelWindow(DEBIAN_GENERIC, BASE_VULNERABLE, 0, 0, 0, 3, 16, 7),
     ]
     self.exploit_kernels = [
         KernelWindow(UBUNTU_15,
                      EXPLOIT_AVAILABLE,
                      0,
                      0,
                      0,
                      4,
                      2,
                      0,
                      highest_patch_level="4.2.0-25.30"),
         KernelWindow(UBUNTU_15,
                      EXPLOIT_AVAILABLE,
                      0,
                      0,
                      0,
                      3,
                      19,
                      0,
                      highest_patch_level="3.19.0-47.53"),
         KernelWindow(UBUNTU_14,
                      EXPLOIT_AVAILABLE,
                      0,
                      0,
                      0,
                      3,
                      13,
                      0,
                      highest_patch_level="3.13.0-76.120"),
         KernelWindow(UBUNTU_12,
                      EXPLOIT_AVAILABLE,
                      0,
                      0,
                      0,
                      3,
                      13,
                      0,
                      highest_patch_level="3.13.0-76.120~precise1"),
         KernelWindow(DEBIAN_9,
                      EXPLOIT_AVAILABLE,
                      0,
                      0,
                      0,
                      4,
                      3,
                      3,
                      highest_patch_level="4.3.3-6"),
         KernelWindow(DEBIAN_8,
                      EXPLOIT_AVAILABLE,
                      0,
                      0,
                      0,
                      3,
                      16,
                      7,
                      highest_patch_level="3.16.7-ckt20-1+deb8u3"),
     ]
     self.architecture = ARCHITECTURE_x86_64
     self.playground_path = playground_path
     self.exploit_source_file_name = "{}.c".format(self.name)
     self.source_c_path = os.path.join(self.playground_path,
                                       self.exploit_source_file_name)
     self.compilation_path = os.path.join(self.playground_path, self.name)
     self.compilation_command = "apt-get libkeyutils-dev; gcc -o {} {} -lkeyutils -Wall".format(
         self.compilation_path, self.source_c_path)
     self.exploit_command = "{} {}".format(self.compilation_path, "PP_KEY")
     self.exploit_source = """
Пример #29
0
 def __init__(self, playground_path=PLAYGROUND_PATH):
     LinuxExploit.__init__(self)
     self.name = "CVE20151328_32"
     self.formatted_name = "CVE-2015-1328 (32 bit)"
     self.e_type = "linux"
     self.brief_desc = "overlayfs implementation in linux kernel does not properly check file-create permissions"
     self.reliability = HIGH_RELIABILITY
     self.vulnerable_base = KernelWindow(GENERIC_LINUX, BASE_VULNERABLE, 0,
                                         0, 0, 3, 19, 0)
     self.vulnerable_kernels = [
         KernelWindow(UBUNTU_12,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      2,
                      0,
                      highest_patch_level="3.2.0-86.123"),
         KernelWindow(UBUNTU_14,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      13,
                      0,
                      highest_patch_level="3.13.0-55.92"),
         KernelWindow(UBUNTU_14,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      16,
                      0,
                      highest_patch_level="3.16.0-41.55"),
         KernelWindow(UBUNTU_15,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      19,
                      0,
                      highest_patch_level="3.19.0-21.21"),
         KernelWindow(UBUNTU_GENERIC, BASE_VULNERABLE, 0, 0, 0, 3, 2, 0),
     ]
     self.exploit_kernels = [
         KernelWindow(UBUNTU_12,
                      EXPLOIT_AVAILABLE,
                      0,
                      0,
                      0,
                      3,
                      2,
                      0,
                      highest_patch_level="3.2.0-86.123"),
         KernelWindow(UBUNTU_14,
                      EXPLOIT_AVAILABLE,
                      0,
                      0,
                      0,
                      3,
                      13,
                      0,
                      highest_patch_level="3.13.0-55.92"),
         KernelWindow(UBUNTU_14,
                      EXPLOIT_AVAILABLE,
                      0,
                      0,
                      0,
                      3,
                      16,
                      0,
                      highest_patch_level="3.16.0-41.55"),
         KernelWindow(UBUNTU_15,
                      EXPLOIT_AVAILABLE,
                      0,
                      0,
                      0,
                      3,
                      19,
                      0,
                      highest_patch_level="3.19.0-21.21"),
     ]
     self.architecture = ARCHITECTURE_i686
     self.playground_path = playground_path
     self.exploit_source_file_name = "{}.c".format(self.name)
     self.source_c_path = os.path.join(self.playground_path,
                                       self.exploit_source_file_name)
     self.compilation_path = os.path.join(self.playground_path, self.name)
     self.compilation_command = "gcc -o {} {}".format(
         self.compilation_path, self.source_c_path)
     self.exploit_command = self.compilation_path
     self.exploit_source = """
Пример #30
0
 def __init__(self, playground_path=PLAYGROUND_PATH):
     LinuxExploit.__init__(self)
     self.name = "CVE20171000112"
     self.formatted_name = "CVE-2017-1000112"
     self.e_type = "linux"
     self.brief_desc = "ip_ufo_append_data() memory corruption flaw can be exploited to gain root privileges."
     self.reliability = HIGH_RELIABILITY
     self.vulnerable_base = KernelWindow(GENERIC_LINUX, BASE_VULNERABLE, 0,
                                         0, 0, 4, 8, 0)
     self.vulnerable_kernels = [
         KernelWindow(UBUNTU_17,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      4,
                      10,
                      0,
                      highest_patch_level="4.10.0-32.36"),
         KernelWindow(UBUNTU_16,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      4,
                      4,
                      0,
                      highest_patch_level="4.4.0-91.114"),
         KernelWindow(UBUNTU_14,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      13,
                      0,
                      highest_patch_level="3.13.0-128.177"),
         KernelWindow(UBUNTU_GENERIC, BASE_VULNERABLE, 0, 0, 0, 3, 13, 0),
         KernelWindow(DEBIAN_9,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      4,
                      9,
                      30,
                      highest_patch_level="4.9.30-2+deb9u5"),
         KernelWindow(DEBIAN_8,
                      VERSION_VULNERABLE,
                      0,
                      0,
                      0,
                      3,
                      16,
                      43,
                      highest_patch_level="3.16.43-2+deb8u5"),
         KernelWindow(DEBIAN_GENERIC, BASE_VULNERABLE, 0, 0, 0, 3, 16, 43),
     ]
     self.exploit_kernels = [
         KernelWindow(UBUNTU_14, EXPLOIT_AVAILABLE, 0, 0, 0, 4, 4, 0),
         KernelWindow(UBUNTU_16, EXPLOIT_AVAILABLE, 0, 0, 0, 4, 8, 0),
     ]
     self.playground_path = playground_path
     self.exploit_source_file_name = "{}.c".format(self.name)
     self.source_c_path = os.path.join(self.playground_path,
                                       self.exploit_source_file_name)
     self.compilation_path = os.path.join(self.playground_path, self.name)
     self.compilation_command = "gcc -o {} {}".format(
         self.compilation_path, self.source_c_path)
     self.exploit_command = self.compilation_path
     self.exploit_source = """