文件上传漏洞原理:
文件上传漏洞是指程序员对文件上传部分的控制不足或者处理缺陷,导致攻击者上传一个可执行的文件到服务器,越过其本身权限向服务器上传一个可执行的文件,(文件可以是木马,病毒,恶意脚本或者webshell等等,)
文件上传漏洞满足条件:
1、 文件上传功能能正常使用
2、 上传文件路径可知
3、 上传文件可以被访问
4、 上传文件可以被执行或被包含
打开dvwa靶场,级别调为low级别的
查看源码
发现它会把文件直接post进服务器,没有任何过滤什么的,这不是直接的把服务器的大门打开了吗,还是确认一下,找一张图片(001.png),上传进去看看
因为源码里面存在着basename的函数,这个函数会直接返回路劲中的文件名部分,所以文件上传到服务器的那个文件夹就返回出来了,我们来直接访问一下,看看效果直接访问上传的图片
直接就直接上传了我们的一句话木马,把这个小马上传到服务器,连接试试
上传成功,这里使用蚁剑对他进行连接可以看到,服务器上面的所有文件夹,这就达到了文件上传的利用效果,接下来的就是利用小马,上传功能更多的大马,从而可以得到服务器更大的权限
文件上传漏洞修复建议:
对客户端JavaScript校验(一般只校验文件的扩展名)
服务端校验
1、 文件头content-type字段校验(image/gif)
2、 文件内容头校验(GIF89a)
3、 目录路径检测(检测跟Path 参数相关的内容)
4、 文件扩展名检测(检测跟文件extension相关的内容)
5、 后缀名黑名单校验
6、 后缀名白名单校验
7、 自定义正则校验
8、上传文件路径只给只读和写权限,不需要执行权限。