文件上传漏洞检测方式与绕过方法

2019年8月24日08:01:12 发表评论

文件上传漏洞检测方式与绕过方法

前言

文件上传漏洞是我们平时渗透过程中经常利用的漏洞,利用文件上传我们可以直接得到webshell,是非常直接的攻击方式。写这篇文章主要是想对常见的文件上传检测和绕过进行总结,同时练习文件上传php代码的编写。

以下上传测试使用的HTML表单的代码为:

<html>
    <head>
        <title>File Upload</title>
        <meta charset="utf-8">
    </head>
    <body>
        <form action="upload.php" method="POST" enctype="multipart/form-data">
            <input type="hidden" name="MAX_FILE_SIZE" value="1000000">
            选择文件: <input type="file" name="myfile">
            <input type="submit" value="Upload">
        </form>
    </body>
</html>

1.1 前端JavaScript检测

前端一般都是使用js来限制我们的上传类型和文件大小,这里以upload-labs Pass-01的源码为例:

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

对于前端的检测我们可以抓包来修改文件类型,也可以禁用掉JavaScript。总之,只有前端的限制是非常不安全的,非常容易被绕过。

发表评论

后发表评论