Upload-labs 的学习笔记(Pass 01~05)

Cyber Security

这篇文章最后更新于 天前,文中描述的信息可能已经过时,请多加查证后再作参考。

image

介绍

upload-labs 是一个使用 php 语言编写的,专门收集渗透测试和 CTF 中遇到的各种上传漏洞的靶场。

下载链接:github.com/c0ny1/upload-labs

在本博客中使用到的工具:

第一题

尝试前端绕过

打开浏览器的开发人员工具( F12 )启用“禁用 Javascript ”选项,上传 some.php ,上传成功。

image
image

尝试伪造上传

在尝试直接上传 WebShell 失败后,启动 BurpSuite 抓包,之后正常上传图片:

image

之后就可以看到上传图片时的网络活动:

image

使用 Postman 伪造同样的 HTTP POST ,上传成功。

image

* 上传的文件会保存在 upload-lab/upload 内。

第二题

和第一题中的 尝试伪造上传 的步骤类似,获取到 HTTP POST 的相关信息后,用 Postman 模拟即可。需要注意的是,这次需要把 upload_fileContent-Type 改为 image/jpeg。或者 image/png image/gif

image

第三题

这一题中会阻止上传扩展名为 .asp .aspx .php .jsp 的文件,但是其它扩展名的文件也有可能被当做脚本文件运行,上传其它扩展名的文件即可

具体的其它扩展名可以到 Less-04 的源码里找,如下图:

image

还有需要注意的一点是,这次上传的文件被重命名了,我们可以在返回的数据中找到它的路径:

image

第四题

这一题阻止了几乎所有可用的 WebShell 扩展名,由于环境中使用的是 Apache 服务器,所以我们可以使用 .htaccess 文件让 Apache 把任意文件解析为可以运行的 WebShell ,以 PHP 为例:

新建文本文档,输入以下内容并重命名为 .htaccess

1
SetHandler application/x-httpd-php

参照上面的方法上传 .htaccess 和一个重命名后的一段 PHP 文件,访问对应目录即可。

image

如上,这次没有改文件名。

第五题

请先确认您的 Pass-5 点击查看源码后源码中包含以下这段代码与否,如果与您的部分源码不一致,请尝试先查看其它题的题解。

1
2
3
4
5
6
7
$deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess");
$file_name = trim($_FILES['upload_file']['name']);
$file_name = deldot($file_name);//删除文件名末尾的点
$file_ext = strrchr($file_name, '.');
$file_ext = strtolower($file_ext); //转换为小写
$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
$file_ext = trim($file_ext); //首尾去空

首先尝试直接上传目标文件失败,之后使用 BurpSuite 的重发器(Repeater)把 filename 值改为 *.php. . .如下图(暂时没有找到使用 Postman 代替这里的 BurpSuite 的方法)

image

后端程序首先去掉文件名末尾的点,文件名变为 *.php. ,其中 . 并不是不允许的文件扩展名。之后在文件保存时扩展名又被改为 .php ,使其发挥作用。

参考资料

* 目前本文并未直接复制以下文章的内容

本文作者:Henrize Kim

文章链接: https://henrize.kim/article/b15cbef9837c/

本文使用 CC BY-NC-SA 3.0 协议进行许可,使用时请注意遵守协议。