文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像、
上传附件等等。当用户点击上传按钮后,后台会对上传的文件进行判断
比如是否是指定的类型、后缀名、大小等等,然后将其按照设计的格式进行重命名后存储在指定的目录。
如果说后台对上传的文件没有进行任何的安全判断或者判断条件不够严谨,则攻击着可能会上传一些恶意的文件,
比如一句话木马,从而导致后台服务器被webshell。 所以,在设计文件上传功能时,一定要对传进来的文件进行严格的安全考虑。比如:
--验证文件类型、后缀名、大小;
--验证文件的上传方式;
--对文件进行一定复杂的重命名;
--不要暴露文件上传后的路径;
这里我们进行第一部分,
把安全检测放在前端,一般位于前端的安全检测都不安全。
首先先暴力攻击一下,
直接上传攻击脚本。
<?php @eval($_POST['hack']); ?>
发现竟然被前端给拦截了。
这说明前端检测使用了白名单。
这是一种方法,但并不能完全安全。
所以我们可以修改白名单,从而达到绕过的作用。
修改好后,重新上传。
之后便成功了。