任意文件上传修复方案
任意文件上传修复方案
0x01. 漏洞危害
-
任意文件上传可能导致木马上传到服务器被执行,从而造成服务器入侵
-
大文件高频上传可能导致拒绝服务攻击
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进制内容,判断文件类型,具体参考范围如下:

浙公网安备 33010602011771号