产生原理:
对用户上传文件的后缀没有进行严格的限制,导致可以上传webshell后门。
主要分为黑名单限制和白名单限制。
黑名单:
规定用户不允许上传.php、.php5、.phtml、.asp、.aspx、.jsp等后缀文件
白名单:
规定用户允许上传.jpg、.png等后缀文件
产生地方:
头像上传、文件上传等功能处。
靶场练习upload-lab:
第一关:
通过上面截图,可以判断为前端js校验。
方法一:禁用JavaScript
方法二:通过burpsuit抓包,修改后缀为.php
上传文件为pass01.jpg,通过抓包修改后缀
文件上传成功。
方法三:由于是前端验证,我们可以修改前端代码,使我们上传的文件通过校验。
将checkFile()删除,改成action=" 之前复制的网页"。
第二关:后端验证--content-type验证
方法:通过burpsuit抓包修改
文件上传成功。
第三关:后端验证,黑名单限制
但是默认情况下 .phtml .php3 .php4 .php5这些都有可能会被当作.php执行。