les.sh
#!/bin/bash
Copyright (c) 2016-2019, mzet
linux-exploit-suggester.sh comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under the terms of the GNU General Public License. See LICENSE
file for usage of this software.
VERSION=v1.0
bash colors
#txtred="\e[0;31m" txtred="\e[91;1m" txtgrn="\e[1;32m" txtgray="\e[0;37m" txtblu="\e[0;36m" txtrst="\e[0m" bldwht='\e[1;37m' wht='\e[0;36m' bldblu='\e[1;34m' yellow='\e[1;93m' lightyellow='\e[0;93m'
input data
UNAME_A=""
parsed data for current OS
KERNEL="" OS="" DISTRO="" ARCH="" PKG_LIST=""
kernel config
KCONFIG=""
CVELIST_FILE=""
opt_fetch_bins=false opt_fetch_srcs=false opt_kernel_version=false opt_uname_string=false opt_pkglist_file=false opt_cvelist_file=false opt_checksec_mode=false opt_full=false opt_summary=false opt_kernel_only=false opt_userspace_only=false opt_show_dos=false opt_skip_more_checks=false opt_skip_pkg_versions=false
ARGS= SHORTOPTS="hVfbsu:k:dp:g" LONGOPTS="help,version,full,fetch-binaries,fetch-sources,uname:,kernel:,show-dos,pkglist-file:,short,kernelspace-only,userspace-only,skip-more-checks,skip-pkg-versions,cvelist-file:,checksec"
exploits database
declare -a EXPLOITS declare -a EXPLOITS_USERSPACE
temporary array for purpose of sorting exploits (based on exploits' rank)
declare -a exploits_to_sort declare -a SORTED_EXPLOITS
############ LINUX KERNELSPACE EXPLOITS #################### n=0
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2004-1235]${txtrst} elflbl Reqs: pkg=linux-kernel,ver=2.4.29 Tags: Rank: 1 analysis-url: http://isec.pl/vulnerabilities/isec-0021-uselib.txt bin-url: https://web.archive.org/web/20111103042904/http://tarantula.by.ru/localroot/2.6.x/elflbl exploit-db: 744 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2004-1235]${txtrst} uselib() Reqs: pkg=linux-kernel,ver=2.4.29 Tags: Rank: 1 analysis-url: http://isec.pl/vulnerabilities/isec-0021-uselib.txt exploit-db: 778 Comments: Known to work only for 2.4 series (even though 2.6 is also vulnerable) EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2004-1235]${txtrst} krad3 Reqs: pkg=linux-kernel,ver>=2.6.5,ver<=2.6.11 Tags: Rank: 1 exploit-db: 1397 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2004-0077]${txtrst} mremap_pte Reqs: pkg=linux-kernel,ver>=2.6.0,ver<=2.6.2 Tags: Rank: 1 exploit-db: 160 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2006-2451]${txtrst} raptor_prctl Reqs: pkg=linux-kernel,ver>=2.6.13,ver<=2.6.17 Tags: Rank: 1 exploit-db: 2031 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2006-2451]${txtrst} prctl Reqs: pkg=linux-kernel,ver>=2.6.13,ver<=2.6.17 Tags: Rank: 1 exploit-db: 2004 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2006-2451]${txtrst} prctl2 Reqs: pkg=linux-kernel,ver>=2.6.13,ver<=2.6.17 Tags: Rank: 1 exploit-db: 2005 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2006-2451]${txtrst} prctl3 Reqs: pkg=linux-kernel,ver>=2.6.13,ver<=2.6.17 Tags: Rank: 1 exploit-db: 2006 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2006-2451]${txtrst} prctl4 Reqs: pkg=linux-kernel,ver>=2.6.13,ver<=2.6.17 Tags: Rank: 1 exploit-db: 2011 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2006-3626]${txtrst} h00lyshit Reqs: pkg=linux-kernel,ver>=2.6.8,ver<=2.6.16 Tags: Rank: 1 bin-url: https://web.archive.org/web/20111103042904/http://tarantula.by.ru/localroot/2.6.x/h00lyshit exploit-db: 2013 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2008-0600]${txtrst} vmsplice1 Reqs: pkg=linux-kernel,ver>=2.6.17,ver<=2.6.24 Tags: Rank: 1 exploit-db: 5092 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2008-0600]${txtrst} vmsplice2 Reqs: pkg=linux-kernel,ver>=2.6.23,ver<=2.6.24 Tags: Rank: 1 exploit-db: 5093 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2008-4210]${txtrst} ftrex Reqs: pkg=linux-kernel,ver>=2.6.11,ver<=2.6.22 Tags: Rank: 1 exploit-db: 6851 Comments: world-writable sgid directory and shell that does not drop sgid privs upon exec (ash/sash) are required EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2008-4210]${txtrst} exit_notify Reqs: pkg=linux-kernel,ver>=2.6.25,ver<=2.6.29 Tags: Rank: 1 exploit-db: 8369 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2009-2692]${txtrst} sock_sendpage (simple version) Reqs: pkg=linux-kernel,ver>=2.6.0,ver<=2.6.30 Tags: ubuntu=7.10,RHEL=4,fedora=4|5|6|7|8|9|10|11 Rank: 1 exploit-db: 9479 Comments: Works for systems with /proc/sys/vm/mmap_min_addr equal to 0 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2009-2692,CVE-2009-1895]${txtrst} sock_sendpage Reqs: pkg=linux-kernel,ver>=2.6.0,ver<=2.6.30 Tags: ubuntu=9.04 Rank: 1 analysis-url: https://xorl.wordpress.com/2009/07/16/cve-2009-1895-linux-kernel-per_clear_on_setid-personality-bypass/ src-url: https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/bin-sploits/9435.tgz exploit-db: 9435 Comments: /proc/sys/vm/mmap_min_addr needs to equal 0 OR pulseaudio needs to be installed EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2009-2692,CVE-2009-1895]${txtrst} sock_sendpage2 Reqs: pkg=linux-kernel,ver>=2.6.0,ver<=2.6.30 Tags: Rank: 1 src-url: https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/bin-sploits/9436.tgz exploit-db: 9436 Comments: Works for systems with /proc/sys/vm/mmap_min_addr equal to 0 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2009-2692,CVE-2009-1895]${txtrst} sock_sendpage3 Reqs: pkg=linux-kernel,ver>=2.6.0,ver<=2.6.30 Tags: Rank: 1 src-url: https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/bin-sploits/9641.tar.gz exploit-db: 9641 Comments: /proc/sys/vm/mmap_min_addr needs to equal 0 OR pulseaudio needs to be installed EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2009-2692,CVE-2009-1895]${txtrst} sock_sendpage (ppc) Reqs: pkg=linux-kernel,ver>=2.6.0,ver<=2.6.30 Tags: ubuntu=8.10,RHEL=4|5 Rank: 1 exploit-db: 9545 Comments: /proc/sys/vm/mmap_min_addr needs to equal 0 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2009-2698]${txtrst} udp_sendmsg (by spender) Reqs: pkg=linux-kernel,ver>=2.6.1,ver<=2.6.19 Tags: Rank: 1 src-url: https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/bin-sploits/9574.tgz exploit-db: 9574 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2009-2698]${txtrst} udp_sendmsg Reqs: pkg=linux-kernel,ver>=2.6.1,ver<=2.6.19 Tags: debian=4 Rank: 1 exploit-db: 9575 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2009-2698]${txtrst} ip_append_data Reqs: pkg=linux-kernel,ver>=2.6.1,ver<=2.6.19,x86 Tags: fedora=4|5|6,RHEL=4 Rank: 1 exploit-db: 9542 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2009-3547]${txtrst} pipe.c 1 Reqs: pkg=linux-kernel,ver>=2.6.0,ver<=2.6.31 Tags: Rank: 1 exploit-db: 33321 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2009-3547]${txtrst} pipe.c 2 Reqs: pkg=linux-kernel,ver>=2.6.0,ver<=2.6.31 Tags: Rank: 1 exploit-db: 33322 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2009-3547]${txtrst} pipe.c 3 Reqs: pkg=linux-kernel,ver>=2.6.0,ver<=2.6.31 Tags: Rank: 1 exploit-db: 10018 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2010-3301]${txtrst} ptrace_kmod2 Reqs: pkg=linux-kernel,ver>=2.6.26,ver<=2.6.34 Tags: debian=6.0{kernel:2.6.(32|33|34|35)-(1|2|trunk)-amd64},ubuntu=(10.04|10.10){kernel:2.6.(32|35)-(19|21|24)-server} Rank: 1 bin-url: https://web.archive.org/web/20111103042904/http://tarantula.by.ru/localroot/2.6.x/kmod2 bin-url: https://web.archive.org/web/20111103042904/http://tarantula.by.ru/localroot/2.6.x/ptrace-kmod bin-url: https://web.archive.org/web/20160602192641/https://www.kernel-exploits.com/media/ptrace_kmod2-64 exploit-db: 15023 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2010-1146]${txtrst} reiserfs Reqs: pkg=linux-kernel,ver>=2.6.18,ver<=2.6.34 Tags: ubuntu=9.10 Rank: 1 exploit-db: 12130 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2010-2959]${txtrst} can_bcm Reqs: pkg=linux-kernel,ver>=2.6.18,ver<=2.6.36 Tags: ubuntu=10.04{kernel:2.6.32-24-generic} Rank: 1 bin-url: https://web.archive.org/web/20160602192641/https://www.kernel-exploits.com/media/can_bcm exploit-db: 14814 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2010-3904]${txtrst} rds Reqs: pkg=linux-kernel,ver>=2.6.30,ver<2.6.37 Tags: debian=6.0{kernel:2.6.(31|32|34|35)-(1|trunk)-amd64},ubuntu=10.10|9.10,fedora=13{kernel:2.6.33.3-85.fc13.i686.PAE},ubuntu=10.04{kernel:2.6.32-(21|24)-generic} Rank: 1 analysis-url: http://www.securityfocus.com/archive/1/514379 src-url: http://web.archive.org/web/20101020044048/http://www.vsecurity.com/download/tools/linux-rds-exploit.c bin-url: https://web.archive.org/web/20160602192641/https://www.kernel-exploits.com/media/rds bin-url: https://web.archive.org/web/20160602192641/https://www.kernel-exploits.com/media/rds64 exploit-db: 15285 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2010-3848,CVE-2010-3850,CVE-2010-4073]${txtrst} half_nelson Reqs: pkg=linux-kernel,ver>=2.6.0,ver<=2.6.36 Tags: ubuntu=(10.04|9.10){kernel:2.6.(31|32)-(14|21)-server} Rank: 1 bin-url: http://web.archive.org/web/20160602192631/https://www.kernel-exploits.com/media/half-nelson3 exploit-db: 17787 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[N/A]${txtrst} caps_to_root Reqs: pkg=linux-kernel,ver>=2.6.34,ver<=2.6.36,x86 Tags: ubuntu=10.10 Rank: 1 exploit-db: 15916 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[N/A]${txtrst} caps_to_root 2 Reqs: pkg=linux-kernel,ver>=2.6.34,ver<=2.6.36 Tags: ubuntu=10.10 Rank: 1 exploit-db: 15944 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2010-4347]${txtrst} american-sign-language Reqs: pkg=linux-kernel,ver>=2.6.0,ver<=2.6.36 Tags: Rank: 1 exploit-db: 15774 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2010-3437]${txtrst} pktcdvd Reqs: pkg=linux-kernel,ver>=2.6.0,ver<=2.6.36 Tags: ubuntu=10.04 Rank: 1 exploit-db: 15150 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2010-3081]${txtrst} video4linux Reqs: pkg=linux-kernel,ver>=2.6.0,ver<=2.6.33 Tags: RHEL=5 Rank: 1 exploit-db: 15024 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2012-0056]${txtrst} memodipper Reqs: pkg=linux-kernel,ver>=3.0.0,ver<=3.1.0 Tags: ubuntu=(10.04|11.10){kernel:3.0.0-12-(generic|server)} Rank: 1 analysis-url: https://git.zx2c4.com/CVE-2012-0056/about/ src-url: https://git.zx2c4.com/CVE-2012-0056/plain/mempodipper.c bin-url: https://web.archive.org/web/20160602192631/https://www.kernel-exploits.com/media/memodipper bin-url: https://web.archive.org/web/20160602192631/https://www.kernel-exploits.com/media/memodipper64 exploit-db: 18411 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2012-0056,CVE-2010-3849,CVE-2010-3850]${txtrst} full-nelson Reqs: pkg=linux-kernel,ver>=2.6.0,ver<=2.6.36 Tags: ubuntu=(9.10|10.10){kernel:2.6.(31|35)-(14|19)-(server|generic)},ubuntu=10.04{kernel:2.6.32-(21|24)-server} Rank: 1 src-url: http://vulnfactory.org/exploits/full-nelson.c bin-url: https://web.archive.org/web/20160602192631/https://www.kernel-exploits.com/media/full-nelson bin-url: https://web.archive.org/web/20160602192631/https://www.kernel-exploits.com/media/full-nelson64 exploit-db: 15704 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2013-1858]${txtrst} CLONE_NEWUSER|CLONE_FS Reqs: pkg=linux-kernel,ver=3.8,CONFIG_USER_NS=y Tags: Rank: 1 src-url: http://stealth.openwall.net/xSports/clown-newuser.c analysis-url: https://lwn.net/Articles/543273/ exploit-db: 38390 author: Sebastian Krahmer Comments: CONFIG_USER_NS needs to be enabled EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2013-2094]${txtrst} perf_swevent Reqs: pkg=linux-kernel,ver>=2.6.32,ver<3.8.9,x86_64 Tags: RHEL=6,ubuntu=12.04{kernel:3.2.0-(23|29)-generic},fedora=16{kernel:3.1.0-7.fc16.x86_64},fedora=17{kernel:3.3.4-5.fc17.x86_64},debian=7{kernel:3.2.0-4-amd64} Rank: 1 analysis-url: http://timetobleed.com/a-closer-look-at-a-recent-privilege-escalation-bug-in-linux-cve-2013-2094/ bin-url: https://web.archive.org/web/20160602192631/https://www.kernel-exploits.com/media/perf_swevent bin-url: https://web.archive.org/web/20160602192631/https://www.kernel-exploits.com/media/perf_swevent64 exploit-db: 26131 author: Andrea 'sorbo' Bittau Comments: No SMEP/SMAP bypass EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2013-2094]${txtrst} perf_swevent 2 Reqs: pkg=linux-kernel,ver>=2.6.32,ver<3.8.9,x86_64 Tags: ubuntu=12.04{kernel:3.(2|5).0-(23|29)-generic} Rank: 1 analysis-url: http://timetobleed.com/a-closer-look-at-a-recent-privilege-escalation-bug-in-linux-cve-2013-2094/ src-url: https://cyseclabs.com/exploits/vnik_v1.c exploit-db: 33589 author: Vitaly 'vnik' Nikolenko Comments: No SMEP/SMAP bypass EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2013-0268]${txtrst} msr Reqs: pkg=linux-kernel,ver>=2.6.18,ver<3.7.6 Tags: Rank: 1 exploit-db: 27297 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2013-1959]${txtrst} userns_root_sploit Reqs: pkg=linux-kernel,ver>=3.0.1,ver<3.8.9 Tags: Rank: 1 analysis-url: http://www.openwall.com/lists/oss-security/2013/04/29/1 exploit-db: 25450 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2013-2094]${txtrst} semtex Reqs: pkg=linux-kernel,ver>=2.6.32,ver<3.8.9 Tags: RHEL=6 Rank: 1 analysis-url: http://timetobleed.com/a-closer-look-at-a-recent-privilege-escalation-bug-in-linux-cve-2013-2094/ exploit-db: 25444 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2014-0038]${txtrst} timeoutpwn Reqs: pkg=linux-kernel,ver>=3.4.0,ver<=3.13.1,CONFIG_X86_X32=y Tags: ubuntu=13.10 Rank: 1 analysis-url: http://blog.includesecurity.com/2014/03/exploit-CVE-2014-0038-x32-recvmmsg-kernel-vulnerablity.html bin-url: https://web.archive.org/web/20160602192631/https://www.kernel-exploits.com/media/timeoutpwn64 exploit-db: 31346 Comments: CONFIG_X86_X32 needs to be enabled EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2014-0038]${txtrst} timeoutpwn 2 Reqs: pkg=linux-kernel,ver>=3.4.0,ver<=3.13.1,CONFIG_X86_X32=y Tags: ubuntu=(13.04|13.10){kernel:3.(8|11).0-(12|15|19)-generic} Rank: 1 analysis-url: http://blog.includesecurity.com/2014/03/exploit-CVE-2014-0038-x32-recvmmsg-kernel-vulnerablity.html exploit-db: 31347 Comments: CONFIG_X86_X32 needs to be enabled EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2014-0196]${txtrst} rawmodePTY Reqs: pkg=linux-kernel,ver>=2.6.31,ver<=3.14.3 Tags: Rank: 1 analysis-url: http://blog.includesecurity.com/2014/06/exploit-walkthrough-cve-2014-0196-pty-kernel-race-condition.html exploit-db: 33516 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2014-2851]${txtrst} use-after-free in ping_init_sock() ${bldblu}(DoS)${txtrst} Reqs: pkg=linux-kernel,ver>=3.0.1,ver<=3.14 Tags: Rank: 0 analysis-url: https://cyseclabs.com/page?n=02012016 exploit-db: 32926 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2014-4014]${txtrst} inode_capable Reqs: pkg=linux-kernel,ver>=3.0.1,ver<=3.13 Tags: ubuntu=12.04 Rank: 1 analysis-url: http://www.openwall.com/lists/oss-security/2014/06/10/4 exploit-db: 33824 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2014-4699]${txtrst} ptrace/sysret Reqs: pkg=linux-kernel,ver>=3.0.1,ver<=3.8 Tags: ubuntu=12.04 Rank: 1 analysis-url: http://www.openwall.com/lists/oss-security/2014/07/08/16 exploit-db: 34134 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2014-4943]${txtrst} PPPoL2TP ${bldblu}(DoS)${txtrst} Reqs: pkg=linux-kernel,ver>=3.2,ver<=3.15.6 Tags: Rank: 1 analysis-url: https://cyseclabs.com/page?n=01102015 exploit-db: 36267 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2014-5207]${txtrst} fuse_suid Reqs: pkg=linux-kernel,ver>=3.0.1,ver<=3.16.1 Tags: Rank: 1 exploit-db: 34923 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2015-9322]${txtrst} BadIRET Reqs: pkg=linux-kernel,ver>=3.0.1,ver<3.17.5,x86_64 Tags: RHEL<=7,fedora=20 Rank: 1 analysis-url: http://labs.bromium.com/2015/02/02/exploiting-badiret-vulnerability-cve-2014-9322-linux-kernel-privilege-escalation/ src-url: http://site.pi3.com.pl/exp/p_cve-2014-9322.tar.gz exploit-db: author: Rafal 'n3rgal' Wojtczuk & Adam 'pi3' Zabrocki EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2015-3290]${txtrst} espfix64_NMI Reqs: pkg=linux-kernel,ver>=3.13,ver<4.1.6,x86_64 Tags: Rank: 1 analysis-url: http://www.openwall.com/lists/oss-security/2015/08/04/8 exploit-db: 37722 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[N/A]${txtrst} bluetooth Reqs: pkg=linux-kernel,ver<=2.6.11 Tags: Rank: 1 exploit-db: 4756 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2015-1328]${txtrst} overlayfs Reqs: pkg=linux-kernel,ver>=3.13.0,ver<=3.19.0 Tags: ubuntu=(12.04|14.04){kernel:3.13.0-(2|3|4|5)-generic},ubuntu=(14.10|15.04){kernel:3.(13|16).0--generic} Rank: 1 analysis-url: http://seclists.org/oss-sec/2015/q2/717 bin-url: https://web.archive.org/web/20160602192631/https://www.kernel-exploits.com/media/ofs_32 bin-url: https://web.archive.org/web/20160602192631/https://www.kernel-exploits.com/media/ofs_64 exploit-db: 37292 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2015-8660]${txtrst} overlayfs (ovl_setattr) Reqs: pkg=linux-kernel,ver>=3.0.0,ver<=4.3.3 Tags: Rank: 1 analysis-url: http://www.halfdog.net/Security/2015/UserNamespaceOverlayfsSetuidWriteExec/ exploit-db: 39230 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2015-8660]${txtrst} overlayfs (ovl_setattr) Reqs: pkg=linux-kernel,ver>=3.0.0,ver<=4.3.3 Tags: ubuntu=(14.04|15.10){kernel:4.2.0-(18|19|20|21|22)-generic} Rank: 1 analysis-url: http://www.halfdog.net/Security/2015/UserNamespaceOverlayfsSetuidWriteExec/ exploit-db: 39166 EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2016-0728]${txtrst} keyring Reqs: pkg=linux-kernel,ver>=3.10,ver<4.4.1 Tags: Rank: 0 analysis-url: http://perception-point.io/2016/01/14/analysis-and-exploitation-of-a-linux-kernel-vulnerability-cve-2016-0728/ exploit-db: 40003 Comments: Exploit takes about ~30 minutes to run. Exploit is not reliable, see: https://cyseclabs.com/blog/cve-2016-0728-poc-not-working EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2016-2384]${txtrst} usb-midi Reqs: pkg=linux-kernel,ver>=3.0.0,ver<=4.4.8 Tags: ubuntu=14.04,fedora=22 Rank: 1 analysis-url: https://xairy.github.io/blog/2016/cve-2016-2384 src-url: https://raw.githubusercontent.com/xairy/kernel-exploits/master/CVE-2016-2384/poc.c exploit-db: 41999 Comments: Requires ability to plug in a malicious USB device and to execute a malicious binary as a non-privileged user author: Andrey 'xairy' Konovalov EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2016-4997]${txtrst} target_offset Reqs: pkg=linux-kernel,ver>=4.4.0,ver<=4.4.0,cmd:grep -qi ip_tables /proc/modules Tags: ubuntu=16.04{kernel:4.4.0-21-generic} Rank: 1 src-url: https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/bin-sploits/40053.zip Comments: ip_tables.ko needs to be loaded exploit-db: 40049 author: Vitaly 'vnik' Nikolenko EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2016-4557]${txtrst} double-fdput() Reqs: pkg=linux-kernel,ver>=4.4,ver<4.5.5,CONFIG_BPF_SYSCALL=y,sysctl:kernel.unprivileged_bpf_disabled!=1 Tags: ubuntu=16.04{kernel:4.4.0-(21|38|42|98|140)-generic} Rank: 1 analysis-url: https://bugs.chromium.org/p/project-zero/issues/detail?id=808 src-url: https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/bin-sploits/39772.zip Comments: CONFIG_BPF_SYSCALL needs to be set && kernel.unprivileged_bpf_disabled != 1 exploit-db: 40759 author: Jann Horn EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2016-5195]${txtrst} dirtycow Reqs: pkg=linux-kernel,ver>=2.6.22,ver<=4.8.3 Tags: debian=7|8,RHEL=5{kernel:2.6.(18|24|33)-},RHEL=6{kernel:2.6.32-|3.(0|2|6|8|10).|2.6.33.9-rt31},RHEL=7{kernel:3.10.0-|4.2.0-0.21.el7},ubuntu=16.04|14.04|12.04 Rank: 4 analysis-url: https://github.com/dirtycow/dirtycow.github.io/wiki/VulnerabilityDetails Comments: For RHEL/CentOS see exact vulnerable versions here: https://access.redhat.com/sites/default/files/rh-cve-2016-5195_5.sh exploit-db: 40611 author: Phil Oester EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2016-5195]${txtrst} dirtycow 2 Reqs: pkg=linux-kernel,ver>=2.6.22,ver<=4.8.3 Tags: debian=7|8,RHEL=5|6|7,ubuntu=14.04|12.04,ubuntu=10.04{kernel:2.6.32-21-generic},ubuntu=16.04{kernel:4.4.0-21-generic} Rank: 4 analysis-url: https://github.com/dirtycow/dirtycow.github.io/wiki/VulnerabilityDetails ext-url: https://www.exploit-db.com/download/40847.cpp Comments: For RHEL/CentOS see exact vulnerable versions here: https://access.redhat.com/sites/default/files/rh-cve-2016-5195_5.sh exploit-db: 40839 author: FireFart (author of exploit at EDB 40839); Gabriele Bonacini (author of exploit at 'ext-url') EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2016-8655]${txtrst} chocobo_root Reqs: pkg=linux-kernel,ver>=4.4.0,ver<4.9,CONFIG_USER_NS=y,sysctl:kernel.unprivileged_userns_clone==1 Tags: ubuntu=(14.04|16.04){kernel:4.4.0-(21|22|24|28|31|34|36|38|42|43|45|47|51)-generic} Rank: 1 analysis-url: http://www.openwall.com/lists/oss-security/2016/12/06/1 Comments: CAP_NET_RAW capability is needed OR CONFIG_USER_NS=y needs to be enabled bin-url: https://raw.githubusercontent.com/rapid7/metasploit-framework/master/data/exploits/CVE-2016-8655/chocobo_root exploit-db: 40871 author: rebel EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2016-9793]${txtrst} SO_{SND|RCV}BUFFORCE Reqs: pkg=linux-kernel,ver>=3.11,ver<4.8.14,CONFIG_USER_NS=y,sysctl:kernel.unprivileged_userns_clone==1 Tags: Rank: 1 analysis-url: https://github.com/xairy/kernel-exploits/tree/master/CVE-2016-9793 src-url: https://raw.githubusercontent.com/xairy/kernel-exploits/master/CVE-2016-9793/poc.c Comments: CAP_NET_ADMIN caps OR CONFIG_USER_NS=y needed. No SMEP/SMAP/KASLR bypass included. Tested in QEMU only exploit-db: 41995 author: Andrey 'xairy' Konovalov EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2017-6074]${txtrst} dccp Reqs: pkg=linux-kernel,ver>=2.6.18,ver<=4.9.11,CONFIG_IP_DCCP=[my] Tags: ubuntu=(14.04|16.04){kernel:4.4.0-62-generic} Rank: 1 analysis-url: http://www.openwall.com/lists/oss-security/2017/02/22/3 Comments: Requires Kernel be built with CONFIG_IP_DCCP enabled. Includes partial SMEP/SMAP bypass exploit-db: 41458 author: Andrey 'xairy' Konovalov EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2017-7308]${txtrst} af_packet Reqs: pkg=linux-kernel,ver>=3.2,ver<=4.10.6,CONFIG_USER_NS=y,sysctl:kernel.unprivileged_userns_clone==1 Tags: ubuntu=16.04{kernel:4.8.0-(34|36|39|41|42|44|45)-generic} Rank: 1 analysis-url: https://googleprojectzero.blogspot.com/2017/05/exploiting-linux-kernel-via-packet.html src-url: https://raw.githubusercontent.com/xairy/kernel-exploits/master/CVE-2017-7308/poc.c ext-url: https://raw.githubusercontent.com/bcoles/kernel-exploits/master/CVE-2017-7308/poc.c Comments: CAP_NET_RAW cap or CONFIG_USER_NS=y needed. Modified version at 'ext-url' adds support for additional kernels bin-url: https://raw.githubusercontent.com/rapid7/metasploit-framework/master/data/exploits/cve-2017-7308/exploit exploit-db: 41994 author: Andrey 'xairy' Konovalov (orginal exploit author); Brendan Coles (author of exploit update at 'ext-url') EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2017-16995]${txtrst} eBPF_verifier Reqs: pkg=linux-kernel,ver>=4.4,ver<=4.14.8,CONFIG_BPF_SYSCALL=y,sysctl:kernel.unprivileged_bpf_disabled!=1 Tags: debian=9.0{kernel:4.9.0-3-amd64},fedora=25|26|27,ubuntu=14.04{kernel:4.4.0-89-generic},ubuntu=(16.04|17.04){kernel:4.(8|10).0-(19|28|45)-generic} Rank: 5 analysis-url: https://ricklarabee.blogspot.com/2018/07/ebpf-and-analysis-of-get-rekt-linux.html Comments: CONFIG_BPF_SYSCALL needs to be set && kernel.unprivileged_bpf_disabled != 1 bin-url: https://raw.githubusercontent.com/rapid7/metasploit-framework/master/data/exploits/cve-2017-16995/exploit.out exploit-db: 45010 author: Rick Larabee EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2017-1000112]${txtrst} NETIF_F_UFO Reqs: pkg=linux-kernel,ver>=4.4,ver<=4.13,CONFIG_USER_NS=y,sysctl:kernel.unprivileged_userns_clone==1 Tags: ubuntu=14.04{kernel:4.4.0-},ubuntu=16.04{kernel:4.8.0-} Rank: 1 analysis-url: http://www.openwall.com/lists/oss-security/2017/08/13/1 src-url: https://raw.githubusercontent.com/xairy/kernel-exploits/master/CVE-2017-1000112/poc.c ext-url: https://raw.githubusercontent.com/bcoles/kernel-exploits/master/CVE-2017-1000112/poc.c Comments: CAP_NET_ADMIN cap or CONFIG_USER_NS=y needed. SMEP/KASLR bypass included. Modified version at 'ext-url' adds support for additional distros/kernels bin-url: https://raw.githubusercontent.com/rapid7/metasploit-framework/master/data/exploits/cve-2017-1000112/exploit.out exploit-db: author: Andrey 'xairy' Konovalov (orginal exploit author); Brendan Coles (author of exploit update at 'ext-url') EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2017-1000253]${txtrst} PIE_stack_corruption Reqs: pkg=linux-kernel,ver>=3.2,ver<=4.13,x86_64 Tags: RHEL=6,RHEL=7{kernel:3.10.0-514.21.2|3.10.0-514.26.1} Rank: 1 analysis-url: https://www.qualys.com/2017/09/26/linux-pie-cve-2017-1000253/cve-2017-1000253.txt src-url: https://www.qualys.com/2017/09/26/linux-pie-cve-2017-1000253/cve-2017-1000253.c exploit-db: 42887 author: Qualys Comments: EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2018-5333]${txtrst} rds_atomic_free_op NULL pointer dereference Reqs: pkg=linux-kernel,ver=4.4.0,cmd:grep -qi rds /proc/modules,x86_64 Tags: ubuntu=16.04{kernel:4.4.0-(112|116)-generic} Rank: 1 src-url: https://gist.githubusercontent.com/wbowling/9d32492bd96d9e7c3bf52e23a0ac30a4/raw/959325819c78248a6437102bb289bb8578a135cd/cve-2018-5333-poc.c ext-url: https://raw.githubusercontent.com/bcoles/kernel-exploits/master/CVE-2018-5333/cve-2018-5333.c Comments: rds.ko kernel module needs to be loaded. Modified version at 'ext-url' adds support for additional targets and bypassing KASLR. author: wbowling (orginal exploit author); bcoles (author of exploit update at 'ext-url') EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2018-18955]${txtrst} subuid_shell Reqs: pkg=linux-kernel,ver>=4.15,ver<=4.19.2,CONFIG_USER_NS=y,sysctl:kernel.unprivileged_userns_clone==1,cmd:[ -u /usr/bin/newuidmap ],cmd:[ -u /usr/bin/newgidmap ] Tags: ubuntu=18.04{kernel:4.15.0-20-generic},fedora=28{kernel:4.16.3-301.fc28} Rank: 1 analysis-url: https://bugs.chromium.org/p/project-zero/issues/detail?id=1712 src-url: https://github.com/offensive-security/exploitdb-bin-sploits/raw/master/bin-sploits/45886.zip exploit-db: 45886 author: Jann Horn Comments: CONFIG_USER_NS needs to be enabled EOF )
EXPLOITS[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2019-13272]${txtrst} PTRACE_TRACEME Reqs: pkg=linux-kernel,ver>=4,ver<5.1.17,sysctl:kernel.yama.ptrace_scope==0,x86_64 Tags: ubuntu=16.04{kernel:4.15.0-},ubuntu=18.04{kernel:4.15.0-},debian=9{kernel:4.9.0-},debian=10{kernel:4.19.0-},fedora=30{kernel:5.0.9-*} Rank: 1 analysis-url: https://bugs.chromium.org/p/project-zero/issues/detail?id=1903 src-url: https://github.com/offensive-security/exploitdb-bin-sploits/raw/master/bin-sploits/47133.zip ext-url: https://raw.githubusercontent.com/bcoles/kernel-exploits/master/CVE-2019-13272/poc.c Comments: Requires an active PolKit agent. exploit-db: 47133 exploit-db: 47163 author: Jann Horn (orginal exploit author); bcoles (author of exploit update at 'ext-url') EOF )
############ USERSPACE EXPLOITS ########################### n=0
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2004-0186]${txtrst} samba Reqs: pkg=samba,ver<=2.2.8 Tags: Rank: 1 exploit-db: 23674 EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2009-1185]${txtrst} udev Reqs: pkg=udev,ver<141,cmd:[[ -f /etc/udev/rules.d/95-udev-late.rules || -f /lib/udev/rules.d/95-udev-late.rules ]] Tags: ubuntu=8.10|9.04 Rank: 1 exploit-db: 8572 Comments: Version<1.4.1 vulnerable but distros use own versioning scheme. Manual verification needed EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2009-1185]${txtrst} udev 2 Reqs: pkg=udev,ver<141 Tags: Rank: 1 exploit-db: 8478 Comments: SSH access to non privileged user is needed. Version<1.4.1 vulnerable but distros use own versioning scheme. Manual verification needed EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2010-0832]${txtrst} PAM MOTD Reqs: pkg=libpam-modules,ver<=1.1.1 Tags: ubuntu=9.10|10.04 Rank: 1 exploit-db: 14339 Comments: SSH access to non privileged user is needed EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2010-4170]${txtrst} SystemTap Reqs: pkg=systemtap,ver<=1.3 Tags: RHEL=5{systemtap:1.1-3.el5},fedora=13{systemtap:1.2-1.fc13} Rank: 1 author: Tavis Ormandy exploit-db: 15620 EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2011-1485]${txtrst} pkexec Reqs: pkg=polkit,ver=0.96 Tags: RHEL=6,ubuntu=10.04|10.10 Rank: 1 exploit-db: 17942 EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2011-2921]${txtrst} ktsuss Reqs: pkg=ktsuss,ver<=1.4 Tags: sparky=5|6 Rank: 1 analysis-url: https://www.openwall.com/lists/oss-security/2011/08/13/2 src-url: https://raw.githubusercontent.com/bcoles/local-exploits/master/CVE-2011-2921/ktsuss-lpe.sh EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2012-0809]${txtrst} death_star (sudo) Reqs: pkg=sudo,ver>=1.8.0,ver<=1.8.3 Tags: fedora=16 Rank: 1 analysis-url: http://seclists.org/fulldisclosure/2012/Jan/att-590/advisory_sudo.txt exploit-db: 18436 EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2014-0476]${txtrst} chkrootkit Reqs: pkg=chkrootkit,ver<0.50 Tags: Rank: 1 analysis-url: http://seclists.org/oss-sec/2014/q2/430 exploit-db: 33899 Comments: Rooting depends on the crontab (up to one day of delay) EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2014-5119]${txtrst} __gconv_translit_find Reqs: pkg=glibc|libc6,x86 Tags: debian=6 Rank: 1 analysis-url: http://googleprojectzero.blogspot.com/2014/08/the-poisoned-nul-byte-2014-edition.html src-url: https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/bin-sploits/34421.tar.gz exploit-db: 34421 EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2015-1862]${txtrst} newpid (abrt) Reqs: pkg=abrt,cmd:grep -qi abrt /proc/sys/kernel/core_pattern Tags: fedora=20 Rank: 1 analysis-url: http://openwall.com/lists/oss-security/2015/04/14/4 src-url: https://gist.githubusercontent.com/taviso/0f02c255c13c5c113406/raw/eafac78dce51329b03bea7167f1271718bee4dcc/newpid.c exploit-db: 36746 EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2015-3315]${txtrst} raceabrt Reqs: pkg=abrt,cmd:grep -qi abrt /proc/sys/kernel/core_pattern Tags: fedora=19{abrt:2.1.5-1.fc19},fedora=20{abrt:2.2.2-2.fc20},fedora=21{abrt:2.3.0-3.fc21},RHEL=7{abrt:2.1.11-12.el7} Rank: 1 analysis-url: http://seclists.org/oss-sec/2015/q2/130 src-url: https://gist.githubusercontent.com/taviso/fe359006836d6cd1091e/raw/32fe8481c434f8cad5bcf8529789231627e5074c/raceabrt.c exploit-db: 36747 author: Tavis Ormandy EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2015-1318]${txtrst} newpid (apport) Reqs: pkg=apport,ver>=2.13,ver<=2.17,cmd:grep -qi apport /proc/sys/kernel/core_pattern Tags: ubuntu=14.04 Rank: 1 analysis-url: http://openwall.com/lists/oss-security/2015/04/14/4 src-url: https://gist.githubusercontent.com/taviso/0f02c255c13c5c113406/raw/eafac78dce51329b03bea7167f1271718bee4dcc/newpid.c exploit-db: 36746 EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2015-1318]${txtrst} newpid (apport) 2 Reqs: pkg=apport,ver>=2.13,ver<=2.17,cmd:grep -qi apport /proc/sys/kernel/core_pattern Tags: ubuntu=14.04.2 Rank: 1 analysis-url: http://openwall.com/lists/oss-security/2015/04/14/4 exploit-db: 36782 EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2015-3202]${txtrst} fuse (fusermount) Reqs: pkg=fuse,ver<2.9.3 Tags: debian=7.0|8.0,ubuntu=* Rank: 1 analysis-url: http://seclists.org/oss-sec/2015/q2/520 exploit-db: 37089 Comments: Needs cron or system admin interaction EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2015-1815]${txtrst} setroubleshoot Reqs: pkg=setroubleshoot,ver<3.2.22 Tags: fedora=21 Rank: 1 exploit-db: 36564 EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2015-3246]${txtrst} userhelper Reqs: pkg=libuser,ver<=0.60 Tags: RHEL=6{libuser:0.56.13-(4|5).el6},RHEL=6{libuser:0.60-5.el7},fedora=13|19|20|21|22 Rank: 1 analysis-url: https://www.qualys.com/2015/07/23/cve-2015-3245-cve-2015-3246/cve-2015-3245-cve-2015-3246.txt exploit-db: 37706 Comments: RHEL 5 is also vulnerable, but installed version of glibc (2.5) lacks functions needed by roothelper.c EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2015-5287]${txtrst} abrt/sosreport-rhel7 Reqs: pkg=abrt,cmd:grep -qi abrt /proc/sys/kernel/core_pattern Tags: RHEL=7{abrt:2.1.11-12.el7} Rank: 1 analysis-url: https://www.openwall.com/lists/oss-security/2015/12/01/1 src-url: https://www.openwall.com/lists/oss-security/2015/12/01/1/1 exploit-db: 38832 author: rebel EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2015-6565]${txtrst} not_an_sshnuke Reqs: pkg=openssh-server,ver>=6.8,ver<=6.9 Tags: Rank: 1 analysis-url: http://www.openwall.com/lists/oss-security/2017/01/26/2 exploit-db: 41173 author: Federico Bento Comments: Needs admin interaction (root user needs to login via ssh to trigger exploitation) EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2015-8612]${txtrst} blueman set_dhcp_handler d-bus privesc Reqs: pkg=blueman,ver<2.0.3 Tags: debian=8{blueman:1.23} Rank: 1 analysis-url: https://twitter.com/thegrugq/status/677809527882813440 exploit-db: 46186 author: Sebastian Krahmer Comments: Distros use own versioning scheme. Manual verification needed. EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2016-1240]${txtrst} tomcat-rootprivesc-deb.sh Reqs: pkg=tomcat Tags: debian=8,ubuntu=16.04 Rank: 1 analysis-url: https://legalhackers.com/advisories/Tomcat-DebPkgs-Root-Privilege-Escalation-Exploit-CVE-2016-1240.html src-url: http://legalhackers.com/exploits/tomcat-rootprivesc-deb.sh exploit-db: 40450 author: Dawid Golunski Comments: Affects only Debian-based distros EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2016-1247]${txtrst} nginxed-root.sh Reqs: pkg=nginx|nginx-full,ver<1.10.3 Tags: debian=8,ubuntu=14.04|16.04|16.10 Rank: 1 analysis-url: https://legalhackers.com/advisories/Nginx-Exploit-Deb-Root-PrivEsc-CVE-2016-1247.html src-url: https://legalhackers.com/exploits/CVE-2016-1247/nginxed-root.sh exploit-db: 40768 author: Dawid Golunski Comments: Rooting depends on cron.daily (up to 24h of delay). Affected: deb8: <1.6.2; 14.04: <1.4.6; 16.04: 1.10.0; gentoo: <1.10.2-r3 EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2016-1531]${txtrst} perl_startup (exim) Reqs: pkg=exim,ver<4.86.2 Tags: Rank: 1 analysis-url: http://www.exim.org/static/doc/CVE-2016-1531.txt exploit-db: 39549 EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2016-1531]${txtrst} perl_startup (exim) 2 Reqs: pkg=exim,ver<4.86.2 Tags: Rank: 1 analysis-url: http://www.exim.org/static/doc/CVE-2016-1531.txt exploit-db: 39535 EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2016-4989]${txtrst} setroubleshoot 2 Reqs: pkg=setroubleshoot Tags: RHEL=6|7 Rank: 1 analysis-url: https://c-skills.blogspot.com/2016/06/lets-feed-attacker-input-to-sh-c-to-see.html src-url: https://github.com/stealth/troubleshooter/raw/master/straight-shooter.c exploit-db: EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2016-5425]${txtrst} tomcat-RH-root.sh Reqs: pkg=tomcat Tags: RHEL=7 Rank: 1 analysis-url: http://legalhackers.com/advisories/Tomcat-RedHat-Pkgs-Root-PrivEsc-Exploit-CVE-2016-5425.html src-url: http://legalhackers.com/exploits/tomcat-RH-root.sh exploit-db: 40488 author: Dawid Golunski Comments: Affects only RedHat-based distros EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2016-6663,CVE-2016-6664|CVE-2016-6662]${txtrst} mysql-exploit-chain Reqs: pkg=mysql-server|mariadb-server,ver<5.5.52 Tags: ubuntu=16.04.1 Rank: 1 analysis-url: https://legalhackers.com/advisories/MySQL-Maria-Percona-PrivEscRace-CVE-2016-6663-5616-Exploit.html src-url: http://legalhackers.com/exploits/CVE-2016-6663/mysql-privesc-race.c exploit-db: 40678 author: Dawid Golunski Comments: Also MariaDB ver<10.1.18 and ver<10.0.28 affected EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2016-9566]${txtrst} nagios-root-privesc Reqs: pkg=nagios,ver<4.2.4 Tags: Rank: 1 analysis-url: https://legalhackers.com/advisories/Nagios-Exploit-Root-PrivEsc-CVE-2016-9566.html src-url: https://legalhackers.com/exploits/CVE-2016-9566/nagios-root-privesc.sh exploit-db: 40921 author: Dawid Golunski Comments: Allows priv escalation from nagios user or nagios group EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2017-0358]${txtrst} ntfs-3g-modprobe Reqs: pkg=ntfs-3g,ver<2017.4 Tags: ubuntu=16.04{ntfs-3g:2015.3.14AR.1-1build1},debian=7.0{ntfs-3g:2012.1.15AR.5-2.1+deb7u2},debian=8.0{ntfs-3g:2014.2.15AR.2-1+deb8u2} Rank: 1 analysis-url: https://bugs.chromium.org/p/project-zero/issues/detail?id=1072 src-url: https://github.com/offensive-security/exploit-database-bin-sploits/raw/master/bin-sploits/41356.zip exploit-db: 41356 author: Jann Horn Comments: Distros use own versioning scheme. Manual verification needed. Linux headers must be installed. System must have at least two CPU cores. EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2017-5899]${txtrst} s-nail-privget Reqs: pkg=s-nail,ver<14.8.16 Tags: ubuntu=16.04,manjaro=16.10 Rank: 1 analysis-url: https://www.openwall.com/lists/oss-security/2017/01/27/7 src-url: https://www.openwall.com/lists/oss-security/2017/01/27/7/1 ext-url: https://raw.githubusercontent.com/bcoles/local-exploits/master/CVE-2017-5899/exploit.sh author: wapiflapi (orginal exploit author); Brendan Coles (author of exploit update at 'ext-url') Comments: Distros use own versioning scheme. Manual verification needed. EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2017-1000367]${txtrst} Sudoer-to-root Reqs: pkg=sudo,ver<=1.8.20,cmd:[ -f /usr/sbin/getenforce ] Tags: RHEL=7{sudo:1.8.6p7} Rank: 1 analysis-url: https://www.sudo.ws/alerts/linux_tty.html src-url: https://www.qualys.com/2017/05/30/cve-2017-1000367/linux_sudo_cve-2017-1000367.c exploit-db: 42183 author: Qualys Comments: Needs to be sudoer. Works only on SELinux enabled systems EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2017-1000367]${txtrst} sudopwn Reqs: pkg=sudo,ver<=1.8.20,cmd:[ -f /usr/sbin/getenforce ] Tags: Rank: 1 analysis-url: https://www.sudo.ws/alerts/linux_tty.html src-url: https://raw.githubusercontent.com/c0d3z3r0/sudo-CVE-2017-1000367/master/sudopwn.c exploit-db: author: c0d3z3r0 Comments: Needs to be sudoer. Works only on SELinux enabled systems EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2017-1000366,CVE-2017-1000370]${txtrst} linux_ldso_hwcap Reqs: pkg=glibc|libc6,ver<=2.25,x86 Tags: Rank: 1 analysis-url: https://www.qualys.com/2017/06/19/stack-clash/stack-clash.txt src-url: https://www.qualys.com/2017/06/19/stack-clash/linux_ldso_hwcap.c exploit-db: 42274 author: Qualys Comments: Uses "Stack Clash" technique, works against most SUID-root binaries EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2017-1000366,CVE-2017-1000371]${txtrst} linux_ldso_dynamic Reqs: pkg=glibc|libc6,ver<=2.25,x86 Tags: debian=9|10,ubuntu=14.04.5|16.04.2|17.04,fedora=23|24|25 Rank: 1 analysis-url: https://www.qualys.com/2017/06/19/stack-clash/stack-clash.txt src-url: https://www.qualys.com/2017/06/19/stack-clash/linux_ldso_dynamic.c exploit-db: 42276 author: Qualys Comments: Uses "Stack Clash" technique, works against most SUID-root PIEs EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2017-1000366,CVE-2017-1000379]${txtrst} linux_ldso_hwcap_64 Reqs: pkg=glibc|libc6,ver<=2.25,x86_64 Tags: debian=7.7|8.5|9.0,ubuntu=14.04.2|16.04.2|17.04,fedora=22|25,centos=7.3.1611 Rank: 1 analysis-url: https://www.qualys.com/2017/06/19/stack-clash/stack-clash.txt src-url: https://www.qualys.com/2017/06/19/stack-clash/linux_ldso_hwcap_64.c exploit-db: 42275 author: Qualys Comments: Uses "Stack Clash" technique, works against most SUID-root binaries EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2017-1000370,CVE-2017-1000371]${txtrst} linux_offset2lib Reqs: pkg=glibc|libc6,ver<=2.25,x86 Tags: Rank: 1 analysis-url: https://www.qualys.com/2017/06/19/stack-clash/stack-clash.txt src-url: https://www.qualys.com/2017/06/19/stack-clash/linux_offset2lib.c exploit-db: 42273 author: Qualys Comments: Uses "Stack Clash" technique EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2018-1000001]${txtrst} RationalLove Reqs: pkg=glibc|libc6,ver<2.27,CONFIG_USER_NS=y,sysctl:kernel.unprivileged_userns_clone==1,x86_64 Tags: debian=9{libc6:2.24-11+deb9u1},ubuntu=16.04.3{libc6:2.23-0ubuntu9} Rank: 1 analysis-url: https://www.halfdog.net/Security/2017/LibcRealpathBufferUnderflow/ src-url: https://www.halfdog.net/Security/2017/LibcRealpathBufferUnderflow/RationalLove.c Comments: kernel.unprivileged_userns_clone=1 required bin-url: https://raw.githubusercontent.com/rapid7/metasploit-framework/master/data/exploits/cve-2018-1000001/RationalLove exploit-db: 43775 author: halfdog EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2018-10900]${txtrst} vpnc_privesc.py Reqs: pkg=networkmanager-vpnc|network-manager-vpnc,ver<1.2.6 Tags: ubuntu=16.04{network-manager-vpnc:1.1.93-1},debian=9.0{network-manager-vpnc:1.2.4-4},manjaro=17 Rank: 1 analysis-url: https://pulsesecurity.co.nz/advisories/NM-VPNC-Privesc src-url: https://bugzilla.novell.com/attachment.cgi?id=779110 exploit-db: 45313 author: Denis Andzakovic Comments: Distros use own versioning scheme. Manual verification needed. EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2018-14665]${txtrst} raptor_xorgy Reqs: pkg=xorg-x11-server-Xorg,cmd:[ -u /usr/bin/Xorg ] Tags: centos=7.4 Rank: 1 analysis-url: https://www.securepatterns.com/2018/10/cve-2018-14665-xorg-x-server.html exploit-db: 45922 author: raptor Comments: X.Org Server before 1.20.3 is vulnerable. Distros use own versioning scheme. Manual verification needed. EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2019-7304]${txtrst} dirty_sock Reqs: pkg=snapd,ver<2.37,cmd:[ -S /run/snapd.socket ] Tags: ubuntu=18.10,mint=19 Rank: 1 analysis-url: https://initblog.com/2019/dirty-sock/ exploit-db: 46361 exploit-db: 46362 src-url: https://github.com/initstring/dirty_sock/archive/master.zip author: InitString Comments: Distros use own versioning scheme. Manual verification needed. EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2019-10149]${txtrst} raptor_exim_wiz Reqs: pkg=exim|exim4,ver>=4.87,ver<=4.91 Tags: Rank: 1 analysis-url: https://www.qualys.com/2019/06/05/cve-2019-10149/return-wizard-rce-exim.txt exploit-db: 46996 author: raptor EOF )
EXPLOITS_USERSPACE[((n++))]=$(cat <<EOF Name: ${txtgrn}[CVE-2019-12181]${txtrst} Serv-U FTP Server Reqs: cmd:[ -u /usr/local/Serv-U/Serv-U ] Tags: debian=9 Rank: 1 analysis-url: https://blog.vastart.dev/2019/06/cve-2019-12181-serv-u-exploit-writeup.html exploit-db: 47009 src-url: https://raw.githubusercontent.com/guywhataguy/CVE-2019-12181/master/servu-pe-cve-2019-12181.c ext-url: https://raw.githubusercontent.com/bcoles/local-exploits/master/CVE-2019-12181/SUroot author: Guy Levin (orginal exploit author); Brendan Coles (author of exploit update at 'ext-url') Comments: Modified version at 'ext-url' uses bash exec technique, rather than compiling with gcc. EOF )
###########################################################
security related HW/kernel features
########################################################### n=0
FEATURES[((n++))]=$(cat <<EOF section: Mainline kernel protection mechanisms: EOF )
FEATURES[((n++))]=$(cat <<EOF feature: Kernel Page Table Isolation (PTI) support available: ver>=4.15 enabled: cmd:grep -Eqi '\spti' /proc/cpuinfo analysis-url: https://github.com/mzet-/les-res/blob/master/features/pti.md EOF )
FEATURES[((n++))]=$(cat <<EOF feature: GCC stack protector support available: CONFIG_HAVE_STACKPROTECTOR=y analysis-url: https://github.com/mzet-/les-res/blob/master/features/stackprotector-regular.md EOF )
FEATURES[((n++))]=$(cat <=3.14 analysis-url: https://github.com/mzet-/les-res/blob/master/features/stackprotector-strong.md EOF )
FEATURES[((n++))]=$(cat <<EOF feature: Low address space to protect from user allocation available: CONFIG_DEFAULT_MMAP_MIN_ADDR=[0-9]+ enabled: sysctl:vm.mmap_min_addr!=0 analysis-url: https://github.com/mzet-/les-res/blob/master/features/mmap_min_addr.md EOF )
FEATURES[((n++))]=$(cat <<EOF feature: Prevent users from using ptrace to examine the memory and state of their processes available: CONFIG_SECURITY_YAMA=y enabled: sysctl:kernel.yama.ptrace_scope!=0 analysis-url: https://github.com/mzet-/les-res/blob/master/features/yama_ptrace_scope.md EOF )
FEATURES[((n++))]=$(cat <=2.6.37 enabled: sysctl:kernel.dmesg_restrict!=0 analysis-url: https://github.com/mzet-/les-res/blob/master/features/dmesg_restrict.md EOF )
FEATURES[((n++))]=$(cat <<EOF feature: Randomize the address of the kernel image (KASLR) available: CONFIG_RANDOMIZE_BASE=y analysis-url: https://github.com/mzet-/les-res/blob/master/features/kaslr.md EOF )
FEATURES[((n++))]=$(cat <<EOF feature: Hardened user copy support available: CONFIG_HARDENED_USERCOPY=y analysis-url: https://github.com/mzet-/les-res/blob/master/features/hardened_usercopy.md EOF )
FEATURES[((n++))]=$(cat <<EOF feature: Make kernel text and rodata read-only available: CONFIG_STRICT_KERNEL_RWX=y analysis-url: https://github.com/mzet-/les-res/blob/master/features/strict_kernel_rwx.md EOF )
FEATURES[((n++))]=$(cat <<EOF feature: Set loadable kernel module data as NX and text as RO available: CONFIG_STRICT_MODULE_RWX=y analysis-url: https://github.com/mzet-/les-res/blob/master/features/strict_module_rwx.md EOF )
FEATURES[((n++))]=$(cat <<EOF feature: BUG() conditions reporting available: CONFIG_BUG=y analysis-url: https://github.com/mzet-/les-res/blob/master/features/bug.md EOF )
FEATURES[((n++))]=$(cat <<EOF feature: Additional 'cred' struct checks available: CONFIG_DEBUG_CREDENTIALS=y analysis-url: https://github.com/mzet-/les-res/blob/master/features/debug_credentials.md EOF )
FEATURES[((n++))]=$(cat <<EOF feature: Sanity checks for notifier call chains available: CONFIG_DEBUG_NOTIFIERS=y analysis-url: https://github.com/mzet-/les-res/blob/master/features/debug_notifiers.md EOF )
FEATURES[((n++))]=$(cat <<EOF feature: Extended checks for linked-lists walking available: CONFIG_DEBUG_LIST=y analysis-url: https://github.com/mzet-/les-res/blob/master/features/debug_list.md EOF )
FEATURES[((n++))]=$(cat <<EOF feature: Checks on scatter-gather tables available: CONFIG_DEBUG_SG=y analysis-url: https://github.com/mzet-/les-res/blob/master/features/debug_sg.md EOF )
FEATURES[((n++))]=$(cat <<EOF feature: Checks for data structure corruptions available: CONFIG_BUG_ON_DATA_CORRUPTION=y analysis-url: https://github.com/mzet-/les-res/blob/master/features/bug_on_data_corruption.md EOF )
FEATURES[((n++))]=$(cat <<EOF feature: Checks for a stack overrun on calls to 'schedule' available: CONFIG_SCHED_STACK_END_CHECK=y analysis-url: https://github.com/mzet-/les-res/blob/master/features/sched_stack_end_check.md EOF )
FEATURES[((n++))]=$(cat <<EOF feature: Freelist order randomization on new pages creation available: CONFIG_SLAB_FREELIST_RANDOM=y analysis-url: https://github.com/mzet-/les-res/blob/master/features/slab_freelist_random.md EOF )
FEATURES[((n++))]=$(cat <<EOF feature: Freelist metadata hardening available: CONFIG_SLAB_FREELIST_HARDENED=y analysis-url: https://github.com/mzet-/les-res/blob/master/features/slab_freelist_hardened.md EOF )
FEATURES[((n++))]=$(cat <<EOF feature: Allocator validation checking available: CONFIG_SLUB_DEBUG_ON=y,cmd:! grep 'slub_debug=-' /proc/cmdline analysis-url: https://github.com/mzet-/les-res/blob/master/features/slub_debug.md EOF )
FEATURES[((n++))]=$(cat <<EOF feature: Virtually-mapped kernel stacks with guard pages available: CONFIG_VMAP_STACK=y analysis-url: https://github.com/mzet-/les-res/blob/master/features/vmap_stack.md EOF )
FEATURES[((n++))]=$(cat <<EOF feature: Pages poisoning after free_pages() call available: CONFIG_PAGE_POISONING=y enabled: cmd: grep 'page_poison=1' /proc/cmdline analysis-url: https://github.com/mzet-/les-res/blob/master/features/page_poisoning.md EOF )
FEATURES[((n++))]=$(cat <<EOF feature: Using 'refcount_t' instead of 'atomic_t' available: CONFIG_REFCOUNT_FULL=y analysis-url: https://github.com/mzet-/les-res/blob/master/features/refcount_full.md EOF )
FEATURES[((n++))]=$(cat <<EOF feature: Hardening common str/mem functions against buffer overflows available: CONFIG_FORTIFY_SOURCE=y analysis-url: https://github.com/mzet-/les-res/blob/master/features/fortify_source.md EOF )
FEATURES[((n++))]=$(cat <<EOF feature: Restrict /dev/mem access available: CONFIG_STRICT_DEVMEM=y analysis-url: https://github.com/mzet-/les-res/blob/master/features/strict_devmem.md EOF )
FEATURES[((n++))]=$(cat <<EOF feature: Restrict I/O access to /dev/mem available: CONFIG_IO_STRICT_DEVMEM=y analysis-url: https://github.com/mzet-/les-res/blob/master/features/io_strict_devmem.md EOF )
FEATURES[((n++))]=$(cat <<EOF section: Hardware-based protection features: EOF )
FEATURES[((n++))]=$(cat <<EOF feature: Supervisor Mode Execution Protection (SMEP) support available: ver>=3.0 enabled: cmd:grep -qi smep /proc/cpuinfo analysis-url: https://github.com/mzet-/les-res/blob/master/features/smep.md EOF )
FEATURES[((n++))]=$(cat <<EOF feature: Supervisor Mode Access Prevention (SMAP) support available: ver>=3.7 enabled: cmd:grep -qi smap /proc/cpuinfo analysis-url: https://github.com/mzet-/les-res/blob/master/features/smap.md EOF )
FEATURES[((n++))]=$(cat <<EOF section: 3rd party kernel protection mechanisms: EOF )
FEATURES[((n++))]=$(cat <<EOF feature: Grsecurity available: CONFIG_GRKERNSEC=y enabled: cmd:test -c /dev/grsec EOF )
FEATURES[((n++))]=$(cat <<EOF feature: PaX available: CONFIG_PAX=y enabled: cmd:test -x /sbin/paxctl EOF )
FEATURES[((n++))]=$(cat <<EOF feature: Linux Kernel Runtime Guard (LKRG) kernel module enabled: cmd:test -d /proc/sys/lkrg analysis-url: https://github.com/mzet-/les-res/blob/master/features/lkrg.md EOF )
FEATURES[((n++))]=$(cat <<EOF section: Attack Surface: EOF )
FEATURES[((n++))]=$(cat <<EOF feature: User namespaces for unprivileged accounts available: CONFIG_USER_NS=y enabled: sysctl:kernel.unprivileged_userns_clone==1 analysis-url: https://github.com/mzet-/les-res/blob/master/features/user_ns.md EOF )
FEATURES[((n++))]=$(cat <<EOF feature: Unprivileged access to bpf() system call available: CONFIG_BPF_SYSCALL=y enabled: sysctl:kernel.unprivileged_bpf_disabled!=1 analysis-url: https://github.com/mzet-/les-res/blob/master/features/bpf_syscall.md EOF )
FEATURES[((n++))]=$(cat <<EOF feature: Syscalls filtering available: CONFIG_SECCOMP=y enabled: cmd:grep -i Seccomp /proc/self/status | awk '{print $2}' analysis-url: https://github.com/mzet-/les-res/blob/master/features/bpf_syscall.md EOF )
FEATURES[((n++))]=$(cat <<EOF feature: Support for /dev/mem access available: CONFIG_DEVMEM=y analysis-url: https://github.com/mzet-/les-res/blob/master/features/devmem.md EOF )
FEATURES[((n++))]=$(cat <<EOF feature: Support for /dev/kmem access available: CONFIG_DEVKMEM=y analysis-url: https://github.com/mzet-/les-res/blob/master/features/devkmem.md EOF )
version() { echo "linux-exploit-suggester "$VERSION", mzet, https://z-labs.eu, March 2019" }
usage() { echo "Usage: linux-exploit-suggester.sh [OPTIONS]" echo echo " -V | --version - print version of this script" echo " -h | --help - print this help" echo " -k | --kernel - provide kernel version" echo " -u | --uname - provide 'uname -a' string" echo " --skip-more-checks - do not perform additional checks (kernel config, sysctl) to determine if exploit is applicable" echo " --skip-pkg-versions - skip checking for exact userspace package version (helps to avoid false negatives)" echo " -p | --pkglist-file - provide file with 'dpkg -l' or 'rpm -qa' command output" echo " --cvelist-file - provide file with Linux kernel CVEs list" echo " --checksec - list security related features for your HW/kernel" echo " -s | --fetch-sources - automatically downloads source for matched exploit" echo " -b | --fetch-binaries - automatically downloads binary for matched exploit if available" echo " -f | --full - show full info about matched exploit" echo " -g | --short - show shorten info about matched exploit" echo " --kernelspace-only - show only kernel vulnerabilities" echo " --userspace-only - show only userspace vulnerabilities" echo " -d | --show-dos - show also DoSes in results" }
exitWithErrMsg() { echo "$1" 1>&2 exit 1 }
extracts all information from output of 'uname -a' command
parseUname() { local uname=$1
}
getPkgList() { local distro=$1 local pkglist_file=$2
}
from: https://stackoverflow.com/questions/4023830/how-compare-two-strings-in-dot-separated-version-format-in-bash
verComparision() {
}
doVersionComparision() { local reqVersion="$1" local reqRelation="$2" local currentVersion="$3"
}
compareValues() { curVal=$1 val=$2 sign=$3
}
checkRequirement() { #echo "Checking requirement: $1" local IN="$1" local pkgName="${2:4}"
}
getKernelConfig() {
}
checksecMode() {
for FEATURE in "${FEATURES[@]}"; do
done
}
displayExposure() { RANK=$1
}
parse command line parameters
ARGS=$(getopt --options $SHORTOPTS --longoptions $LONGOPTS -- "$@") [ $? != 0 ] && exitWithErrMsg "Aborting."
eval set -- "$ARGS"
while true; do case "$1" in -u|--uname) shift UNAME_A="$1" opt_uname_string=true ;; -V|--version) version exit 0 ;; -h|--help) usage exit 0 ;; -f|--full) opt_full=true ;; -g|--short) opt_summary=true ;; -b|--fetch-binaries) opt_fetch_bins=true ;; -s|--fetch-sources) opt_fetch_srcs=true ;; -k|--kernel) shift KERNEL="$1" opt_kernel_version=true ;; -d|--show-dos) opt_show_dos=true ;; -p|--pkglist-file) shift PKGLIST_FILE="$1" opt_pkglist_file=true ;; --cvelist-file) shift CVELIST_FILE="$1" opt_cvelist_file=true ;; --checksec) opt_checksec_mode=true ;; --kernelspace-only) opt_kernel_only=true ;; --userspace-only) opt_userspace_only=true ;; --skip-more-checks) opt_skip_more_checks=true ;; --skip-pkg-versions) opt_skip_pkg_versions=true ;; *) shift if [ "$#" != "0" ]; then exitWithErrMsg "Unknown option '$1'. Aborting." fi break ;; esac shift done
check Bash version (associative arrays need Bash in version 4.0+)
if ((BASH_VERSINFO[0] < 4)); then exitWithErrMsg "Script needs Bash in version 4.0 or newer. Aborting." fi
exit if both --kernel and --uname are set
[ "$opt_kernel_version" = "true" ] && [ $opt_uname_string = "true" ] && exitWithErrMsg "Switches -u|--uname and -k|--kernel are mutually exclusive. Aborting."
exit if both --full and --short are set
[ "$opt_full" = "true" ] && [ $opt_summary = "true" ] && exitWithErrMsg "Switches -f|--full and -g|--short are mutually exclusive. Aborting."
--cvelist-file mode is standalone mode and is not applicable when one of -k | -u | -p | --checksec switches are set
if [ "$opt_cvelist_file" = "true" ]; then [ ! -e "$CVELIST_FILE" ] && exitWithErrMsg "Provided CVE list file does not exists. Aborting." [ "$opt_kernel_version" = "true" ] && exitWithErrMsg "Switches -k|--kernel and --cvelist-file are mutually exclusive. Aborting." [ "$opt_uname_string" = "true" ] && exitWithErrMsg "Switches -u|--uname and --cvelist-file are mutually exclusive. Aborting." [ "$opt_pkglist_file" = "true" ] && exitWithErrMsg "Switches -p|--pkglist-file and --cvelist-file are mutually exclusive. Aborting." fi
--checksec mode is standalone mode and is not applicable when one of -k | -u | -p | --cvelist-file switches are set
if [ "$opt_checksec_mode" = "true" ]; then [ "$opt_kernel_version" = "true" ] && exitWithErrMsg "Switches -k|--kernel and --checksec are mutually exclusive. Aborting." [ "$opt_uname_string" = "true" ] && exitWithErrMsg "Switches -u|--uname and --checksec are mutually exclusive. Aborting." [ "$opt_pkglist_file" = "true" ] && exitWithErrMsg "Switches -p|--pkglist-file and --checksec are mutually exclusive. Aborting." fi
extract kernel version and other OS info like distro name, distro version, etc. 3 possibilities here:
case 1: --kernel set
if [ "$opt_kernel_version" == "true" ]; then # TODO: add kernel version number validation [ -z "$KERNEL" ] && exitWithErrMsg "Unrecognized kernel version given. Aborting." ARCH="" OS=""
case 2: --uname set
elif [ "$opt_uname_string" == "true" ]; then [ -z "$UNAME_A" ] && exitWithErrMsg "uname string empty. Aborting." parseUname "$UNAME_A"
case 3: --cvelist-file mode
elif [ "$opt_cvelist_file" = "true" ]; then
case 4: --checksec mode
elif [ "$opt_checksec_mode" = "true" ]; then
case 5: no --uname | --kernel | --cvelist-file | --checksec set
else
fi
echo echo -e "${bldwht}Available information:${txtrst}" echo [ -n "$KERNEL" ] && echo -e "Kernel version: ${txtgrn}$KERNEL${txtrst}" || echo -e "Kernel version: ${txtred}N/A${txtrst}" echo "Architecture: $([ -n "$ARCH" ] && echo -e "${txtgrn}$ARCH${txtrst}" || echo -e "${txtred}N/A${txtrst}")" echo "Distribution: $([ -n "$OS" ] && echo -e "${txtgrn}$OS${txtrst}" || echo -e "${txtred}N/A${txtrst}")" echo -e "Distribution version: $([ -n "$DISTRO" ] && echo -e "${txtgrn}$DISTRO${txtrst}" || echo -e "${txtred}N/A${txtrst}")"
echo "Additional checks (CONFIG_*, sysctl entries, custom Bash commands): $([ "$opt_skip_more_checks" == "false" ] && echo -e "${txtgrn}performed${txtrst}" || echo -e "${txtred}N/A${txtrst}")"
if [ -n "$PKGLIST_FILE" -a -n "$PKG_LIST" ]; then pkgListFile="${txtgrn}$PKGLIST_FILE${txtrst}" elif [ -n "$PKGLIST_FILE" ]; then pkgListFile="${txtred}unrecognized file provided${txtrst}" elif [ -n "$PKG_LIST" ]; then pkgListFile="${txtgrn}from current OS${txtrst}" fi
echo -e "Package listing: $([ -n "$pkgListFile" ] && echo -e "$pkgListFile" || echo -e "${txtred}N/A${txtrst}")"
handle --kernelspacy-only & --userspace-only filter options
if [ "$opt_kernel_only" = "true" -o -z "$PKG_LIST" ]; then unset EXPLOITS_USERSPACE declare -A EXPLOITS_USERSPACE fi
if [ "$opt_userspace_only" = "true" ]; then unset EXPLOITS declare -A EXPLOITS fi
echo echo -e "${bldwht}Searching among:${txtrst}" echo echo "${#EXPLOITS[@]} kernel space exploits" echo "${#EXPLOITS_USERSPACE[@]} user space exploits" echo
echo -e "${bldwht}Possible Exploits:${txtrst}" echo
start analysis
j=0 for EXP in "${EXPLOITS[@]}" "${EXPLOITS_USERSPACE[@]}"; do
done
sort exploits based on calculated Rank
IFS=$'\n' SORTED_EXPLOITS=($(sort -r <<<"${exploits_to_sort[*]}")) unset IFS
display sorted exploits
for EXP_TEMP in "${SORTED_EXPLOITS[@]}"; do
display result (standard)
done
Last updated