freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

upload-labs通关攻略(更新中)
2023-03-06 17:48:37
所属地 广东省

文件上传漏洞

1.靶场介绍

upload-labs是一个使用php语言编写,专注于文件上传漏洞的靶场。该靶场可以让练习者了解文件上传漏洞的原理、利用方法。

2.环境搭建

1.首先要下载phpstudy,解压安装

phpstudy下载链接:https://www.xp.cn/download.html

2.下载upload-labs源代码

下载链接:https://codeload.github.com/c0ny1/upload-labs/zip/refs/heads/master

将压缩包解压后的文件名改为upload-labs,然后放入phpstudy\www目录下

3.打开phpstudy面板,启动Apache+MySQL

4.在浏览器中输入http://127.0.0.1/upload-labs/

就会打开一下界面,就安装成功了

Pass-01

任务是上传一个webshell到服务器


为了方便观察,这里我们选择上传<?php phpinfo();?>,代码成功执行后显示PHP服务器的配置信息

尝试上传phpinfo.php,发现上传失败

我们点击显示源码或查看提示,发现这一关是使用JavaScript在客户端验证上传的文件类型

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

firefox浏览器按f12调出开发者工具-->调试器-->设置-->禁用JavaScript,重新上传phpinfo.php就可以成功上传了。

在url中输入文件保存的路径

成功执行

Pass-02

点击显示源码跟查看提示可以看出,这一关是通过数据包中的MIME类型验证

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        if (($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif')) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH . '/' . $_FILES['upload_file']['name']            
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '文件类型不正确,请重新上传!';
        }
    } else {
        $msg = UPLOAD_PATH.'文件夹不存在,请手工创建!';
    }
}

使用BurpSuite抓包

将Content-Type修改为允许上传的类型,(image/jpeg、image/png、image/gif)选其中一个修改,修改完后即可上传成功。

访问一下,成功执行


# 渗透测试 # web安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录