
Эксплойт для проверки концепции для RealPlayer: произвольная загрузка файлов и обход каталогов, приводящие к удаленному выполнению кода через метод Import().
Real Player 'external::Import()' Произвольная загрузка файлов, уязвимости обхода каталога приводят к удаленному выполнению кода
видеодемонстрация: https://youtu.be/CONlijEgDLc
Real Player использует функциональность Microsoft Internet Explorer и предоставляет свойства и методы через особый механизм, специфичный для приложения:
Объект 'external' предоставляет несколько пользовательских методов и свойств.
Метод 'Import()' обрабатывается небезопасным образом в отношении параметра 'Copy to My Music', что позволяет загружать произвольные типы файлов, что может быть небезопасно, поскольку на диск пользователя должны допускаться только аудио-, видео- и графические файлы. Кроме того, метод недостаточно очищает пути к файлам, что позволяет размещать произвольные файлы в произвольных местах. Хотя при этом отображается ошибка, так как Real Player не может отобразить загруженный файл, файл остается до тех пор, пока пользователь не закроет диалоговое окно. Кроме того, при открытии новых окон Real Player ищет старую устаревшую библиотеку IE (shdoclc.dll), которую также можно использовать для автоматического выполнения кода без необходимости ожидания перезагрузки (это справедливо, когда файл размещается в папке 'startup').
Атакующему необходимо разместить файлы для копирования/загрузки в общей папке SMB или WebDav. Каталог 'appdata' должен находиться в корне общей папки.
Кроме того, условие отказа в обслуживании (DOS) в 'external.PreloadURL()' помогает предотвратить удаление файлов Real Player'ом.
PoC поместит 'shdoclc.dll' (содержит простой код для запуска 'cmd.exe' в 'DllMain()' в демонстрационных целях) в папку пользователя 'windowsapps' и 'write.exe' в папку 'startup', поэтому это работает универсально (любая версия Windows, по крайней мере от XP до 11).
Проверено на RP вер. 16.00.282, 16.0.3.51, Cloud 17.0.9.17, v.20.0.7.309