任意文件上传修复方案

任意文件上传修复方案

0x01. 漏洞危害

  1. 任意文件上传可能导致木马上传到服务器被执行,从而造成服务器入侵

  2. 大文件高频上传可能导致拒绝服务攻击

0x02. 利用案例

        cms 头像上传功能 + 数据库备份功能导致服务器入侵

  • 某cms头像上传处未校验上传文件格式,且将上传的资源存储在服务器web执行目录下的assets中
  • 黑客使用该cms时发现头像为校验上传文件格式,于是上传了一个木马,名为 a.php, 存储在assets目录中
  • 黑客尝试访问 http://www.test.com/assets/a.php 无法被执行,判断assets非web执行目录
  • 黑客发现了cms提供的一个数据库备份功能,可以选择数据库路径,备份到指定路径
  • 通过该备份功能,将木马文件从 assets 目录中复制到了 web执行目录下
  • 此时访问 http://www.test.com/a.php 木马执行成功
  • 服务器被黑客操控,沦为肉鸡

0x03. 通用修复方案

方案. 服务端进行文件类型检查

Step1

对上传文件名进行重置,可参照如下代码进行。

 

 

Step2

确保服务器上上传目的目录为不可执行,且不在web可执行目录下

Step3

对上传时文件格式进行校验

1. 情况1-图片类型文件

对图片文件进行格式校验,判断示例逻辑如下:

 

 

2. 情况2-其他类型文件

注意:以下措施需要全部完成

  • 判断对应文件后缀

  • 读取文件后,通过读取文件头16进制内容,判断文件类型,具体参考范围如下:

  •  

     

posted @ 2023-02-21 16:41  Legendary1  阅读(646)  评论(0)    收藏  举报