稻草人企业站1.1.5代码审计
字数 1315 2025-08-25 22:59:02
稻草人企业站1.1.5代码审计报告与漏洞分析
0x00 前言
本文档详细分析稻草人企业站1.1.5版本中存在的多个安全漏洞,包括安装过程信息泄露、安装过程getshell、后台任意文件上传getshell以及后台任意文件删除漏洞。这些漏洞均已被验证存在,且危害等级较高。
0x01 安装过程信息泄露和getshell
漏洞描述
在安装过程中存在敏感信息泄露问题,同时配置文件写入点未做严格过滤,导致攻击者可以写入恶意代码实现getshell。
漏洞验证过程
- 使用D盾进行文件监控,通过Burp Suite抓取安装过程中的数据包
- 安装完成后发现存在敏感信息泄露的txt文件
- 测试配置文件写入点是否可控
漏洞利用方法
在安装过程中,向配置文件中写入恶意PHP代码:
tablepre=dcr_qy_';?><?php phpinfo()?>
漏洞代码分析
关键代码位于安装脚本中:
include "../include/common.func.php";
include "../include/app.info.php";
虽然引入了配置文件进行过滤,但未对写入内容做任何限制,导致恶意代码可以被成功写入。
0x02 管理员后台任意文件上传导致getshell
漏洞描述
后台多个图片上传点仅对Content-Type做了简单判断,未对文件内容进行有效验证,导致可以上传PHP等恶意文件实现getshell。
漏洞验证过程
- 登录后台管理系统
- 寻找任意图片上传点
- 上传PHP文件并修改Content-Type为image/jpeg等合法类型
- 访问上传的文件验证是否执行
漏洞利用方法
- 构造一个包含恶意代码的PHP文件
- 修改请求头中的Content-Type为合法图片类型
- 上传文件后直接访问上传路径
漏洞代码分析
关键代码位于include/class/class.upload.php中:
// 仅通过allow_files数组进行白名单检测
$allow_files = array('jpg', 'jpeg', 'gif', 'png');
这种简单的检测机制可以通过修改Content-Type轻松绕过。
0x03 后台任意文件删除
漏洞描述
后台管理功能中存在文件删除操作,且路径参数可控,导致管理员权限下可以实现任意文件删除。
漏洞验证过程
- 创建一个测试文件(如test.php)
- 通过后台文件管理功能删除该文件
- 验证文件是否被成功删除
漏洞利用方法
构造如下请求:
?action=del_file&cpath=/path/to/target/file
漏洞代码分析
关键问题在于cpath变量可控且未做严格校验:
// cpath变量直接用于文件删除操作
if($_GET['action'] == 'del_file') {
unlink($_GET['cpath']);
}
0x04 总结与修复建议
漏洞总结
- 安装过程信息泄露:安装后遗留敏感信息文件
- 安装过程getshell:配置文件写入点未过滤
- 后台任意文件上传:仅检查Content-Type导致绕过
- 后台任意文件删除:路径参数未做校验
修复建议
-
安装过程:
- 安装完成后自动删除临时文件和敏感信息
- 对配置文件写入内容进行严格过滤
-
文件上传:
- 使用文件内容检测而非扩展名或Content-Type判断
- 实现二次渲染验证图片真实性
- 设置上传目录不可执行
-
文件删除:
- 限制可删除的文件路径范围
- 对路径参数进行严格校验
-
通用建议:
- 实现严格的输入验证和过滤
- 遵循最小权限原则
- 对管理员操作进行日志记录
审计经验
- 黑盒测试与白盒测试结合能提高漏洞发现率
- 安装过程是常见的安全薄弱点
- 后台功能往往存在高权限操作风险
- 文件操作相关功能需要特别关注
本报告详细分析了稻草人企业站1.1.5版本中的多个高危漏洞,这些漏洞在同类CMS中具有典型性,开发者应引以为戒,加强安全开发意识。