Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
POC-CVE-2017-8464-OpenCalculator — Exploiting the .lnk vulnerability and operating system handling mechanisms regarding explorer.exe and USB drives. | Kitploit
Tools/GitHubGitHub/playboisk8/poc-cve-2017-8464-opencalculator
Vulnerability AnalysisExploitationBinary AnalysisPayload DevelopmentBinary Exploitation
GitHubplayboisk8/poc-cve-2017-8464-opencalculator

POC-CVE-2017-8464-OpenCalculator

Exploiting the .lnk vulnerability and operating system handling mechanisms regarding explorer.exe and USB drives.

View Repository
21 month agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

CVE-2017-8464 / research + PoC

Create 1 Shortcut + 1 .DLL containing malicious payload => Put it on a USB and send to victim => victim opens USB => Payload automatically triggers !

CVE-2017-8464.gif

ROOT CAUSE

  1. First, we need to know exactly where this bug comes from! It's because of a feature called Plug-and-Play — the OS automatically detects devices, allocates resources, and loads the appropriate driver so they work immediately without rebooting. When you plug in a USB and open the folder with Windows Explorer explorer.exe, the OS scans through the files to display the corresponding icon for the user!

  2. From old Windows versions, Microsoft wanted shortcuts (.lnk) pointing to Control Panel items (essentially .cpl or .dll files) to be able to display dynamic icons flexibly. Therefore, Windows' core UI management library, shell32.dll, was designed with a function called

CPL_LoadCPLModule
  • Using LoadLibrary blindly: To get the icon from a Control Panel Applet structure file, the OS doesn't just read a static image file; it uses the LoadLibraryW function to load that entire dynamic-link library directly into the memory space of the explorer.exe process. After loading, it calls a standard exported function, CPlApplet, to get and draw the icon on screen.

  • LoadLibraryW.png

    To prove that LoadLibraryW is really involved in the above exploitation chain:

    1/ Enable x64dbg với quyền admin

    2/ Attach to explorer.exe

    3/ Type the command bp LoadLibraryW

    4/ Press F9 to let explorer.exe continue run

    5/ Plug in a USB and it will immediately hit breakpoint !

    PoC Problem & Solution

    I ran into an issue where the exploit chain was completely silent. I tried to check and debug everything but couldn't find a way to fix it! Then I tried to find someone else's PoC and run it, but it also failed!

    Example: https://github.com/3gstudent/CVE-2017-8464-EXP

    However, when I went away for lunch and came back, I regained my focus and calm. I started asking myself: why did that guy's PoC work but not on my machine? Okay, I started lightly reverse-engineering his .lnk and .dll and found two things!

    1 / My .dll is longer than his! But that's fine, it's not the issue!

    2 / When I threw the .lnk into HxD to read strings, I discovered that this guy didn't use a relative path but an absolute one!

    Relative: ../example.dll

    Absolute: O:/example.dll

    him.png

    Okay now the fix would be: we need to know what drive letter the USB will be auto-assigned when plugged into the victim's machine, then we set the absolute path accordingly and it will work. On my Win7, plugging in a USB always mounts it as drive F, so my build syntax is:

    root@kitploit:~
    python Make_PoC.py FakeGoogleChrome F:\Pwned.dll
    

    How did Microsoft patch this architecture?

    Because this is a flaw in system architecture design (Logic/Architecture Flaw) rather than a memory overflow bug, Microsoft had to completely change the way Control Panel is handled:

    • Digital Signature (Code Signing): Modern operating systems require .cpl or .dll files loaded by system processes to have a valid Microsoft digital signature or reside in strictly protected system directories (such as System32) to avoid "Binary Planting" from USB.
    • Process Isolation: Instead of loading directly into the critical process explorer.exe [cite: 1058], newer Windows versions run Control Panel applets through an isolated intermediary process (such as dllhost.exe or rundll32.exe). If the DLL crashes or contains malware, it only takes down that intermediary process and cannot control the entire UI system.

    Reference

    Research VN

    • https://github.com/TrG-1999/DetectPacket-CVE-2017-8464

    PoC

    • https://github.com/3gstudent/CVE-2017-8464-EXP

    Tool build vul .lnk

    • https://github.com/nixawk/labs/blob/master/CVE-2017-8464/exploit_CVE-2017-8464.py
    Download Tool