网络安全Java代码审计实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.4 目录穿越漏洞

2.4.1 目录穿越漏洞简介

目录穿越(遍历)漏洞在Web应用程序中也是一种较为常见的漏洞,其往往出现在需要用户提供路径或文件名时,如文件下载。在访问者提供需要下载的文件后,Web应用程序没有去检验文件名中是否存在“../”等特殊字符,没有对访问的文件进行限制,导致目录穿越,读取到本不应读取到的内容。

如图2-64所示,Web应用程序的正常功能允许用户通过filename下载/www/file/file.txt文件,但是如果没有控制好filename参数传入的值,就有可能通过../../../etc/passwd这种方式进行目录穿越,下载到非预期的/etc/passwd文件。漏洞危害:获取敏感信息、下载任意文件等。

图2-64 目录穿越漏洞

目录穿越漏洞产生的本质是路径可控,一旦涉及文件的读取问题便会涉及java.io.File类,因此在审计这类漏洞时可以优先查找java.io.File引用,并根据经验来判断Paths、path、System.getProperty("user.dir")等各类可能会用来构造路径的关键字。

若项目采用Spring MVC这类框架也可以先查看一下路由,判断是否存在如path之类的路由,如图2-65所示。

图2-65 项目路由情况