科技行者

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

知识库

知识库 安全导航

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

WindowsWorkstation服务远程漏洞(2)

  • 扫一扫
    分享文章到微信

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

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

  日志功能中使用vsphntf()在日志文件中生成字符串,日志文件名为NetSetup.LOG,它保存在%SYSTEMROOT%debug目录中。这个记录函数有部分处理Workstation服务命令的函数调用,如NetValidateName、NetJoinDomain等。在NetValidateName()这个函数中,computer name作为第二个参数最终记录在日志文件中。

  例如,我们使用如下形式调用NetValidateName()APL

  NetValidateName(L"\\192.168.0.100","AAAAAAAA",NULL,NULL,0);

  那么,我们可以在远程主机中产生如下记录条目:

  08/13 13:01:01 NetpValidateName:checking to see if""is valid as type 0 name 08/13 13:01:01 NetpValidateName:""is not a valid NetBIOS\AAAAAAAA name:0x57

  如果我们指定超长字符串作为NetVaUdateName()API的第二个参数,如果调试文件可写就可以在特定主机上发生缓冲区溢出。

  一般如果是NTFS文件系统,在Windows目录中的debug目录不允许所有人可写,这表示不能使用NULL会话来生成日志。因为WsImpersonateClien()API在打开日志文件前调用,如果连接客户端没有有效的权限来写日志文件,那么CreateFUe()就会失败,vsphntf()就不会被执行,因此此漏洞在FAT32系统和%SYSTEMROOT%debug目录可写的情况下可被利用。

  但是,在WindowsXP上实现了部分扩展的RPC函数,这些函数在调用WsImpersonateClient()前打开日志文件,不过这些RPC函数没有提供文档化说明,但可以通过观察WKSSVC.DLL中的函数表得到。这些扩展命令的RPC号开始于OxlB,如OXlB调用NetpManageComputers(),但在打开日志文件前不调用WsImpersonateClient()。

  NetpManageComputers()的使用没有被公开化,但是我们可以在LMJoin.h中找到NetAddAlternateComputerName()API的原型定义,这个API从NETAPI32.DLL导出,这个API也一样没有文档化。

  我们可以使用如下形式调用这个RPC函数

  (0x1B):

  NetAddAlternateComputerName(L"\\192.168.0.200",LONG_UNICODE_STRING,0,0,0);

  使用上述方法,我们不需要任何特殊权限(只需要有能建立IPCNULLSession的权限),便可使得远程主机把第二个参数写到它的日志文件中去,如定义超长Unicode字符串作为第二个参数("AltemateName"),在第一个参数指定的的远程系统就会由于缓冲区溢出而崩溃。Unicode字符串long_unicode_string会在日志记录函数调用前被转换为ASCII字符串。

  从以上的详细技术信息中,我们可以得知有两种攻击方法。

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

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

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