
фреймворк для перечисления и эксплуатации повышения привилегий ядра
kernelpop — это фреймворк для автоматического перечисления и эксплуатации уязвимостей ядра в следующих операционных системах:
Linux
Mac
Он спроектирован независимым от версии python, то есть должен работать как с python2, так и с python3.

$ git clone https://github.com/spencerdodd/kernelpop
$ cd kernelpop
$ python kernelpop.py || python3 kernelpop.py
$ git clone https://github.com/spencerdodd/kernelpop
$ cd kernelpop
$ ./create_executable.sh
$ ./kernelpop
pyinstaller (шаги зависят от системы сборки)$ pyinstaller kernelpop.py --onefile$ cp dist/kernelpop .оба способа сборки бинарного файла должны создать бинарник kernelpop в корне проекта.
user@debian:~/Desktop/kernelpop$ python3 kernelpop.py
##########################
# welcome to kernelpop #
# #
# let's pop some kernels #
##########################
[*] grabbing distro version and release from underlying OS (linuxdebian7)
[*] grabbing kernel version from 'uname -a'
[+] kernel (Linux debian 3.2.0-4-686-pae #1 SMP Debian 3.2.41-2 i686 GNU/Linux) identified as:
[base]
type: linux
distro: linuxdebian7
version: 3.2.0-4
architecture: i686
[specific]
type: linux
distro: linuxdebian7
version: 3.2.41-2
architecture: i686
[*] matching kernel to known exploits
[+] discovered 11 possible exploits !
[[ distro kernel matched exploit available ]]
CVE20165195_32 Dirty COW race condition root priv esc for 32 bit
[[ distro kernel version vulnerable ]]
CVE20144699 Exploitable race condition in linux before 3.15.4
CVE20143153 `futex_requeue` vulnerability before 3.14.6 allows for priv esc
CVE20162384 Double free vulnerability in the `snd_usbmidi_create` (requires physical proximity)
CVE20140196 `n_tty_write` vuln before 3.14.4 allows priv esc to root
CVE20132094_semtex perf_swevent_init Local root exploit (32 bit)
CVE20176074 `dccp_rcv_state_process` in net/dccp/input.c mishandles structs and can lead to local root
CVE20132094_32 perf_swevent_init Local root exploit (32 bit)
[[ base linux kernel vulnerable ]]
CVE20144014 `chmod` restriction bypass allows users to get root before 3.14.8
CVE20177308 `packet_set_ring` in net/packet/af_packet.c can gain privileges via crafted system calls.
CVE20171000112 ip_ufo_append_data() memory corruption flaw can be exploited to gain root privileges.
В выводе есть несколько категорий. Вот что они означают:
[[ distro kernel matched exploit available ]]
[[ distro kernel version vulnerable ]]
[[ base linux kernel vulnerable ]]
python2 или python3
pyinstaller (если нужно собрать бинарный файл)
run modes:
(default) python3 kernelpop.py
(exploit-mode) python3 kernelpop.py -e {exploit name}
(dump-source) python3 kernelpop.py -e {exploit name} -d
(uname-mode) python3 kernelpop.py -u {uname -a output}
(interactive-mode) python3 kernelpop.py -i # LEGACY option (same as uname-mode)
other:
(playground path) -p {new path}
(json output file) --digest json
Режим default обрабатывает информацию о ядре хоста и сравнивает её с известными программе эксплойтами для ядра. Затем выводится список потенциально полезных уязвимостей и прикреплённых эксплойтов.
-e {exploit name}
Режим exploit динамически компилирует и запускает исходный код эксплойта с взаимодействием stdio внутри программы. Он также может перехватывать прерывания от неудачных попыток. Используйте имя эксплойта, которое отображается при первоначальном запуске перечисления kernelpop в режиме default.
dump-source (опция) -d
exploit. Он сбрасывает исходные файлы для указанного эксплойта в соответствующие файлы в PLAYGROUND_PATH (по умолчанию /tmp). Это полезно для модификации исходного кода эксплойта на машине или для работы с эксплойтами, требующими ручного взаимодействия или жёсткого кодирования значений. Особенно полезно при запуске из бинарного файла, так как у вас не будет доступа к исходному коду проекта (то есть к исходникам эксплойтов).-u {uname -a output}
Эта опция позволяет передать программе вывод команды uname -a непосредственно, что делает её пригодной для интеграции в автоматизированные скрипты или для любых других возможных целей. Замена interactive mode.
uname]-i {uname -a output}
Интерактивный режим позволяет выполнять перечисление, используя только вывод команды uname -a, что делает его полезным как инструмент перечисления только на стороне хоста. Запускается командой kernelpop с флагом -i, после чего передаётся вывод uname -a по запросу. Это устаревшая функция, заменённая на uname mode, но остаётся поддерживаемой, так как -u не поддерживает перечисление для Mac.
PLAYGROUND-p {new PLAYGROUND_PATH dir}
Опция -p устанавливает значение глобальной переменной PLAYGROUND_PATH. Это каталог, в который записываются все исходные файлы эксплойтов и в котором они компилируются. По умолчанию установлено значение /tmp. Однако вы можете задать любой каталог с помощью этого модификатора, если у вас нет прав на запись в /tmp.
--digest json
Эта опция позволяет сохранить результаты запуска kernelpop в файл в формате JSON для последующей обработки. Пока реализован только дамп в json, но при необходимости я добавлю версию XML.
добавить больше эксплойтов! (src/to_add — если кто-то хочет поработать над некоторыми из них, милости просим!)
включить уровни исправлений в сравнения уязвимых диапазонов
добавить способ переопределять обнаруженные настройки на случай неверного парсинга или враждебных настроек
поиск в Google: CVE-XXXX-XXXX "ubuntu"
перейти по ссылке canonical (https://people.canonical.com/~ubuntu-security/cve/2016/CVE-XXXX-XXXX.html)
перейти по всем связанным бюллетеням на usn.ubuntu.com и извлечь информацию
получить номера исправленных версий для заполнения окон уязвимости по версиям
поиск в Google: CVE-XXXX-XXXX "debian"
ссылка security-tracker.debian.org (https://security-tracker.debian.org/tracker/CVE-XXXX-XXXX)
поиск в Google: CVE-XXXX-XXXX "mitre"
CVE-2017-1000379
CVE-2017-1000373
CVE-2017-1000372
CVE-2017-1000371
CVE-2017-1000370
CVE-2017-1000367
CVE-2017-1000112
CVE-2017-7308
CVE-2017-6074
CVE-2017-5123
CVE-2016-5195
CVE-2016-2384
CVE-2016-0728
https://github.com/SecWiki/linux-kernel-exploits
http://exploit-db.com/
https://github.com/lucyoa/kernel-exploits
https://github.com/SecWiki/windows-kernel-exploits
Debian
CVE-2015-1328
CVE-2014-4699
CVE-2014-4014
CVE-2014-3153
CVE-2014-0196
CVE-2014-0038
CVE-2013-2094
CVE-2010-4347
CVE-2010-2959
CVE-2009-1185