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


    文件上传检测与绕过分为

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

    一、客户端检测与绕过

    客户端:也被称为用户端(前端),与服务器相对应,由于客户端对文件上传漏洞的防御是通过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,上传的脚本文件成功解析

     


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

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

  • 相关阅读:
    18 【节点的关系和内部操作】
    深度学习-一个简单的深度学习推导
    仿GitLab MR 是的对比文件内容,可以动态显示,隐藏没有变化的文件内容
    李开复:我家的AI是坠吼的
    【云原生】设备云之云服务器的配置与使用
    MATLAB | 艺术就是画圈圈
    Java_Validation分组校验
    定义头文件如何避免被重复引用
    华为fusionInsigtht集群es连接工具
    服务管理与通信,基础原理分析
  • 原文地址:https://blog.csdn.net/weixin_54055099/article/details/126951235