Sploitus

Exploit for CVE-2017-8464

githubexploit · 2026-08-09

Exploit Code

README69 lines
## https://sploitus.com/exploit?id=81A082C3-1E1C-56B8-B034-462326736C50
# CVE-2017-8464 / research + PoC 
> Tạo 1 Shortcut + 1 .DLL chứa payload độc hại => Để vào USB send to victim => victim open USB => Payload tự động kích hoạt ! 
 
  

## ROOT CAUSE

 1. Trước hết tụi mình cần biết chính xác lỗi này xuất hiện do đâu ! Đó là do tính năng có tên là  **Plug-and-Play (Cắm và chạy)** OS tự động phát hiện thiết bị, cấp phát tài nguyên và tải Driver phù hợp để nó hoạt động ngay lập tức mà không cần khởi động lại máy. Khi mấy ông cắm USB và mở thư mục bằng Windows Explorer `explorer.exe`, hệ điều hành sẽ quét qua các tệp tin để hiển thị hình ảnh biểu tượng (icon) tương ứng cho người dùng !
 
 2.  Từ các phiên bản Windows cũ, Microsoft muốn các lối tắt (shortcut `.lnk`) trỏ đến các tính năng của Control Panel (bản chất là các tệp `.cpl` hoặc `.dll`) có thể hiển thị biểu tượng động một cách linh hoạt. Do đó, thư viện quản lý giao diện cốt lõi của Windows là `shell32.dll` đã được thiết kế một hàm có tên là **CPL_LoadCPLModule**
 
 3. **Sử dụng** **LoadLibrary** **một cách mù quáng:**  Để lấy được biểu tượng từ tệp cấu trúc Control Panel Applet, hệ điều hành không đọc một tệp ảnh tĩnh đơn thuần mà sử dụng hàm **LoadLibraryW** để nạp trực tiếp toàn bộ thư viện liên kết động đó vào không gian bộ nhớ của tiến trình `explorer.exe`. Sau khi nạp, nó mới gọi một hàm xuất chuẩn là `CPlApplet` để lấy biểu tượng vẽ ra màn hình


  


Để chứng minh **LoadLibraryW**  thực sự có liên quan tới chuỗi khai thác trên : 

> 1/ Hãy bật `x64dbg với quyền admin` 
>
> 2/ Attach vào `explorer.exe`  
>
> 3/ Gõ lệnh `bp LoadLibraryW` 
>
> 4/ F9 để `explorer.exe` tiếp tục run 
>
> 5/ Cắm USB vào sẽ lập tức `hit breakpoint` ! 

## Vấn đề PoC & Giải Pháp
Tui đã gặp vấn đề rằng chuỗi exploit hoàn toàn im lặng , dù cố check và debug các thứ nhưng không thể tìm được cách fix ! Sau đó tui đã thử tìm PoC của người khác về chạy thử nhưng cũng fail ! 
> Example : https://github.com/3gstudent/CVE-2017-8464-EXP 

Tuy nhiên , khi quay đi ăn trưa và quay lại tui đã có lại sự tập trung và bình tĩnh , tui bắt đầu đặt ra câu hỏi , sao PoC của khứa này lại work và đem về máy mình k work ? Oke tui bắt đầu đi dịch ngược nhẹ .lnk và .dll của khứa thì phát hiện 2 thứ ! 

1 / .dll của tui dài hơn của khứa đó ! Nhưng không sao đó kp là vấn đề!

2 / Khi ném .lnk vào HxD để đọc strings , tui phát hiện rằng , khứa này không dùng đường dẫn tương đối mà là tuyệt đối ! 

> Tương đối : ../example.dll
>
> Tuyệt đối : O:/example.dll 


  


Okay giờ cách fix sẽ là , tụi mình cần biết USB khi cắm vào máy nạn nhân sẽ được auto đặt tên là ổ gì , từ đó mình sẽ gán đường dẫn tuyệt đối vào sẽ thành công , vì trên Win7 của tui khi cắm USB nó cứ ra ổ F nên cú pháp build của tui là : 

    python Make_PoC.py FakeGoogleChrome F:\Pwned.dll

## Microsoft đã vá kiến trúc này như thế nào?

Vì đây là một lỗi thuộc về **tư duy thiết kế kiến trúc hệ thống (Logic/Architecture Flaw)** chứ không phải lỗi tràn bộ nhớ, Microsoft đã phải thay đổi hoàn toàn cách xử lý Control Panel:

-   **Chữ ký số (Code Signing):** Hệ điều hành hiện đại bắt buộc các tệp `.cpl` hoặc `.dll` được nạp bởi tiến trình hệ thống phải có chữ ký số hợp lệ của Microsoft hoặc nằm trong các thư mục hệ thống được bảo vệ nghiêm ngặt (như `System32`) để tránh lỗi "Binary Planting" từ USB.
-   **Tách biệt tiến trình (Process Isolation):** Thay vì nạp trực tiếp vào tiến trình quan trọng `explorer.exe` [cite: 1058], các phiên bản Windows mới sẽ chạy các applet Control Panel thông qua một tiến trình trung gian cô lập (như `dllhost.exe` hoặc `rundll32.exe`) . Nếu DLL có bị crash hoặc chứa mã độc, nó chỉ làm sập tiến trình trung gian đó chứ không thể kiểm soát toàn bộ hệ thống giao diện người dùng.

## 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