审计ShirneCMS:利用ImageCrop.php中的getimagesize触发反序列化漏洞
需积分: 0 140 浏览量
更新于2024-08-05
收藏 1.13MB PDF 举报
"对ShirneCMS的一次审计思路1"
在进行ShirneCMS的安全审计时,主要关注的是系统的漏洞和潜在的风险。这次审计的重点落在了`ImageCrop`类的一个方法上,即`crop`方法,它使用了PHP内置的`getimagesize`函数。这个函数在特定条件下可能触发Phar反序列化漏洞。考虑到ShirneCMS是基于ThinkPHP 5.1框架二次开发的,而ThinkPHP 5.1已知存在反序列化漏洞,因此审计的目标是找到控制`$imgData`变量的方法。
`$imgData`的值由`getImgData`私有方法控制,该方法首先检查`$img`参数是否以'http://'或'https://'开头。如果满足条件,它将通过`file_get_contents`读取远程图片数据。如果`$img`指向的是站内图片,它则会尝试读取本地文件系统中的文件。审计过程中需要找出可以绕过这一限制的途径。
通过全局搜索`crop`方法,审计人员在`src/application/task/controller/UtilController.php`的`crop_image`函数中找到了调用点。此函数接收`$file`和`$options`作为参数,并实例化`ImageCrop`对象来执行裁剪操作。这里的`$file`参数就是传递给`getImgData`的`$img`,因此控制`$file`的值成为关键。
在`crop_image`内部,`$file`被用来执行`explode('.', $img)`,这将根据点号(.)分割`$img`。接着,审计人员注意到代码中有`count($paths) == 3`的判断,这意味着`$img`需要具有三个部分,这与`getImgData`的限制相冲突,因为HTTP协议的URL通常包括协议、域名和路径,刚好也是三个部分。
为了利用Phar反序列化漏洞,攻击者需要构造一个以'phar:'开头的URL,但由于当前的`getImgData`实现不允许这样的URL,我们需要找到一种方式来绕过这个限制。可能的策略包括但不限于:
1. 检查是否存在其他可利用的控制器或方法,它们可能不进行相同的URL开头检查。
2. 分析`UtilController`或`ImageCrop`类的其他部分,寻找可能的注入点或逻辑错误。
3. 研究ThinkPHP 5.1框架的源代码,了解其处理输入的方式,看是否有其他方式可以控制`$imgData`。
4. 考虑文件包含漏洞,如果`$file`参数没有经过充分验证,可能会被用于加载本地文件,从而可能导致代码执行。
5. 研究`crop_image`函数的`$options`参数,看是否可以利用它来影响`crop`方法的行为。
在进行这些步骤时,审计人员需要注意不要触发系统报警,同时确保所有测试都是在可控环境中进行的,避免对生产环境造成影响。此外,审计过程中应记录每一步的发现和测试结果,以便于后续的漏洞修复和安全建议的提出。
2022-07-22 上传
2020-08-14 上传
2023-05-04 上传
2024-09-09 上传
2024-09-09 上传
2024-09-09 上传
![](https://profile-avatar.csdnimg.cn/d2cc74e33a854380862912af2e9bb9f4_weixin_35792236.jpg!1)
洪蛋蛋
- 粉丝: 28
- 资源: 334
最新资源
- Hadoop生态系统与MapReduce详解
- MDS系列三相整流桥模块技术规格与特性
- MFC编程:指针与句柄获取全面解析
- LM06:多模4G高速数据模块,支持GSM至TD-LTE
- 使用Gradle与Nexus构建私有仓库
- JAVA编程规范指南:命名规则与文件样式
- EMC VNX5500 存储系统日常维护指南
- 大数据驱动的互联网用户体验深度管理策略
- 改进型Booth算法:32位浮点阵列乘法器的高速设计与算法比较
- H3CNE网络认证重点知识整理
- Linux环境下MongoDB的详细安装教程
- 压缩文法的等价变换与多余规则删除
- BRMS入门指南:JBOSS安装与基础操作详解
- Win7环境下Android开发环境配置全攻略
- SHT10 C语言程序与LCD1602显示实例及精度校准
- 反垃圾邮件技术:现状与前景