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


    文件上传检测与绕过分为

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

    一、客户端检测与绕过

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

     


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

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

  • 相关阅读:
    ATFX:美股持续走高,空头趋势或将终结?
    14:00面试,14:06就出来了,问的问题有点变态。。。
    前端——一些js的代码
    MFC-网络编程TCP服务端(NBlockSocket)
    孔乙己第一问之服务通信知多少?
    面试官:请说一下如何优化结构体的性能?
    Spring Data JPA 项目配置与QueryDSL集成
    项目报:warn to appenders could be found for logger(org.apache.calcite.sql2rel)
    亚远景科技-ASPICE评估输入
    力扣第51题 N 皇后 c++ 难~ 回溯题
  • 原文地址:https://blog.csdn.net/weixin_54055099/article/details/126951235