文件上传安全问题
@[toc] 漏洞只能减少, 无法根除, 本文只初步介绍常见的攻击手段及客户端的基本防御
# 攻击手段及原理
上传文件是WebShell时,攻击者可通过这些网页后门执行命令并控制服务器;
上传文件是其他恶意脚本时,攻击者可直接执行脚本进行攻击;
上传文件是恶意图片时,图片中可能包含了脚本,加载或者点击这些图片时脚本会悄无声息的执行;
上传文件是伪装成正常后缀的恶意脚本时,攻击者可借助本地文件包含漏洞(Local File Include)执行该文件。如将bad.php文件改名为bad.doc上传到服务器,再通过PHP的include,include_once,require,require_once等函数包含执行。
# 客户端问题(非第三方工具 NC Fidder等上传工具)
- 文件上传检查不严, 没有进行文件格式检查
- 例如: .php .Php .pHp等
- 文件名没有检查
- 例如: xxx.php%00.jpg, (%00为十六进制的0x00字符, 对于服务器来说,因为%00字符截断的关系,最终上传的文件变成了xxx.php)
- 有修改文件名功能是带了后缀( 先传输.jpg后, 改文件名是把文件后缀更换为 .php)
# 抵御方法
- 检查文件名后缀(注意大小写, 可先统一转换小写或是大写)
- 重构文件名称(防止 xxx.php%00.jpg这种类型)
- 若是图片, 使用resize函数, 压缩方式更改其大小, 这样就算是脚本, 里面的代码也会被破坏导致无法使用
- 不可修改文件名后缀
上次更新: 2022/06/05, 20:31:36