Skip to content

文件上传安全问题

仲灏2022-01-13约 1 分钟

@[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函数, 压缩方式更改其大小, 这样就算是脚本, 里面的代码也会被破坏导致无法使用
  • 不可修改文件名后缀

讨论区

欢迎留下想法与补充