交换数据流(ADS)与IIS的前世与今生

此文为转贴lake2的,感谢他的分享精神。


    关于交换数据流(alternate data streams)的概念请参看bigworm翻译的文章《NTFS不利的一面》,本文只是讲一下在IIS上访问ADS的情况。

    先请大家看一个很古老的漏洞:Microsoft IIS 3.0/4.0 ::$DATA请求泄露ASP源代码漏洞。大概这是能找到的ADS与IIS的最早的报告了。

    $DATA是在NTFS文件系统中存储数据流的属性之一,即文件的主数据流(NTFS文件系统允许一个文件有多个流,但是至少有一个未命名流即主流),当我们访问a.asp::$DATA时就是请求的a.asp本身的数据,如果a.asp还包含了其他数据流,比如a.asp:lake2.asp,请求a.asp:lake2.asp:$DATA即是a.asp中的流数据lake2.asp的流数据内容。微软的补丁似乎解决了IIS泄漏主流数据的内容问题,但是如果我请求的是附加流数据呢?呵呵,问题变得有趣了!

    IIS3和IIS4的时代已经过去,关于这个问题的测试,IIS版本是5.1,系统为Windows XP SP1。

    我在web目录创建一个文本文件a.txt,又将文件cmd.asp(一个执行cmd.exe的webshell)以流的形式附加到a.txt中,现在虽然只能看到a.txt,但实际上还有一个a.txt:cmd.asp(呵呵,不能用眼睛看事物,要用心^_^)。好了,让我们在IIS里看看访问a.txt:cmd.asp及a.txt:cmd.asp:$DATA的结果吧。

【图1】执行asp文件!(注意url)

【图2】泄漏asp源代码

    我们在IIS里不仅可以访问非主流文件内容,还可以执行流形式的脚本文件!呵呵,是不是想到利用这个可以做一个隐藏的webshell。嗯,我当时也相当激动,不过很快就从头寒到脚咯,因为这个只是XP下的结果——没有人拿XP做服务器吧……

    在2000和2003上情况就不那么有趣了,他们都不会执行流脚本(显示找不到该页)。但是2000 SERVER版本可以访问到不用IIS解释的流(例如jpg文件;呵呵,可以拿来做一个隐藏的静态主页哦);2000 Advance SERVER 会出现“Not enough storage is available to process this command”的错误;2003以前试过,但结果忘记了。另外,stm等几种文件也是由服务端解释执行的,可以试试,嘿嘿,说不定有happy的事情发生哦。

    嗯,该说的差不多了,最后来感谢一下bigworm,要是没有他的翻译只怕现在我都还不知道ADS为何物。From Internet , For Interner !

    先请大家看一个很古老的漏洞:Microsoft IIS 3.0/4.0 ::$DATA请求泄露ASP源代码漏洞。大概这是能找到的ADS与IIS的最早的报告了。

    $DATA是在NTFS文件系统中存储数据流的属性之一,即文件的主数据流(NTFS文件系统允许一个文件有多个流,但是至少有一个未命名流即主流),当我们访问a.asp::$DATA时就是请求的a.asp本身的数据,如果a.asp还包含了其他数据流,比如a.asp:lake2.asp,请求a.asp:lake2.asp:$DATA即是a.asp中的流数据lake2.asp的流数据内容。微软的补丁似乎解决了IIS泄漏主流数据的内容问题,但是如果我请求的是附加流数据呢?呵呵,问题变得有趣了!

    IIS3和IIS4的时代已经过去,关于这个问题的测试,IIS版本是5.1,系统为Windows XP SP1。

    我在web目录创建一个文本文件a.txt,又将文件cmd.asp(一个执行cmd.exe的webshell)以流的形式附加到a.txt中,现在虽然只能看到a.txt,但实际上还有一个a.txt:cmd.asp(呵呵,不能用眼睛看事物,要用心^_^)。好了,让我们在IIS里看看访问a.txt:cmd.asp及a.txt:cmd.asp:$DATA的结果吧。

【图1】执行asp文件!(注意url)

【图2】泄漏asp源代码

    我们在IIS里不仅可以访问非主流文件内容,还可以执行流形式的脚本文件!呵呵,是不是想到利用这个可以做一个隐藏的webshell。嗯,我当时也相当激动,不过很快就从头寒到脚咯,因为这个只是XP下的结果——没有人拿XP做服务器吧……

    在2000和2003上情况就不那么有趣了,他们都不会执行流脚本(显示找不到该页)。但是2000 SERVER版本可以访问到不用IIS解释的流(例如jpg文件;呵呵,可以拿来做一个隐藏的静态主页哦);2000 Advance SERVER 会出现“Not enough storage is available to process this command”的错误;2003以前试过,但结果忘记了。另外,stm等几种文件也是由服务端解释执行的,可以试试,嘿嘿,说不定有happy的事情发生哦。

    嗯,该说的差不多了,最后来感谢一下bigworm,要是没有他的翻译只怕现在我都还不知道ADS为何物。From Internet , For Interner !

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/metababy/article/details/567218
个人分类: 通用算法
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭