
7-Zip версии до 21.07 на Windows позволяет повышение привилегий и выполнение команд, когда файл с расширением .7z перетаскивается в область Help>Contents.
Я нигде не публиковал PoC-код для атаки повышения привилегий. Найденные PoC-коды не имеют отношения к повышению привилегий. К вашему сведению.
7-Zip — это свободный и бесплатный архиватор файлов. Версия 7-Zip для командной строки была разработана для Unix-подобных систем, включая AmigaOS. Также она совместима с DOS через порт DOS или с расширением HX-DOS, позволяя запускать в командной строке Windows.
Немного напишу по-турецки, чтобы и вы учили турецкий.
Прежде всего хочу рассказать историю обнаружения уязвимости. Я увидел пейлоад, реализующий XXE-уязвимость на WinRAR. Он также позволял выполнять команды через ActiveXObject и WScript.Shell с помощью файла справки HTML Helper. Это ничем не отличалось от HTA, используемого в lolbin’ах, и я задумался, как обратить ситуацию в свою пользу.
(https://www.exploit-db.com/exploits/47526)
На самом деле моей целью было получить reverse-shell на целевом компьютере после двойного клика по архивам 7z, zip, rar и т.п., и я размышлял, можно ли для этого использовать файл справки HTML Helper. После длительного фаззинга с WinAFL я обнаружил heap-overflow в FzGM.exe, но после переполнения кучи мои права оставались теми же, так что это не имело смысла. Поэтому я не использовал CreateRemoteThread, так как нужно было вызывать API, а для вызова этого API требовался CHM-файл. При анализе исходного кода я заметил, что особенно в двух местах при вызове WinAPI были ошибки, которые напрямую создавали проблему с авторизацией. В момент обнаружения, как видно на изображении ниже, FzGM.exe создаёт дочерний процесс. Обычно мы ожидаем, что этот процесс будет в hh.exe.


Если бы API не включался и настройка происходила через функцию, я ожидал бы создания дочернего процесса в hh.exe, но файл 7-zip.chm вызывает его через себя — типичный пример: если отредактировать 7-zip.chm и применить запуск команды, вы сможете это увидеть. После heap-overflow я воспользовался проблемой авторизации вызываемого API, а затем некорректной конфигурацией в файле 7z.dll, над чем я долго работал. Выполнять CreateRemoteThread() не имеет смысла. То, что мне нужно запустить и вызвать внутри пейлоада, — это не сам HTML Helper API, а точка, где этот API хукнут через 7-zip, и возможность выполнить эту точку. Но поскольку этот пейлоад работает только с интеграцией hh.exe, он функционирует через такие функции, как перетаскивание. Вызов 7-zip.chm через кнопку HELP в 7-zip и перенаправление адреса вызова на «base pointer» с проблемой авторизации в пейлоаде повышает нас до пользователя более высокого уровня. После этого в пейлоаде находится psexec, и с помощью команды psexec -s cmd.exe происходит повышение до nt authority/system.

PoC видео:
Многие вопросы были связаны с предупреждением ActiveX. Эту проблему можно решить следующим образом. Перед запуском пейлоада проверяется:
'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\0' -Name '1201' -Value '0' -PropertyType "DWord"
Если это значение равно 1, появляется всплывающее окно; если задано 0, предупреждение обходится. Однако стоит отметить, что это влияет только на того пользователя, который запускает пейлоад в данный момент.
Я сообщил разработчику о необходимых моментах, и это было признано через CVE. Я не понимаю, почему люди считают себя авторитетами и требуют от меня предоставить эксплойт. Я уже заявил, что опубликую его после обновления, но неуважение, проявленное до обновления, вероятно, проистекает из самомнения. Я могу никогда не захотеть публиковать PoC-код атаки повышения привилегий — это моя свободная воля, и мне совершенно безразлично, что кто-то думает по этому поводу.
Первый способ: Если 7-zip не получит обновление, можно удалить файл 7-zip.chm. Второй способ: Все пользователи в программе должны иметь доступ только с правами чтения и выполнения.
Соответствующее правило Sigma: https://github.com/kagancapar/CVE-2022-29072/blob/main/7z_CVE-2022-29072.yml