上传
文件上传漏洞正是在文件上传功能中,由于对用户上传的文件数据未做有效检测或过滤不严,导致上传的恶意文件被服务端解释器解析执行,利用漏洞可获取系统控制权。
它的基本流程是首先上传文件,然后回显,再次访问上传的文件,上传的文件被当成程序解析。当我们上传的是php类的文件的话就会被浏览器解析执行。
上传漏洞防御
对于上传漏洞的修复和防御,可以从以下几方面入手:
- 严格检测上传文件后缀名、文件头、Content-type,尽量采用白名单方式限制。
- 重编码文件,比如对图片或视频做转换处理。
- 限制文件大小,避免被恶意上传大文件造成存储空间不足,进而网站无法正常运行。
- 在服务端本地检测 Webshell,发现后告警出来,人工确认后再删除,同时排查是否为外部入侵导致的,查日志去追踪可能存在的漏洞来源。
- 使用 WAF 拦截木马的上传,这种可能比较容易被绕过。
- 使用 RASP 在服务端中对于执行脚本的关键函数进行 hook,比如 php eval,在触发外部数据输入执行时就告警和阻断。
- 限制上传目录可不解析,不同的服务器有不同的配置方式,比如 Nginx 可按如下方式配置。
js
location ~* ^/uploads/.*\.(php|php5)$
{
deny all;
}
- 上传文件重命名,建议使用随机文件名。
- 隐藏上传文件路径相关信息,比如关闭错误回显。