CVE-2018-18888漏洞分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_27868757/article/details/84071919

CVE-2018-18888漏洞分析

本漏洞发现于PHP开源框架laravelCMS

其中 \app\Http\Controllers\Backend目录下的ProfileController.php文件中关于文件上传的过滤与限制部分源代码如下

if ((($_FILES["avatar"]["type"] == "image/png") || ($_FILES["avatar"]["type"] == "image/jpeg") || ($_FILES["avatar"]["type"] == "image/pjpeg")) && ($_FILES["avatar"]["size"] < 1000000)) { if ($_FILES["avatar"]["error"] > 0) { return 1; } else { move_uploaded_file($_FILES["avatar"]["tmp_name"], 'uploads/' . $_FILES["avatar"]["name"]); $data = [ 'avatar' => "http://leslie.net.cn/uploads/" . $_FILES["avatar"]["name"], ];

在这里只是单纯地通过http请求中的content-type类型来对文件上传类型进行限制,攻击者在利用过程中可使用burpsuite来修改content-type来绕过文件上传的格式验证

防范方法:

1.白名单方式过滤文件扩展名,使用in_array或者(===)针对用户上传文件的扩展名进行比对

2.在用户上传文件的时候重命名文件,可以使用类似于MD5(time()+rand(1,100000))这种时间戳与拼接随机数的MD5值的方式

猜你喜欢

转载自blog.csdn.net/qq_27868757/article/details/84071919