找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

6153

积分

0

好友

777

主题
发表于 4 天前 | 查看: 5| 回复: 0

ShowDoc 作为常见的技术文档协作平台,常用于维护 API 文档、数据字典与团队知识库。本文将梳理微步情报近期披露的一处 ShowDoc 未授权 PHP 代码注入漏洞,由 云栈社区 整理,供安全研究人员参考防御。

漏洞概述

该漏洞根因在于 ShowDoc 未授权注册接口 registerByVerifyusername 字段仅做 trim 处理,缺少对恶意 PHP 代码的过滤。攻击者只需向注册接口提交经过构造的恶意用户名,随后访问特定 URL 触发存储的恶意代码,便可在服务器上执行任意系统命令,形成远程代码执行(RCE)。

ShowDoc 技术文档协作平台首页

影响版本

  • ShowDoc <= 3.9.2

官方已在 3.9.3 版本中修复该问题。

漏洞原理

为什么仅做 trim 处理还不够?trim 只能去掉字符串首尾空白,并不会拦截 <?__halt_compilersystem( 这类 PHP 代码特征。这些字符一旦原样写入数据库,后续访问对应数据库文件时就会被当作 PHP 解析执行,最终导致任意命令执行。

具体来说,注册接口 /server/index.php?s=/Api/User/registerByVerify 在接收 username 参数后没有进行严格过滤,攻击者将 PHP 代码注入该字段,这些内容会随注册数据一并落入数据库。此时,攻击者只需要访问数据库文件对应的 URL,即能触发存储的恶意代码。

复现步骤

复现过程可分为三步:

  1. 获取验证码;
  2. 注册恶意用户名,注入 PHP 代码;
  3. 访问数据库文件,触发 RCE

以一段 POC 命令为例:

python3 showdoc_poc.py -t http://localhost:8888 -c "ifconfig"

脚本运行后会先检测目标服务是否在线,然后请求验证码接口创建 captcha_id,从数据库读取验证码后,携带构造的 payload 提交注册请求,将恶意内容写入 username 字段。第二阶段执行 ifconfig,目标服务器返回网络接口信息,说明远程命令执行成功。

ShowDoc 未授权 PHP 代码注入 RCE POC 复现终端截图

修复与防护

  1. 将 ShowDoc 升级至 3.9.3 及以上版本;
  2. 在 WAF 或入侵检测规则中,对 /server/index.php?s=/Api/User/registerByVerify 请求的 username 参数检测 <?__halt_compilersystem( 等特征,触发告警或阻断;
  3. username 等输入字段增加严格过滤,避免 PHP 代码片段进入存储。



上一篇:TypePHP 0.7 支持全静态编译:一键生成 Linux 零依赖 ELF 可执行文件
下一篇:PCB设计外包创始人访谈:从工程师到公司掌门人,给硬件同行打个样
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-9-10 16:59 , Processed in 1.700544 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表