一、介绍
目录遍历,主要源于服务器端程序在处理用户提供的文件名或路径参数时,未能实施充分的安全验证和过滤,从而使得攻击者能够利用特殊的字符序列(如“../”、“..\”等)来逐步递归地跳出预期的文件夹层次,达到遍历和探索服务器文件系统的目地。
二、目录遍历
很简单的关卡,按照提示点击蓝色文章标题,然后观察url。
文章本身不重要,重要的是传入的参数title,参数值为jarheads.php,这看起来和这篇文章的标题有关,那不妨猜测这个文件的内容会被显示到页面下方。那么我们使用../构造路径访问其它目录中的文件,这里就直接访问上级目录中的概述文件,传入参数../dir.php。
这样就成功通过这个方法访问了上级目录中文件。
但要注意的是,这里是因为dir.php文件中有可以显示的内容,才能看到明显的回显。如,上级目录中还有一个文件dir_list.php,我们可以尝试传入这个文件../dir_list.php,就会发现显示的是一个空白的界面,这是因为这个文件没有符合类型的显示内容,但目录遍历还是被成功触发了的。
三、修复方法
严格的输入验证:对所有用户可控的文件名或路径参数进行严格的白名单或黑名单验证,禁止包含任何可能导致路径遍历的特殊字符。
最小权限原则:为Web应用程序和其运行账户分配仅够完成任务所需的最低权限,避免它们能直接访问或操作敏感文件和目录。
安全的文件操作函数:使用安全的文件操作函数或库,确保它们能正确处理路径并防止路径遍历。例如,使用绝对路径而非相对路径来定位文件,或者使用系统提供的API来规范化路径。
调整配置文件:禁止Web服务器的目录索引功能,避免直接列出目录内容;设置恰当的文件和目录权限,防止未经授权的访问。
定期代码审计:查找并修复可能导致目录遍历的逻辑错误;保持应用程序和其依赖项的版本更新,利用安全补丁修复已知漏洞。
四、后记
好短的模块,貌似接下来的几关也都是一关就结束了,但是有没有什么特别深的联系,所以还是单独分开来写好了,下篇文章再见:3
Comments | NOTHING