导读:
|=———————————————————————————————–=|
|=————————–=[ NTFS数据流和web安全 ]=————————-=|
|=———————————————————————————————–=|
|=————————————-=[ By 80sec ]=————————————=|
|=—————-=[ xy7@80sec.com&jianxin@80sec.com ]=—————–=|
|=————————————————————————————————=|
NTFS流简单介绍:
NTFS因为它的稳定性 强大的功能以及它所提供的安全性而成为一种更优越的文件系统,NTFS交换数据流(ADSs)是为了和Macintosh的HFS文件系统兼容而设计的,它使用资源派生(resource forks)来维持与文件相关的信息,比如说图标及其他的东西。创建ADSs的语法相对比较简单和直接,比如说创建和文件myfile.txt相关联的 ADSs,只需简单的用冒号把文件名和ADSs名分开即可如:
D:\ads>echo This is an ADS >myfile.txt:hidden
那么这种问题和脚本安全有什么关系呢?80sec的xy7提供了如下的测试代码:
/*-----------------------------------------------------------------------------------------------------------------
$fp = fopen ("$_GET[a].txt", "a");
fwirte($fp,'80sec.com');
>
——————————————————————————————————————-*/
当提供一个80sec.php?a=x.php:的时候,在windows系统下会发现在当前目录创建了一个x.php文件,但是内容为空:)但是实际上这已经扰乱了程序的逻辑,生成php文件就是不允许的事情。那么到底怎么回事呢?用记事本执行
notepad x.php:.txt
就可以看到真实的文件路径。那么这个路径在其他文件操作函数是否可用呢?经过测试,像file_exists,include都可以使用这个路径,尽管这个路径在文件目录和dir命令下不可见,并且测试发现,在普通文件名里不允许的<>以及”等字符,在这个路径里是允许存在的,而这些字符就可能在文件操作时不注意而引发一些安全问题。
另外可以看到,这种文件可以很容易在windows系统里隐藏自己的某些代码,譬如将自己的后门代码隐藏在某个php文件里,然后可以在另外一个地方include进来执行,并且这种隐藏在脚本级别是无法查看的,必须借助相应的工具才能查看。
由于文件名的特殊性,可能可以bypass一些文件上传的安全检查,但是经过测试,我们发现并不能在apache和iis里对这种类型文件进行访问,所以即使能上传成功也许也并不能直接访问作为代码直接执行:)但是不排除一些windows下的其他http server能正确处理好这种文件名,而不发生问题,这种问题应该是windows的问题,所以在像其他脚本如asp里也应该是一样存在的。
本站内容均为原创,转载请务必保留署名与链接!
NTFS数据流和web安全[tips]:http://www.80sec.com/ntfs-web-security.html
NTFS数据流和web安全[tips]
精选 转载下一篇:我在入侵过程中注意到的细节(二)
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
TCP交互数据流 成块数据流数据 滑动窗口 客户端 接收端 窗口大小