可用于将任意文件上传到 Laravel /storage 文件夹的可能漏洞有哪些? [关闭]

问题描述 投票:0回答:1

编辑(问题已关闭,因为不是关于编程问题,所以我会改写):

可用于将任意文件上传到 Laravel

/storage
文件夹的可能漏洞是什么?

应该检查哪些日志以尝试找出这样的文件是如何到达系统的?

一些背景:

我正在更新部署在临时服务器上的 laravel 项目,并注意到项目

/storage
文件夹中有一个额外的“servers.php”文件(不是
/storage/app
,它有子文件夹供用户上传附件)。

在检查文件后,它看起来非常可疑。从

urldecode()
-ing字符串开始获取函数名称“base64_decode”并将其用于
base64_decode()
一个已经被base64编码两次的字符串,这会产生一些二进制内容,我不准备运行以查看它的作用.

我不确定这个文件是如何结束的,所以我想知道是否有任何已知的漏洞可能导致这种行为?

编辑(回答问题): 存储子路径是硬编码的,因此它们不能从请求中被篡改。 在除一个控制器之外的所有控制器中,文件名由我的系统基于简单的数字 ID 和基于单一允许的 MIME 类型的硬编码文件扩展名生成。我怀疑这些路径可能会被篡改。另一个控制器使用 Laravel 的本地存储过程,它通过调用

$storage_path = $attachment->store('storage_folder_sub_path'); 
重命名文件。这些文件名是某种哈希,所以我发现很难看出它们是如何被篡改的。

php laravel exploit
1个回答
-1
投票

这肯定是一些混淆的恶意软件。这个文件似乎不是 Laravel 的原生文件。你如何处理文件?如果例如 shell(或一些移动命令)未正确转义,则可能是路径篡改。

在查看gist 并看到@dbf 和@mp035 之间的通信后更新。里面的东西是@dbf发现的:

servers.php文件中的恶意混淆代码反混淆为代码,试图从指定的URL下载文件并通过PHP中的shell_exec函数执行。这个文件做了一些讨厌的事情:

  • 如果 www-data 用户具有该权限(很可能不会),则创建具有密码的用户并将其添加到 sudo 组
  • 创建问题中提到的文件servers.php。
  • 获取服务器的公网IP。
  • 将该 IP 发送到 Telegram 频道。
  • 将 SELinux 设置为 Permissive 模式
  • 将一个进程上的最大文件描述符数设置为 65535
  • 下载伪装成 htop 进程管理器的 CPU 矿工,并在所有内核上启动它。
  • 删除所有日志,这样你就不会发现那些事情发生了。
  • 启动 cron 以每小时删除日志并杀死日志守护进程。
© www.soinside.com 2019 - 2024. All rights reserved.