不安全的文件上传漏洞之MIME type验证原理和绕过

时间:2024-05-23 21:55:45

不安全的文件上传漏洞-服务端验证
MIME介绍
不安全的文件上传漏洞之MIME type验证原理和绕过
不同的文件类型,文件名是不一样的
$_FILES()函数
这个函数在你向服务器传输文件的时候可以向服务器传输一些信息
不安全的文件上传漏洞之MIME type验证原理和绕过
案例讲解
我们来到pikachu界面
不安全的文件上传漏洞之MIME type验证原理和绕过
我们可以先上传一张图片试试
不安全的文件上传漏洞之MIME type验证原理和绕过
不安全的文件上传漏洞之MIME type验证原理和绕过
没有问题,我们再上传一个.php的文件
不安全的文件上传漏洞之MIME type验证原理和绕过
被拒绝了
我们来看一下后台是怎样的
这边后台指定了只能上传jpg,jpeg,png这三个类型,并且调用函数来检查

不安全的文件上传漏洞之MIME type验证原理和绕过
我们来看一下这个函数是怎么写的
不安全的文件上传漏洞之MIME type验证原理和绕过
不安全的文件上传漏洞之MIME type验证原理和绕过
这里做了一个MIME type的验证,如果符合就会过去,不符合就会return一个对应的信息
不安全的文件上传漏洞之MIME type验证原理和绕过
这个地方的关键点就在于他通过$_FILES来获取了文件的类型,之后在把这个类型和他定义好的$_mime去进行了比较,这个问题出就出在FILES上,这个全局方法是从浏览器的http头里面获取了Content type,这是前段用户可以去控制的 。
我们来做一下对应的测试
还是先上传一个正常的图片,再传一句话木马
不安全的文件上传漏洞之MIME type验证原理和绕过
不安全的文件上传漏洞之MIME type验证原理和绕过
然后我们去抓包
这是我们上传图片提交成功的请求

不安全的文件上传漏洞之MIME type验证原理和绕过
它的content type 是imge jpeg 说明上传成功
下面这个就是我们上传失败的一句话木马
不安全的文件上传漏洞之MIME type验证原理和绕过
我们把这个数据包发送到repeat里面去
之后我们把它的content type换成是imge jpeg就行了
改掉之后去提交
不安全的文件上传漏洞之MIME type验证原理和绕过
不安全的文件上传漏洞之MIME type验证原理和绕过
我这个burp有乱码,这个是成功提交的提示
不安全的文件上传漏洞之MIME type验证原理和绕过
这样我们通过头的修改,绕过了这个限制,这个一句话木马上传成功以后,下面的步骤就一样了
不安全的文件上传漏洞之MIME type验证原理和绕过
不安全的文件上传漏洞之MIME type验证原理和绕过