文件上传漏洞之客户端检测与绕过

声明

本次实验环境来源:深信服产业教育云平台

仅供学习交流使用,请勿用于非法用途,违者一律自行承担所有风险

实验原理

文件上传的客户端检测主要通过前端的JS代码获取文件后缀名进行验证,后端PHP代码没有对文件做任何检测,因此只需要绕过客户端检测。

客户端检测的绕过方法有三种:

1. 删除浏览器事件

2. 通过Burp Suite抓包修改后缀名

3. 伪造上传表单

实验一:删除浏览器事件

实验环境

操作机:Win10靶机:Apache + PHP

靶机:Apache + PHP(192.168.21.49)

实验步骤

靶机ip:192.168.21.49

1、登录操作机,打开浏览器,输入实验地址:http://ip/upfile/1/upload.html

 2、在操作机上准备要上传的文件(脚本文件),比如新建info.php文件

3、点击“选择文件”按钮,选中要上传的文件

4、点击“submit”按钮,文件上传失败

 5、根据提示,需要上传“jpg”的图片文件,点击“确定”返回上传页面,鼠标右击,点击“查看元素”.定位到文件域位置,可以看到表单调用了selectFile()函数

6、追溯到selectFile()函数,双击展开函数代码

7、从代码中可以分析出:表单调用JS代码的selectFile()函数,先获取上传文件的文件名,然后将文件名转换为小写,再通过substr函数截取文件后缀名(包括.)进行判断。所以只需要不调用该JS代码,删除浏览器事件,即οnsubmit=" "

 8、点击“submit”按钮,再次上传文件,脚本文件成功上传

9、访问http://ip/upfile/1/upload/info.php,上传的脚本文件成功解析

 

删除浏览器事件实验总结:

通过实验掌握文件上传的客户端检测原理以及通过删除浏览器事件,绕过JS代码的限制

实验二:抓包修改后缀名

实验环境

操作机:Win10

靶机:Apache + PHP(192.168.22.37)

实验步骤

1.登录操作机,打开浏览器,输入实验地址:http://ip/upfile/1/upload.html

2.在操作机上准备要上传的文件(脚本文件),比如新建info.php文件

3.点击“选择文件”按钮,选中要上传的文件,点击“submit”按钮,文件上传失败

4、根据提示,需要上传“jpg”的图片文件,打开桌面的的“Burp”文件夹,双击“BURP.cmd”启动Burp Suite抓包工具,切换到“Proxy”代理模块的“Options”,查看Bp的代理

 

5、切换到浏览器,选择火狐插件中的代理(配置浏览器的的代理),与Bp的代理一致 

 

6、客户端只能上传jpg文件,将脚本文件test.php更改后缀名为test.jpg,再选中文件

7、点击“submit”按钮,再次上传文件,Bp成功抓取数据包

8、将数据包中的后缀名再改为php,绕过客户端的检测

9、点击“Forward”,转发数据包,切换到浏览器,脚本文件成功上传

 

10、关闭浏览器代理,访问http://ip/upfile/1/upload/test.php,上传的脚本文件成功解析

 

抓包修改后缀名实验总结

掌握文件上传的客户端检测原理以及通过Burp Suite抓包工具抓取数据包,修改文件后缀名绕过JS代码的限制。

 

 实验三:伪造上传表单

实验环境

操作机:Win10

靶机:Apache + PHP(192.168.22.101)

实验步骤

1、登录操作机,打开浏览器,输入实验地址:http://ip/upfile/1/upload.html

2、在操作机上准备要上传的文件(脚本文件),比如新建1.php文件

 3、点击“选择文件”按钮,选中要上传的文件,点击“submit”按钮,文件上传失败

4、右击,点击“查看页面源代码” 

5、可以看到表单调用了JS代码的selectFile()函数做过滤限制,并且表单提交到upload.php页面,所以伪造一个没有做任何过滤限制的表单同样提交到http://ip/upfile/1/upload.php即可,新建1.html文件

 6、双击1.html文件,点击“浏览”,选择要上传的脚本文件1.php,点击“submit”按钮,再次上传文件,脚本文件成功上传

 7、访问http://ip/upfile/1/upload/info.php,上传的脚本文件成功解析

 

伪造上传表单实验总结

掌握文件上传的客户端检测原理以及通过伪造一个没有做任何限制的表单,数据依然提交到http://ip/upfile/1/upload.php,绕过原来的JS代码的限制。

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
文件上传漏洞指的是攻击者可以通过上传恶意文件来执行任意代码或者获取服务器上的敏感信息。在前端检查方面,可以通过以下步骤来检查和防止文件上传漏洞的发生: 1. 检查文件类型:客户端可以通过对文件类型的检查来防止用户上传恶意文件。这可以通过在前端使用JavaScript来实现,或者通过使用一些第三方库来实现。在检查文件类型时,应该使用白名单的方式来限制允许上传的文件类型。 2. 检查文件大小:客户端可以通过对文件大小的检查来限制用户上传过大的文件。这可以通过在前端使用JavaScript来实现。 3. 检查文件名称:客户端可以通过对文件名称的检查来防止用户上传含有恶意脚本的文件。这可以通过在前端使用JavaScript来实现。 但是,这些前端检查都可以被攻击者绕过,因此还需要在服务器端进行进一步的检查和过滤。在服务器端,可以采取以下措施来防止文件上传漏洞的发生: 1. 验证文件类型:在服务器端,应该再次验证文件类型,以确保文件类型符合预期。 2. 验证文件大小:在服务器端,应该再次验证文件大小,以确保文件大小符合预期。 3. 验证文件内容:在服务器端,应该对文件内容进行检查,以确保文件中不包含恶意代码或者其他危险内容。 总之,前端检查只是一种基本的防御措施,但是还需要在服务器端进行更加严格的检查和过滤,以确保文件上传漏洞不会发生。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值