文件上传漏洞——文件上传检测与绕过

文件上传检测与绕过分为

客户端检测与绕过  和  服务端检测与绕过(比较重要)

一、客户端检测与绕过

客户端:也被称为用户端(前端),与服务器相对应,由于客户端对文件上传漏洞的防御是通过JS来实现的,所以客户端检测与绕过也可以叫做JS/前端检测与绕过

1、检测原理:

2、绕过方法

原理(前提):由于后端的PHP代码没有对文件做任何检测,所以只要绕过前端的JS检验就可以上传Webshell

(1)、删除浏览器事件

1、输入地址:http://ip/upfile/1/upload.html

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

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

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

 5、根据提示,需要上传“jpg”的图片文件,点击“确定”返回上传页面,鼠标右击,点击“查看元素”

 6、定位到文件域位置,可以看到表单调用了selectFile()函数

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

 

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

 

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

uploading.4e448015.gif正在上传…重新上传取消

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

然后就可以上传一句话木马的脚本,与中国菜刀、蚁剑等连用


(2)、利用Burpsuite抓包更改文件后缀名

1、登录地址:http://ip/upfile/1/upload.html

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

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

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

前面的四个步骤跟上面一样,就不截图啦


5、根据提示,需要上传“jpg”的图片文件,打开桌面的的“Burp”文件夹,双击“BURP.cmd”启动Burp Suite抓包工具

6、切换到“Proxy”代理模块的“Options”,查看Bp的代理

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

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

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

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

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

 12、关闭浏览器代理

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


(3)、构造上传表单

1、登录地址:http://ip/upfile/1/upload.html

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

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

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

步骤还是跟上面一样,


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

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

 也就是把selecFile()函数那一部分去掉,然后改一下上传的位置(下图划线的位置)

7、双击1.html文件

 8、点击“浏览”,选择要上传的脚本文件info.php

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

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


这篇文章就先写到这里了!

服务端检测与绕过下篇文章写!

猜你喜欢

转载自blog.csdn.net/weixin_54055099/article/details/126951235