文件上传漏洞原理:
现在很多web应用程序中允许上传图片,文本或者其他资源到指定的位置,文件上传漏洞就是利用这些可以上传的地方将恶意代码植入到服务器中,然后通过url去访问以执行代码。
防范措施
对于上传文件的后缀名(扩展名)没有做较为严格的限制(可绕过)
对于上传文件的MIMETYPE 没有做检查
权限上没有对于上传的文件的文件权限,(尤其是对于shebang类型的文件)
web server对于上传文件或者指定目录的行为没有做限制
绕过方式
-
1修改前端JS代码或抓包
-
检测拓展名,如果不合法,则拒绝这次上传,一般有两种策略:黑名单和白名单,白名单策略是更加安全的,通过限制上传类型为只有我们接受的类型,可以较好的保证安全,因为黑名单我们可以使用各种方法来进行注入和突破。
-
Nginx空字节漏洞 xxx.jpg%00.php 这样的文件名会被解析为php代码运行
-
Apache的解析漏洞,上传如a.php.rar a.php.gif 类型的文件名,可以避免对于php文件的过滤机制,但是由于apache在解析文件名的时候是N从右向左读,如果遇到不能A识别的扩展名则跳过,rar等扩展名是apache不能识别的,因此就会直接将类型识别为php,从而达到了注入php代码的目的
检查HTTP Header中的Content-Type(很不安全),HTTP协议规定了上传资源的时候在Header中加上一项文件的MIMETYPE,来识别文件类型,这个动作是由浏览器完成的
MIMETYPE
可以通过抓包的方式进行中间人攻击(BP)
============================================
找到了一位师傅的Writup
文件上传进阶