物理路径泄露的探讨

来源:百度文库 编辑:神马文学网 时间:2024/04/30 05:39:57
日期:2005-5-21 2:55:54 来源: 编辑: 点击:
原理
物理路径泄露属于低风险等级缺陷,它的危害一般被描述为“攻击者可以利用此漏洞得到信息,来对系统进一步地攻击”。提供Web、FTP、SMTP等公共服务的服务器都有可_flash_software.html" frameBorder=0 width=360scrolling=no height=300> 能出现物理路径泄露的问题。
我们比较常见的是Web服务器的路径泄露。导致Web服务器路径泄露的原因很多,可能是Web平台本身、脚本语言解释器、引擎插件、组件、辅助程序等一些原因造成的,也有可能是脚本编写错误所导致的。
很多时候,攻击者会精心构造一个畸形、超长或不存在的文件请求,而这个请求是Web服务器没有预料且不能正确处理的,这时往往会返回出错信息——最直观的就是暴露物理路径。
譬如,对于很多CGI论坛来说,提交一个不存在的CGI文件请求,或者提交一个没有输出的CGI文件的请求,服务器就会将网站本身所有的物理路径给暴露出来。笔者做过很多试验,非常轻松就拿到了对方网站的物理路径。
危害
得到物理路径到底有什么用?这是很多攻击者关心的问题。有些时候它能给攻击者带来一些有用的信息,比如说:可以大致了解系统的文件目录结构;可以看出系统所使用的第三方软件;也说不定会得到一个合法的用户名(因为很多人把自己的用户名作为网站的目录名)。
防范方法
漏洞虽小,但“千里之堤,溃于蚁穴”。防范方法也是有的,这里选用IIS来讲解。首先你得保证使用最新版本并打了最新补丁,包括IIS、脚本语言解释器(如Activeperl)、引擎插件、组件、辅助程序;其次是配置方面的问题,一定要查看“文件是否存在”选项是否存在。
具体操作:“IIS→站点→属性→主目录→配置→应用程序映射→编辑→检查文件是否存在”。这样做不仅可避免“请求不存在文件”时泄露路径,还可阻挡一些其它攻击,如拒绝服务或溢出攻击。
还记得绿盟发现的ActivePerl所带的一个动态链接库(perllS.dll)在处理超长文件名时存在的一个缓冲区溢出漏洞吗?最简单的解决方法就是禁止服务器检查文件是否存在,再者便是要求程序员编写规范脚本,这也是很重要的。
错误处理是各种语言编程中一个很重要的部分,虽然每种语言都提供了完善的出错处理函数,但你也得正确使用它。如Perl中的“die”函数,如果没有在错误信息后面加上“\n”的话,就很可能会导致物理路径泄露。然而,脚本程序员却一直忽略了这些问题,任何时候程序员都应该充分考虑,给出完整的出错处理方案。
物理路径泄露很危险,要彻底完整地分析它需要很多方面的知识,可惜一直没人来专门讨论这个话题。笔者今天在此起个抛砖引玉的作用,希望与在这方面有比较深入研究的朋友继续讨论。