
анализ переполнения буфера в sudo, затрагивающего версии sudo <1.8.26, и как использовать GCC для компиляции публично доступных эксплойтов
Анализ CVE-2019-18634 (https://www.exploit-db.com/exploits/47995)
Sudo 1.8.25p - 'pwfeedback' Переполнение буфера (PoC)
Опция pwfeedback в sudo может использоваться для обеспечения визуальной обратной связи, когда пользователь вводит свой пароль. При каждом нажатии клавиши выводится звёздочка. Эта опция была добавлена в ответ на путаницу пользователей относительно того, как стандартное приглашение Password: отключает эхо нажатий клавиш. Хотя pwfeedback не включена по умолчанию в основной версии sudo, некоторые системы, такие как Linux Mint и Elementary OS, включают её в своих файлах sudoers по умолчанию.
Анализ
Sudo переполнение буфера tryhackme writeup
Анализ CVE-2019-18634
Сначала мы входим в экземпляр tryhackme через SSH
Уязвимость возникает из-за того, что функция pwfeedback подвержена переполнению буфера в куче. Чтобы использовать эту уязвимость, мы сначала проверяем, что на машине установлена уязвимая версия sudo (sudo <1.8.26), выполнив команду sudo –version
Анализ CVE-2019-18634
Сначала мы входим в экземпляр tryhackme через SSH
Уязвимость возникает из-за того, что функция pwfeedback подвержена переполнению буфера в куче. Чтобы использовать эту уязвимость, мы сначала проверяем, что на машине установлена уязвимая версия sudo (sudo <1.8.26), выполнив команду sudo –version

Подтвердив, что на машине установлена уязвимая версия sudo, мы теперь проверяем, присутствует ли функция pwfeedback. Это можно сделать двумя способами: вызвав sudo и введя что-либо в приглашение для пароля, которое должно отображать «*» при вводе символов пароля, а второй, более технический способ — использовать команду sudo -l, но это также потребует, чтобы пользователь имел соответствующие разрешения, позволяющие просматривать информацию о sudo или иметь возможность читать файл sudoers

Теперь мы подтвердим, что переполнение буфера возможно, используя тестовый пример с exploit-db https://www.exploit-db.com/exploits/47995
perl -e 'print(("A" x 100 . "\x{00}") x 50)' | sudo -S id ^^Приведённая выше строка кода работает следующим образом:
Добавляет 100 символов A и передаёт их в команду sudo, которые затем попадают в буфер кучи pwfeedback.

Затем sudo выдаст ошибку сегментации, так как не знает, как продолжить процесс sudo
Это происходит потому, что когда статический буфер кучи переполняется, он начинает заполнять регистры ЦП и указатель инструкций, который поддерживает поток выполнения следующей инструкции.
Мы можем запустить эксплойт, который вызовет переполнение буфера и даст нам root-доступ к системе https://www.exploit-db.com/exploits/47995
