你看:BC站文件上传漏洞分析

2024-05-16 546 0

近期在某平台上监控了一些POC之类的,后续发现了一个公开的POC,所以根据这个POC去尝试了一下复现,分别也针对这个漏洞问题进行了分析,这个盘的源码都是网上下载的搭起来用的,站的源码都还带着广告!对于经常搞这些的朋友们,肯定觉得无所谓,所谓就是开单吃一年,不开单饿死!

你看:BC站文件上传漏洞分析插图

一、WebUploader组件

WebUploader属于一个比较老的组件,该组件在19年的时候是出现过文件上传的漏洞问题,像类似文件上传组件几乎都存在一定的过滤不严的问题,那么今天我们先简单了解/webuploader这个组件文件上传的漏洞!

找到组件源码后,我们简单的给它过一遍吧,既然有源码就少不了流程,seay审计工具跑一遍!

你看:BC站文件上传漏洞分析插图1

在漏洞详细也是截图的右列我们也看到扫描出来的,可能存在:文件操作函数中存在变量,可能存在任意文件读取/删除/修改/写入等漏洞,你在看的同时你也会发现/webuploader-master/server/preview.php中的file_put_contents($filePath, $data);函数代码串是和其它的代码函数都非常的特别。

你看:BC站文件上传漏洞分析插图2

我们先来了解这个PHP函数,在PHP官方提供了一个很方便的函数叫做file_put_contents()来帮助我们做这件事情。它的用法很简单,你只需要告诉它要保存的文件名和要写入的内容,它就会帮你把内容写入文件里。

语法:file_put_contents(string $filename, mixed $data, int $flags = 0, resource $context = null): int|false

  • $filename:要写入的目标文件名或路径。
  • $data:要写入的数据,可以是字符串、数组或者其他可写入的数据类型。
  • $flags:可选参数,用于指定写入数据时的行为选项,比如追加到文件末尾等。
  • $context:可选参数,通常用于传递文件处理的上下文资源。

这里来一个正常栗子:

$data = "Hello, world!";
$filename = "example.txt";

// 将数据写入文件
$result = file_put_contents($filename, $data);

if ($result !== false) {
echo "数据成功写入文件";
} else {
echo "写入文件失败";
}

在这个例子中,我们把字符串"Hello, world!"写入到了名为example.txt的文件中。如果写入成功,file_put_contents()函数会返回写入文件的字节数。如果写入失败,它会返回false

这里来一个使用不当的栗子(涉及文件路径注入漏洞):

$data = "Hello, world!";
$filename = $_GET['filename']; // 从用户输入获取文件名

// 将数据写入文件
$result = file_put_contents($filename, $data);

if ($result !== false) {
echo "数据成功写入文件";
} else {
echo "写入文件失败";
}

在这个例子中,程序从用户的输入$_GET['filename']获取文件名,然后直接传递给file_put_contents()函数。如果攻击者能够控制filename参数,并且传入一个恶意的文件路径,就可能导致文件路径注入漏洞的发生。例如,攻击者可以将文件名设置为../../../etc/passwd,从而尝试读取系统的密码文件。

二、preview.php文件分析

通过第一章节,我们已经了解过漏洞的主要的一些风险函数,接下来我们分析整个/webuploader-master/server/preview.php文件,其实整个文件也是特别的容易上手,先看整体代码片段,先让自己有个底和感觉。首先,这个文件上传漏洞用的是什么方法进行上传?又怎么绕过?

你看:BC站文件上传漏洞分析插图3

<?php
/**
* 此页面用来协助 IE6/7 预览图片,因为 IE 6/7 不支持 base64
*/

#!! 注意
#!! 此文件只是个示例,不要用于真正的产品之中。
#!! 不保证代码安全性。
#!! IMPORTANT:
#!! this file is just an example, it doesn't incorporate any security checks and
#!! is not recommended t


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

webpack打包站点,js文件名批量获取思路
加密对抗靶场enctypt——labs通关
【论文速读】| 注意力是实现基于大语言模型的代码漏洞定位的关键
蓝队技术——Sysmon识别检测宏病毒
内网渗透学习|powershell上线cs
LLM attack中的API调用安全问题及靶场实践

发布评论