
RealPlayer G2 ActiveX 컨트롤의 원격 코드 실행 취약점에 대한 개념 증명 익스플로잇으로, javascript: 및 mhtml: URI를 활용하여 조작된 재생 목록 파일을 통해 코드 실행을 달성합니다.
비디오 데모: https://www.youtube.com/watch?v=9c9Q4VZQOUk
Real Player G2 Control 구성 요소에는 원격 코드 실행 취약점이 있습니다. 그 이유는 'javascript:' URI를 인자로 전달할 수 있기 때문인데, 이는 일반적으로 안전하지 않습니다. 일부 시나리오에서는 임의 도메인에 스크립트 코드를 주입할 수 있게 하여(Universal Cross Site Scripting - uXSS) 예를 들어 쿠키 탈취 등에 악용될 수 있기 때문입니다. 'URL' 매개변수를 'javascript:' URI로 설정하고 'target' 매개변수를 'iframe' HTML 요소로 설정하면, 동일한 Control을 사용하여 'mhtml:http://%SERVER%/frame.htm'과 같은 잘못된 URI로 탐색한 후 표시되는 로컬 오류 페이지의 컨텍스트에서 JavaScript 코드가 실행되도록 할 수 있습니다. MS IE 렌더링 엔진이 'mhtml:' URI를 호출하면 MIME 유형이 "message/rfc822"로 설정된 확장자를 가진 MHTML 파일을 기대하는데, '.mht' 파일이 이에 해당합니다. '.htm' 파일은 MIME이 'text/html'로 설정되어 있으므로 IE는 문서 로드를 취소하고 로컬 오류 페이지(탐색 취소됨)를 표시합니다. 로컬 오류 페이지 주소는 'res://ieframe.dll/navcancl.htm'이며, 이는 IE/Windows의 '내 컴퓨터' 보안 영역에 속하므로 설계상 임의의 로컬 파일 읽기와 임의 코드 실행이 허용됩니다. Control에서 'javascript:' URI를 금지하면 이 문제가 완화됩니다.
PoC는 'SYSMON' ActiveX 컨트롤을 사용하여 사용자의 시작 폴더에 HTA 파일을 심으며, 이 파일은 다음 로그온 또는 부팅 시 실행됩니다. HTA 파일에는 예를 들어 포함된 EXE 파일을 다운로드하거나 추출하여 실행하는 코드가 포함될 수 있습니다. PoC는 Real Player의 현재 작업 디렉터리가 사용자 홈 디렉터리의 하위 폴더로 설정되어 있다고 가정합니다. 예를 들어 웹 브라우저를 사용하여 파일을 다운로드하면 기본적으로 사용자의 'Downloads' 폴더에 다운로드되므로, Windows 사용자 이름을 알아내지 않아도 시작 폴더에 HTA 파일을 심을 수 있습니다. 이는 편의를 위한 것일 뿐이며, MS Web Browser ActiveX를 포함한 다양한 방법으로 이 정보를 얻을 수 있기 때문입니다.
이 취약점은 RAM 파일과 같은 Real Player 재생 목록 파일을 열어 악용할 수 있습니다.
문제를 재현하려면 다음을 수행하십시오:
a) 웹 서버를 설정합니다. b) 웹 서버 루트 디렉터리에 "RP_G2" 폴더를 추출합니다. c) 방금 추출한 "RP_G2" 폴더를 열고 다음 파일들을 텍스트 편집기에서 엽니다: "poc.htm", "sm_rpx.js", "start.ram". 각 파일에서 %SERVER% 문자열이 나타날 때마다 실제 웹 서버의 IP 주소로 바꿉니다. d) 웹 서버에 접근 가능한지, 관련된 모든 파일에도 접근 가능한지 확인합니다. MS IIS 웹 서버에서는 새 확장자를 추가하고 MIME 유형과 연결해야 할 수 있으므로, .RAM 확장자를 MIME "audio/x-pn-realaudio"와 연결하십시오. e) 클라이언트(피해자) 측에서 웹 브라우저를 열고 "start.ram" 파일을 다운로드한 후(또는 'rtsp:'와 같은 URL 프로토콜로 접근할 수 있음) 엽니다. 몇 초 후 사용자의 시작 폴더에 HTA 파일이 생성된 것을 볼 수 있습니다.
참고: 시작 폴더를 열려면 "실행" 메뉴를 열고 다음을 입력합니다:
shell:Startup
Enter 키를 누르면 됩니다.
Windows XP SP3, Vista, 7, 8.1, 10, 11에서 실행되고 최신 패치로 완전히 패치된 Real Player v.20.0.8.310(및 수년 전, 예: 2014년경으로 거슬러 올라가는 하위 버전)에서 성공적으로 테스트되었습니다. (예: Windows XP의 가장 최근 업데이트는 2014년 4월, Win 7은 2020년 1월 등)