实验记录-文件上传漏洞原理与利用-前端检测绕过-中国菜刀-文件管理
实验环境
实验工具
请访问http://tools.ichunqiu.com/c96dcd70下载实验工具
漏洞介绍
文件上传是Web应用中比较常见的功能,用户经常会通过文件上传的功能分享照片、修改头像或上传附件等操作。
文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务端命令的能力。
文件上传本身是一个网站正常的业务需求,但如果文件在上传之后,服务器端没有妥善的处理,就会导致严重的后果。
文件上传漏洞危害
上传的文件若为Web脚本语言,服务器的Web容器解释并执行了攻击者上传的脚本(Webshell),则会导致代码执行,致使攻击者获取网站甚至整个系统的控制权。
容易出现上传地方
头像上传
图片&视频分享
附件上传功能
文件管理器
实验
请在实验环境中使用突破JS,Content-Type突破上传PHP文件。
实验步骤
漏洞示例
漏洞环境演示如下:
首先,我们通过浏览器访问测试环境:
本地JS验证 和 后端Content-Type上传防御请访问http://127.0.0.1/upload/js/#
漏洞验证
尝试上传PHP文件,因为后端无任何过滤限制导致文件上传成功。
Content-Type判断上传文件类型
在上一个案例中的代码示例当然是不被允许的,所以有人会对上传文件的类型进行判断,加入了文件type验证用户上传类型,但是这样的文件类型判断,形同虚设,可以被轻松绕过。
漏洞验证
- 写入PHP一句话木马的代码,并保存为.jpg文件类型,打开实验环境上传。
可以看到被修改后的jpg文件已经上传成功,文件后缀为PHP。文件已上传到./update/SSRF.php。
漏洞防护
最佳防护代码
使用面向对象,编写相对严谨的上传upload class,每次上传调用,以从根本上防御文件上传漏洞,众多开源CMS也是利用次方式来解决文件上传问题。
服务端验证
客户端过滤,只能用于减轻服务器负担,提升服务器效率,服务端一切数据都可以伪造不可信, 在后端代码必须二次验证。
黑白名单过滤
快速解决方案
思考
学完此课请思考,除了上述三种突破上传的方法,你还有其他的办法进行上传拿Shell吗(比如利用系统特性)?
文件即使无法突破上传恶意PHP等脚本,请问结合那些Web漏洞结合利用呢?
-———–
访问网站 http://127.0.0.1/upload/js/#
发现有文件上传
尝试上传php一句话
无法上传
2.修改后缀名为jpg
配置burp
打开发现需要上传key
需要修改虚拟机主机为2014
开始-控制面板-日期和时间
重启burp
修改火狐浏览器代理
重启浏览器
点击
重新上传1.jpg文件
获取抓包信息
把
1.jpg修改成1.php
点击 intercept is on
上传成功 可以访问到