1、Any File Read(任意文件读取)
1.1、描述:
- 任意文件读取漏洞(Unrestricted File Upload),是一种常见的Web安全漏洞,因Web程序提供的文件查看下载、附件下载等功能存在安全缺陷,导致通过修改文件路径就能够查看和下载任意文件,这些文件包括:源代码文件、系统文件(/etc/passwd、C:/boot.ini等)、配置文件(config.php、/WEB-INF/web.xml、web.config等),造成网站敏感信息泄露,严重危害网站安全。
1.2、审计方法:
全局搜索以下关键词:
“fileName”,
“filePath”,
“getFile”,
“getWriter”,
“MultipartFile”,
“createNewFile”,
“FileInputStream”
1.3、漏洞示例:
- 代码在 downloadFile()函数中获取请求参数中的affixalName的值,然后赋值给 FileName 变量,接着在 196 行处通过拼接字符串赋值给downPath 变量,然后在 198 行处调用 download 函数并把 downPath 的值传进函数,download 函数的代码如下:
- download 函数把 filePath 处的文件写到 http 响应中,在整个流程中并没有对文件名的合法 性进行检查,存在任意文件下载漏洞,如通过把 affixalName 的值设置 为../../../WEB-INF/web.xml 可以下载网站的 web.xml 文件。

1.3、漏洞危害:
- 任意文件读取是属于文件操作漏洞的一种,一般任意文件读取漏洞可以读取的配置信息甚至系统重要文件。严重的话,就可能导致SSRF,进而漫游至内网。
1.4、修复方案:
- 指定下载路径以防止用户读取和下载指定目录以外的文件。