
Import() 메서드를 통한 원격 코드 실행으로 이어지는 RealPlayer 임의 파일 다운로드 및 디렉터리 트래버설 취약점에 대한 개념 증명(PoC) 익스플로잇
비디오 데모: https://youtu.be/CONlijEgDLc
Real Player는 Microsoft Internet Explorer 기능을 사용하며, 애플리케이션별 특수 수단을 통해 속성과 메서드를 노출합니다:
'external' 객체는 여러 사용자 지정 메서드와 속성을 노출합니다.
'Import()' 메서드는 'Copy to My Music' 매개변수와 관련하여 안전하지 않은 방식으로 처리되며, 이로 인해 임의의 파일 형식을 다운로드할 수 있습니다. 사용자 디스크에는 오디오/이미지/비디오 형식만 다운로드가 허용되어야 하므로 이는 안전하지 않을 수 있습니다. 또한 파일 경로를 적절히 검사하지 않아 임의의 위치에 임의의 파일을 심을 수 있습니다. 다운로드된 파일을 렌더링할 수 없어 오류를 표시하지만, 사용자가 대화 상자를 닫을 때까지 파일은 남아 있습니다. 또한 새 창을 열 때 Real Player는 오래된 구형 IE 라이브러리(shdoclc.dll)를 찾습니다. 이는 재부팅을 기다릴 필요 없이 코드를 자동으로 실행하는 데 악용될 수도 있습니다('startup' 폴더에 파일을 심은 경우 해당).
공격자는 복사/다운로드할 파일을 SMB 또는 WebDav 공유에 호스팅해야 합니다. 'appdata' 디렉터리는 공유의 루트에 위치해야 합니다.
또한 'external.PreloadURL()'의 DOS 조건은 Real Player가 파일을 삭제하지 않도록 하는 데 도움이 됩니다.
PoC는 'shdoclc.dll'(데모 목적으로 'DllMain()'에서 'cmd.exe'를 실행하는 간단한 코드 포함)을 사용자의 'windowsapps' 폴더에, 'write.exe'를 'startup' 폴더에 드롭하므로, 최소 XP부터 11까지 모든 Windows 버전에서 작동합니다.
RP ver. 16.00.282, 16.0.3.51, Cloud 17.0.9.17, v.20.0.7.309에서 테스트됨