文件上传漏洞(1), 文件上传绕过原理

这篇具有很好参考价值的文章主要介绍了文件上传漏洞(1), 文件上传绕过原理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文件上传漏洞

一, 前端校验上传文件

添加 Javascript 代码,然后在 form 表单中 添加 onsubmit="returb checkFile()"

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

<!-- 上传附件,必须要加上 enctype="multipart/form-data" 属性  -->
<form action="reg.php" method="POST" enctype="multipart/form-data" onsubmit="return checkFile()">
    <tr>
        <td width="40%">用户名:</td>
        <td width="60%"><input type="text" id="username" name="username" /></td>
    </tr> 
    <tr> 
        <td>&nbsp;&nbsp;码:</td>
        <td><input type="password" id="password" name="password"/></td>
    </tr>
    <tr> 
        <td>&nbsp;&nbsp;像:</td>
        <td><input type="file" name="photo" id="photo"></td>
    </tr>
    <tr>
        <td colspan="2"><button type="submit">注册</button></td>
    </tr> 
</form>

绕过前端:

1. 在浏览器设置中禁用js
通常不建议使用这种方式, 因为前端js中可能存在很多其他js的功能, 例如ajax请求.

2. 用burpsuite等工具修改请求.
因为前端js对文件类型做了限制, 那么将需要执行的php文件后缀名修改为jpg, 先绕过js检查, 提交请求后用burp suite捕获.
在burpsuite中修改提交的数据, 将 filename 参数中的文件扩展名改回php再发送.

文件上传成功后, 通过前端工具查找上传的文件路径, 比如头像的url路径, 然后访问执行代码:
http://192.168.112.200/security/upload/20231025_172754.php?cmd=phpinfo();

二, 后端校验上传文件

前端有可能通过burp suite等工具绕过. 后端对提交过来的文件类型进行限制.

判断文件后缀名

// 不允许上传的文件的后缀名是.php
$fileName = $_FILES['photo']['name']; // 获取文件的原始文件名
$extName = end(explode(".", $fileName));
if ($extName == 'php') {
    die("invalid-file");
}

判断 Content-Type

$fileType = $_FILES["photo"]["type"];
if ($fileType != 'image/jpeg' && $fileType != 'image/png' && $fileType != 'image/gif') {
	die("invalid-file");
}

绕过后端:

1. 尝试大小写绕过, 例如修改请求信息filename="mm.php" 修改为 mm.PhP
2. 使用burpsuite修改Content-type文章来源地址https://www.toymoban.com/news/detail-719037.html

到了这里,关于文件上传漏洞(1), 文件上传绕过原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【文件上传漏洞绕过方式】

    目录 前言 正文 总结   目前,文件上传往往在业务中不可避免,也是极其容易出现上传漏洞。根据owasptop10中的排名,文件上传漏洞(属于攻击检测和防范不足)高居其中。今天和大家分享常见的文件上传的绕过方式。  绕过方式一:前端绕过  首先,根据前端页面队上传文

    2023年04月08日
    浏览(51)
  • 文件上传漏洞基础/htaccess重写解析绕过/大小写绕过上传/windows特性绕过

    目录 一、htaccess重写解析绕过上传 htaccess文件 htaccess文件上传 靶场练习pass-04 代码分析 创建.htaccess文件 开始上传 访问 二、大小写绕过 upload-labs pass-05 代码分析 上传 访问 ​编辑  三、空格绕过上传 pass-06 代码分析 尝试上传 访问 四、利用windows系统特征绕过上传 pass-07 代码

    2024年02月13日
    浏览(46)
  • PHP intval()函数详解,intval()函数漏洞原理及绕过思路

    「作者主页」: 士别三日wyx 「作者简介」: CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」: 对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 intval() 函数可以获取变量的 「整数值」 。常用于强制类型转换。 语法 参数

    2024年02月09日
    浏览(39)
  • 文件上传漏洞基础/content-type绕过/黑名单绕过/

    目录 一、content-type绕过 contenent-type 源代码分析 绕过方式 尝试绕过 二、黑名单绕过 黑名单 代码分析 绕过方法 尝试绕过 contenent-type 有些上传模块,会对http的类型头进行检测,如果是图片类型,允许上传文件到服务器,否则返回上传失败。因为服务器是通过ent-type判断类型,

    2024年02月07日
    浏览(49)
  • 【文件上传漏洞-02】前端限制与绕过靶场实战

    有些web应用文件上传功能,仅在前端用JS脚本做了检测,如检测文件后缀名等。 JS 检测绕过上传漏洞常见于用户选择文件上传的场景,如果上传文件的后缀不被允许,则会弹框告知,此时上传文件的数据包并没有发送到服务端,只是在客户端浏览器使用JavaScript对数据包进行检

    2024年02月15日
    浏览(46)
  • 【网络安全 --- 任意文件上传漏洞靶场闯关 6-15关】任意文件上传漏洞靶场闯关,让你更深入了解文件上传漏洞以及绕过方式方法,思路技巧

      首先分享一个自己做的很不错的网路安全笔记,内容详细介绍了许多知识 超详细的网络安全笔记 分享一个非常详细的网络安全笔记,是我学习网安过程中用心写的,可以点开以下链接获取: 超详细的网络安全笔记​编辑https://m.tb.cn/h.5JdFcih?tk=OuVrWRl9vMx%20CZ3457 https://m.tb.cn/

    2024年02月07日
    浏览(48)
  • 24 WEB漏洞-文件上传之WAF绕过及安全修复

    safedog BT(宝塔) XXX云盾 宝塔过滤的比安全狗厉害一些,在真实情况下现在很多网站都是用宝塔 Content-Disposition: 表单数据,一般可更改 name:表单参数值,不能更改,改完之后,数据包是有问题的,跟前端的表单值会对不上,这样后端会无法判断你上传的地方,如果要更改,那

    2024年02月10日
    浏览(50)
  • PHP md5()函数详解,PHP计算MD5,md5()绕过,md5()漏洞原理剖析

    「作者主页」: 士别三日wyx 「作者简介」: CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」: 对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 md5() 可以计算字符串的 「MD5散列值」 。 语法 参数 $str :需要计算的字符串

    2024年02月06日
    浏览(44)
  • 文件上传漏洞--Upload-labs--Pass07--点绕过

    在Windows系统中,Windows特性会将文件后缀名后多余的点自动删除,在网页源码中,通常使用 deldot()函数 对点进行去除,若发现网页源代码中没有 deldot() 函数,则可能存在 点绕过漏洞。通过点绕过漏洞,可以达到上传含有恶意代码的文件的目的。 1、首先进行代码审计,发现网

    2024年02月21日
    浏览(45)
  • 文件上传漏洞进阶教程/白名单绕过/图片马制作/图片马执行

    相对于前面的黑名单绕过,白名单更加难以绕过,使用白名单验证相对比较安全,但如果存在可控参数目录,也存在被绕过的风险 目录可控%00截断绕过上传 upload-lab pass11 源码分析 deny_arr变成ext_arr,白名单,下面判断后缀名是否在白名单中,代码相较于黑名单也简单不少 但是

    2024年01月22日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包