zoukankan      html  css  js  c++  java
  • 浅析NTFS 文件系统数据流安全问题

    从一个古老的漏洞谈起

    人们应该还记得1998年中期发现的IIS低版本那臭名昭著的$DATA漏洞,若你对www.hackart.org站点的sheepxxy.asp文件的源代码感兴趣

    只需要在浏览器中输入
    http://www.hackart.org/sheepxxy.asp::$DATA

    源代码就出来了![NETSCAPE将提示下载文件,IE则在窗口中直接打开源代码]

    不少人对这个漏洞应该都记忆尤新,不过这个漏洞究竟是如何得来?似乎不是很多人都会去考虑。其实“$DATA”这个漏洞出现的原因是IIS解

    析文件名的BUG-没有很好地规范文件名。

    当IIS服务器接受到用户请求的时候,首先检验文件后缀,然后决定如何处理此请求,比如

    http://www.hackart.org/sheepxxy.asp

    请求后缀是.asp,于是服务器认为你是要浏览ASP文件[ACTIVE SERVER PAGE] ,于是服务器把请求递交给asp.dll处理,如果是IIS不能识别的

    后缀,请求将交给WINDOWS处理[由静态文件处理程序处理],比如

    http://www.hackart.org/sheepxxy.txt

    且服务器上未安装script map的特殊后缀处理程序,则sheepxxy.txt这个文本文件的内容将直接发送给用户。

    不过$DATA是怎么回事?它可不是正常WINDOWS文件的后缀名啊,因此,要说明$DATA的来历,必须引入“流”的概念。

    NTFS文件系统是与微软的WINDOWS NT操作系统“搭配销售”的,但在设计是考虑到要兼容其他文件系统,于是增加了一些新特性

    苹果公司基于磁盘的文件上支持二类数据集,或派生[fork],这些派生被称为数据和资源派生,为支持这些文件,NTFS文件系统被设计为支持

    包含在一个文件中的多个数据流。这是一种不需要重新构造文件就能给一个文件添加额外属性或信息的机制,它应兼容性而被创造出来,却成

    为了NTFS这一本为安全设计的文件系统的安全隐患!

    NTFS上的文件本身的内容包含在没有名字的“流”中,具有内部数据类型 : $DATA ,也就是包含了所有内容的的主数据流。

    于是当IIS服务器接受到形如

    http://www.hackart.org/sheepxxy.asp::$DATA

    这样的请求时,并不能正确解析其后缀,于是请求被递交给WINDOWS,而WINDOWS的文件系统若是NTFS的话,则它将认为该用户是请求浏览

    sheepxxy.asp 这个文件的主数据流,便将 sheepxxy.asp 的内容而不是经过asp.dll处理过的结果返还给用户,致使发生源代码泄露。

    利用这个漏洞的两个前提:[1] sheepxxy.asp 保存在 NTFS文件系统下,FAT系统可是没有数据流这么一说的哦~

    [2] sheepxxy.asp 被ACL[一种访问控制方法,操作系统借助ACL来判断一个帐户具有对一个资源何种程度上的权限]
    设为全局可读 也就是every one 组的读权限开放。

    当然,这个漏洞已经被微软及时地修补了,打过补丁的NT4+IIS4已经没有了此漏洞,其后的WIN2000和WINDOWS.NET自然不会再犯同样的错误

    不过关于NTFS文件系统的“流”的安全问题还没有结束,下面的文字将涉及如何利用这一特性在你入侵过的机器上隐藏文件从而保持权限。

    现在我们的硬盘[当然,它是NTFS格式 ^_^]有这么两个文件 hackart.txt 和 sheepxxy.exe ,其中 sheepxxy.exe 是我们需要隐藏的文件

    hackart.txt 当然就是无辜的前端文件了,我们该如何进行我们的接续文件流的行动呢?简单的办法是使用NTRK这一管理员工具包[更多的时候
    它是黑客工具包哦~] 中的POSIX 工具 cp

    命令格式如下:

    cp sheepxxy.exe hackart.txt:sheepxxy.exe

    这样 sheepxxy.exe 就隐藏在 hackart.txt 的 sheepxxy.exe 数据流中了,试想此前端文件hackart.txt 与合并前并无什么大的改变[当然修
    改时间和文件大小改变,可是有谁能在硬盘上成千上万的文件中统计这些细支末节的数据?]

    把数据流分离开的逆向操作命令如下:

    cp hackart.txt:sheepxxy.exe sheepxxy.exe

    虽然CMD中不能直接执行接续后的文件流 ,也就是不能直接执行 hackart.txt:sheepxxy.exe

    但是并不需要逆操作来分离出我们的隐藏文件,运用start 命令就可以直接执行已隐藏的文件,格式如下:

    start hackart.txt:sheepxxy.exe

    这种方法可是相当隐蔽的哦,总比傻乎乎地把 nc.exe 这类文件放在管理员眼皮下强了不少~~:)

    而且这种方式可是无论什么文件都可以操作哦,只要是合法WIN文件


    NTFS是微软专为NT系统设计的安全文件系统,可是就是数据流这种向后兼容的性质出卖了它的安全和稳定,安全毕竟是一个整体,丝毫马虎不得!

  • 相关阅读:
    Java面向对象之内部类(匿名内部类)
    Java面向对象之内部类(访问格式)
    Java面向对象之USB接口实例
    Java面向对象之多态(成员访问特点) 入门实例
    Java面向对象之多态(向上、向下转型) 入门实例
    Java面向对象之接口interface 入门实例
    Ansible 的安装
    Windows server 2016安装Docker EE
    Docker-py 的使用
    flask 上传文件
  • 原文地址:https://www.cnblogs.com/MaxWoods/p/395300.html
Copyright © 2011-2022 走看看