
Exploit de prueba de concepto para la descarga arbitraria de archivos en RealPlayer y salto de directorios que conduce a la ejecución remota de código mediante el método Import().
Real Player 'external::Import()': descarga arbitraria de archivos, vulnerabilidades de Directory Traversal que conducen a ejecución remota de código
demo en video: https://youtu.be/CONlijEgDLc
Real Player utiliza la funcionalidad de Microsoft Internet Explorer y expone propiedades y métodos a través de un medio especial específico de la aplicación:
El objeto 'external' expone varios métodos y propiedades personalizados.
El método 'Import()' se maneja de forma insegura en relación con el parámetro 'Copy to My Music', lo que permite la descarga de tipos de archivo arbitrarios, lo que podría ser inseguro, ya que solo se deberían permitir tipos de audio/imagen/video para descargar al disco del usuario. Además, no sanea adecuadamente las rutas de archivo, lo que permite colocar archivos arbitrarios en ubicaciones arbitrarias. Aunque muestra un error porque no puede representar el archivo descargado, el archivo permanece hasta que el usuario cierra el cuadro de diálogo. Además, al abrir nuevas ventanas, Real Player busca una biblioteca IE antigua y obsoleta (shdoclc.dll), que también puede ser abusada para ejecutar código automáticamente sin necesidad de esperar hasta el reinicio (cierto cuando el archivo se coloca en la carpeta 'startup').
El atacante debe alojar los archivos a copiar/descargar en un recurso compartido SMB o WebDav. El directorio 'appdata' debe colocarse en la raíz del recurso compartido.
Además, una condición DoS en 'external.PreloadURL()' ayuda a que los archivos no sean eliminados por Real Player.
El PoC colocará 'shdoclc.dll' (tiene código simple para ejecutar 'cmd.exe' en 'DllMain()' con fines de demostración) en la carpeta 'windowsapps' del usuario y 'write.exe' en la carpeta 'startup', por lo que funciona universalmente (cualquier versión de Windows desde al menos XP hasta 11).
Probado en RP ver. 16.00.282, 16.0.3.51, Cloud 17.0.9.17, v.20.0.7.309