科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网安全频道WindowsWorkstation服务远程漏洞(3)

WindowsWorkstation服务远程漏洞(3)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

微软最近为了减轻系统管理员的工作负担,把发布安全公告的周期从不定期改为定期发布,这无疑给系统管理员安装补丁提供了极大的方便,可以一起安装几个补丁。
  • 评论
  • 分享微博
  • 分享邮件

  1、调用NetValidateName函数,提供超长参数,发送至目标主机.

  适用环境 Windows200O,WindowsXP。

  条件限制 目标文件系统为FAT32,或WINNT目录下的DEBUG任何人都具有写权限。

  现在很少有Windows200O/XP系统使用FAT32作为文件系统了吧?而且默认情况下,WINNT目录下的DEBUG目录只有管理员是具有写权限的,所以利用这种攻击方法没有实际意义。

  当我们调用NetVaUdateName函数给目标主机发送一段超长数据后(假如目标系统满足上述条件限制),系统处理流程如下(以Qindows200Osever英文版为例):

  wkssvc!NetpValidateName

  |_wkssvc!NetSetuppOpenLog

  |_wkssvc!NetpLogPrintHelper

  |_wkssvc!NetpLogPrintRoutingeV

  |_wkssvc!NetpDebugDumpRoutine

  2、调用NetAddAlternateComputerName函数,提供超长参数。发送至目标主机。

  适用环境 WindowsXP。

  条件限制只要能跟目标WindowsXP系统建立IPCNULLSession就可以进行攻击。

  当我们调用NetAddAltenateComputerName函数给目标主机发送一段超长数据后(假如目标系统满足上述条件限制),系统处理流程如下:

  wkssvc!NetrAddAltrnateComputerName

  |_wkssvc!NetpManageAltComputerName

  |_wkssvc!NetSetuppOpenLog

  |_wkssvc!NetpLogPrintHelper

  |_wkssvc!NetpLogPrintRoutineVEx

  |_skssvc!NetpDebugDumpRoutine

  |_MSVCRT!vsprintf

  由上述内容我们可以看到,不管是哪种攻击方法,不管是攻击Windows2000还是WindowsXP平台,目标系统处理的流程都差不多,出现漏洞的都是wkssvc.dll中一个函数名为NetpDebugDumpRoutine的函数。

  OK,我们现在就来分析一下出现漏洞的那个函数的汇编代码,看看漏洞是怎么产生的!

  以下汇编代码(由最强悍的反汇编软件IDA分析所得)分析基于WindowsXP简体中文专业版。没有安装任何补丁,wkssvc.dll的版本为5.1.2600.0(所以你在不同版本下看到的汇编代码可能稍有不同)。

  1、通过NetValidateName函数发起攻击

  如前所述。攻击Windows200O和WindowsXP平台均可以通过调用NetValidateName这个函数来实现。但是,目标系统在处理这个函数发送的数据包过程中,在调用有漏洞的函数wkssvc!NetpDebugDumpRoutine将超长参数记录到日志文件触发缓冲区溢出之前,目标系统会先调用WsImpersonateClient函数,模拟客户端的权限,以客户端提供的有效的访问令牌的权限去打开日志文件。也就是说,假如你跟目标系统建立的只是IPCNULLSesSon(空会话),那么目标系统是以空会话的权限去打开日志文件的。这样我们的问题就来了!当文件系统是NTFS的情况下,Windows200O和WindowsXP下的日志文件默认只有SYSTEM和管理员组才有权限写。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章