实验记录-文件上传漏洞原理与利用-前端检测绕过-中国菜刀-文件管理

实验环境

实验工具

请访问http://tools.ichunqiu.com/c96dcd70下载实验工具

漏洞介绍

文件上传是Web应用中比较常见的功能,用户经常会通过文件上传的功能分享照片、修改头像或上传附件等操作。

文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务端命令的能力。

文件上传本身是一个网站正常的业务需求,但如果文件在上传之后,服务器端没有妥善的处理,就会导致严重的后果。

文件上传漏洞危害

上传的文件若为Web脚本语言,服务器的Web容器解释并执行了攻击者上传的脚本(Webshell),则会导致代码执行,致使攻击者获取网站甚至整个系统的控制权。

容易出现上传地方

头像上传

图片&视频分享

附件上传功能

文件管理器

实验

请在实验环境中使用突破JS,Content-Type突破上传PHP文件。

实验步骤

漏洞示例

漏洞环境演示如下:

首先,我们通过浏览器访问测试环境:

img

本地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一句话

img

无法上传

2.修改后缀名为jpg

配置burp

打开发现需要上传key

img

需要修改虚拟机主机为2014

开始-控制面板-日期和时间

重启burp

img

修改火狐浏览器代理

img

重启浏览器

点击

重新上传1.jpg文件

img

获取抓包信息

img

1.jpg修改成1.php

点击 intercept is on

img

上传成功 可以访问到

img