文件上传漏洞基础入门/从0到1/非常基础

这几天一直在搞sql注入靶场,写了几关,最新专栏文件上传漏洞来啦

目录

一、文件上传

文件上传

文件上传流程

二、文件上传漏洞

文件上传漏洞的必要条件

防护手段(上传流程中检测)

三、无防护的文件上传演示

四、绕过前端js检测上传

js绕过手段

绕过演示


一、文件上传

文件上传

文件上传是网站的常见功能,多用于上传照片、视频、文档等许多类型文件

文件上传流程

①前端选择文件,进行提交

②浏览器形成POST MultiPart报文发送给服务器

③服务器中间件接收到报文,解析后交给相关后端代码进行处理

④后端代码将上传的文件内容写入到临时文件中(PHP特有)

⑤写入到文件中,文件名为提交的文件名或以一定规则生成的文件名

二、文件上传漏洞

当文件上传点未对上传的文件进行严格的验证和过滤时,就容易造成任意文件上传,包括上传动态文件(asp/php/jsp等)

如果上传的目标目录没有限制执行权限,导致所上传的动态文件如webshell可以正常执行并且可以访问,即造成了文件上传漏洞

文件上传漏洞的必要条件

①存在上传点

②可以上传动态文件

③上传目录具有执行权限,并且上传的文件可执行

④可访问到上传的动态文件

防护手段(上传流程中检测)

前端提交时:JavaScript检测 Flash AS检测

数据传输时:WAF拦截 IPS拦截

后端处理时:扩展名检测 文件格式检测 MIME TYPE检测 内容检测

写入文件系统时:文件重命名 杀毒软件查杀

访问文件时:限制执行权限 文件上传到未知位置

三、无防护的文件上传演示

使用了中国剑蚁、DVWA中low级别的文件上传漏洞

中国剑蚁的安装可以看这个博主

构造php文件

 先测试一下漏洞,phpinfo()是查看php信息的函数

直接上传并访问

 注意这里的路径有两个../意思是回到上层目录,也就是回到了/dvwa

所以文件上传到/dvwa/hackble/uploads/test.php

直接访问一下

 看到这个页面就说明上传成功啦

下一步上传一句话木马,用中国剑蚁连接

 一句话木马还是比较简单的,网上一搜就有,这里是针对php的一句话木马

直接上传并访问

报错了不要慌,打开剑蚁

 

 添加数据 输入url 密码为cmd

测试连接,连接成功

 

已经进入网站目录啦,可以对网站数据进行更改!

可以看到文件上传漏洞的威力非常巨大!

四、绕过前端js检测上传

前端的防护中,也许会对上传的文件的后缀名进行检测,判断是否为上传的格式,如头像上传处检测是否为png/jpg/jpeg文件等等。如果上传的格式不对,则会弹出提示文字,此时上传失败

upload-labs靶场举例

可以看到,只让上传jpg/png/gif文件

js绕过手段

①F12查看网页元素,将校验文件后缀名的文件或函数删除,则可以直接进行上传

②先将恶意文件的后缀名改为要求的后缀,再进行抓包修改

绕过演示

①删除校验文件/函数

看到checkFile()函数


    function checkFile() {
        var file = document.getElementsByName('upload_file')[0].value;
        if (file == null || file == "") {
            alert("请选择要上传的文件!");
            return false;
        }
        //定义允许上传的文件类型
        var allow_ext = ".jpg|.png|.gif";
        //提取上传文件的类型
        var ext_name = file.substring(file.lastIndexOf("."));
        //判断上传文件类型是否允许上传
        if (allow_ext.indexOf(ext_name) == -1) {
            var errMsg = "该文件不允许上传,请上传" + allow_ext + "类型的文件,当前文件类型为:" + ext_name;
            alert(errMsg);
            return false;
        }
    }

可以看到这里就是用来检查后缀的js代码,直接给它删了

上传test.php

 上传成功了

访问一下upload/test.php 

成功了

②抓包

将test.php 改为test.png开启抓包

先删掉前面传的内容

开启抓包

 上传test.png

在抓包中修改,ps localhost和127.0.0.1只能抓到上面那部分,也不知道为啥,用自己的ip就可以啦

放包,访问

 上传成功! 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白帽Chen_D

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值