目录遍历是一种HTTP漏洞,黑客利用Web服务器上的软件访问服务器根目录以外的目录中的数据。如果尝试成功,威胁参与者可以查看受限制的文件或在服务器上执行命令。
这种类型的攻击通常使用web浏览器进行。任何无法验证web浏览器输入数据的服务器都容易受到目录遍历攻击。
目录遍历也被称为目录爬升、回溯和文件路径遍历漏洞。目录遍历类似于结构化查询语言注入和跨站点脚本,因为都涉及代码注入。
以下技术有助于降低目录遍历风险:
Web 服务器编程仔细;
安装软件更新和补丁;
过滤来自浏览器的输入;
使用漏洞扫描程序。
网络攻击者通过猜测来找到Web服务器上受限制文件的路径。但是,熟练的攻击者可以搜索目录树,并在保护不充分的服务器上轻松执行这种攻击。
执行目录遍历攻击只需要少量资源,包括:
访问网页浏览器;
对在哪里查找目录有一定的了解;
HTTP (Hypertext Transfer Protocol)请求的基本知识。
一旦攻击者访问了根目录,他们就可以进入计算机系统的其他部分。他们还可以读写服务器上的任意文件,使他们能够操纵应用程序和相关数据,读取密码文件等敏感信息或控制服务器。正常情况下,用户无法访问Web根文件夹以外的任何文件。
攻击者还可以获得对访问控制列表 (ACL) 的控制权,管理员使用这些列表向用户授予各种级别的文件访问权限。通过访问 ACL,攻击者可以冒充系统中的特权用户来造成损害。
以下是手动检查目录遍历漏洞的两种方法:
输入向量枚举。枚举告诉测试人员Web应用程序的哪些部分可能容易受到绕过输入验证的尝试攻击。测试人员识别应用程序中接受用户输入的部分,包括POST和GET调用、文件上传和超文本标记语言表单。
常见模式。安全专业人员可以在应用程序的 URL 结构中查找常见模式,以识别目录遍历漏洞。如果应用程序使用查询字符串参数指定文件路径,则攻击者可能能够操纵此参数来访问预期路径之外的文件。搜索引擎还可用于查找可能包含文件名的 URL。
自动化工具还用于检查遍历漏洞。这些工具执行以下测试:
静态应用程序安全测试。静态测试是白盒测试,在应用程序未运行时检查源代码中的漏洞。
动态应用程序安全测试。动态测试工具在应用程序运行时检查代码中的漏洞。通过使用黑盒测试的应用程序前端完成,无需访问源代码。在应用程序代码运行时执行安全检查,就像正在使用程序一样。另外模糊测试通过提交格式错误的数据来发现目录遍历漏洞。
防止这类路径遍历攻击的有效方法是避免将用户输入传递到文件系统应用程序编程接口(API)。浏览器过滤和用户输入不足会使web应用程序和web服务器文件容易受到遍历攻击。
如果无法避免将用户输入传递到文件系统 API,则以下为有助于防止目录遍历的其他措施:
清理用户输入。清理用户输入确保只有应该提交的内容才会被发送到服务器。理想情况下,应该将经过验证的输入与允许输入值的允许列表进行比较,例如允许的字符串列表。
更新 Web 服务器软件。安装所有更新和补丁,这样攻击者就无法利用已知的漏洞。
隔离文档。使用云存储或将文档托管在单独的文件服务器上,以便将包含敏感材料的目录与公共信息目录分开。
使用索引。在url中使用索引比使用原始文件名更安全。索引在攻击者和文件之间增加了一层抽象,因为索引不能像原始文件名那样让攻击者直接访问文件。
参读链接:https://www.techtarget.com/searchsecurity/definition/directory-traversal
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70000012/viewspace-3001200/ ,如需转载,请注明出处,否则将追究法律责任。