文件上传-绕过JS前端验证

        小伙伴们大家好!本期为大家带来的文件上传之绕过JS前端验证。

目录

测试网站的功能是否正常 

尝试上传webshell

通过抓包绕过JS验证

通过修改前端的代码绕过JS验证

使用webshell连接工具进行连接

总结


这里我是自己写了两段代码做的一个小靶场,通过这个案例来讲解文件上传如何绕过JS的前端验证。

源码:

1.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JS检查文件后缀</title>
</head>
<body>
    <script type="text/javascript">
        function selectFile(file) {
            var filename = file.value;
            var mime = filename.toLowerCase().substr(filename.lastIndexOf("."));
            if (mime != ".png") {
                alert("请选择png格式的照片上传");
                file.outerHTML = file.outerHTML
            }
        }
    </script>
    <center>
        <form action="file01.php" method="post" enctype="multipart/form-data">
            <label for="file">请上传png格式图片:</label>
            <input type="file" name="file" id="file" onchange="selectFile(this)"/><br/>
            <input type="submit" name="submit" value="上传" />
        </form>
    </center>

</body>
</html>

 file01.php

<?php

    if ($_FILES["file"]["error"] > 0) {
        echo "Return Code:".$_FILES["file"]["error"]."<br/>";
    } else {
        echo "<center><br/>";
        echo "upload: ".$_FILES["file"]["name"]."<br/>";
        echo "type: ".$_FILES["file"]["type"]."<br/>";
        echo "size: ".($_FILES["file"]["size"] / 1024)."<br/>";
        echo "Temp file: ".$_FILES["file"]["tmp_name"]."<br/>";
        if (file_exists("upload/".$_FILES["file"]["name"])) {
            echo $_FILES["file"]["name"]." already exists. ";
        } else {
            move_uploaded_file($_FILES["file"]["tmp_name"],"upload/".$_FILES["file"]["name"]);
            echo "Stored in: "."upload/".$_FILES["file"]["name"];
        }
        echo "</center>";
    }

测试网站的功能是否正常 

我们首先检查该网站的功能是否正常,看是否能够顺利的上传文件。

我们这里先上传一张png格式的图片

OK网站的功能正常可以成功实现文件上传。

尝试上传webshell

我们上传一下php类型的文件试一下,文件的内容为一句话木马。

通过抓包绕过JS验证

这样我们可以通过burpsuite抓包,修改数据包中的数据来绕过前端的JS验证。

我们先将2.php的后缀改为png格式,即:2.png

然后我们开启burpsuite抓包,选择文件上传。

 这时候我们只需要将2.png再重新改为2.php就可以顺利绕过前端的JS验证了。

然后点击forward发送就行了。

回到浏览器我们看到,我们上传的php文件已经正常的上传成功。

通过修改前端的代码绕过JS验证

这里呢,我们还有另外一种方法,修改审查元素中的html的代码,将验证的那段代码删除掉即可。

使用webshell连接工具进行连接

接下来我们就可以使用中国菜刀或者中国蚁剑来接我们写的一句话木马(webshell)。 

我这里使用的中国蚁剑。

我们输入上传的php文件的路径,填上连接密码即eval()函数里$_POST[x]接受的参数名x。然后测试一下连接,看是否连接成功,如果连接成功就代表我们成功拿到了目标站点的shell权限。

连接成功!选择添加,之后点进去。

成功的拿下站点。我们可以对里面的文件做任意操作。 

总结

其实绕过前端JS验证非常的简单,因为前端只是规定了我们上传文件的格式类型即文件的后缀,我们只需要将我们想要上传的webshell文件的后缀名先改为前端允许的后缀名,然后通过抓包工具抓取数据包,在数据包的内容里再将文件的后缀名改为我们想要上传的文件后缀名即可。webshell上传成功之后,使用webshell连接工具(例如中国蚁剑、菜刀、冰蝎等...)进行测试连接,连接成功之后我们就顺利通过文件上传漏洞拿到了站点的权限。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
文件上传漏洞指的是攻击者可以通过上传恶意文件来执行任意代码或者获取服务器上的敏感信息。在前端检查方面,可以通过以下步骤来检查和防止文件上传漏洞的发生: 1. 检查文件类型:客户端可以通过对文件类型的检查来防止用户上传恶意文件。这可以通过在前端使用JavaScript来实现,或者通过使用一些第三方库来实现。在检查文件类型时,应该使用白名单的方式来限制允许上传的文件类型。 2. 检查文件大小:客户端可以通过对文件大小的检查来限制用户上传过大的文件。这可以通过在前端使用JavaScript来实现。 3. 检查文件名称:客户端可以通过对文件名称的检查来防止用户上传含有恶意脚本的文件。这可以通过在前端使用JavaScript来实现。 但是,这些前端检查都可以被攻击者绕过,因此还需要在服务器端进行进一步的检查和过滤。在服务器端,可以采取以下措施来防止文件上传漏洞的发生: 1. 验证文件类型:在服务器端,应该再次验证文件类型,以确保文件类型符合预期。 2. 验证文件大小:在服务器端,应该再次验证文件大小,以确保文件大小符合预期。 3. 验证文件内容:在服务器端,应该对文件内容进行检查,以确保文件中不包含恶意代码或者其他危险内容。 总之,前端检查只是一种基本的防御措施,但是还需要在服务器端进行更加严格的检查和过滤,以确保文件上传漏洞不会发生。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

你们de4月天

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

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

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

打赏作者

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

抵扣说明:

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

余额充值