文件操作漏洞
一、漏洞简述
文件操作是网站的核心功能之一,类似头像的上传修改,但是由于开发人员忽略了一些细节,导致攻击者可以利用这些细节通过文件操作网站本身的这个功能,从而实现网站任意文件上传、下载、包含、删除等漏洞
二、漏洞分类
1、文件包含漏洞
1、本地文件包含
2、远程文件包含
在php中通过相关函数include()、include_one()、require()、require_one(),包含模板文件,如何参数过滤不严格,尝试修改参数值为敏感文件路径,从而形成任意文件包含漏洞
include 引入文件的时候,如果碰到错误,会给出提示,并继续运行下边的代码。
require 引入文件的时候,如果碰到错误,会给出提示,并停止运行下边的代码。
include_once()、require_once()会在包含时先判断文件是否存在,已经包含过了,就不在包含,以达到节约资源,避免重复定义
2、文件下载漏洞
文件下载漏洞和文件读取漏洞差别不是很大,简单来讲,网站在文件下载或读取时,读取的参数filename直接在请求里传递,没有做严格过滤,参数可控,从而网站获取文件路径直接读取或下载形成此漏洞
文件读取相关函数
file_get_contents、highlight_file、fopen()等
3、文件上传漏洞
文件上传漏洞是比较经典的一种漏洞,是指攻击者利用系统对文件验证处理过滤的缺陷,将恶意的文件上传至网站服务器上进行利用
Php相关函数move_uploaded_file
过滤方式
1、前端过滤:文件名、content-type
2、后端过滤:黑名单、白名单
4、文件删除漏洞
文件删除漏洞常出现在文件管理功能的应用上,漏洞原理与文件读取或下载漏洞相似,差别在与相关函数不一样。
Php相关函数unlike
三、修复建议
1、白名单
2、随机文件名
3、避免目录跳转过滤危险字符
4、禁止访问敏感路径
5、开发时文件读取下载功能尽量避免用户输入参数的值,做好严格过滤