问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
某开源项目管理软件 命令执行漏洞分析
漏洞分析
影响版本 ==== | 禅道 | 版本 | |---|---| | 开源版 | 17.4 ~ 18.0.beta1 | | 旗舰版 | 3.4 ~ 4.0.beta | | 企业版 | 7.4 ~ 8.0beta1 8.0beta2 | 利用条件 ==== 代码库的创建及编辑权限 环境搭建 ==== 下载源码版本,本地复现时使用的是PHP 7.3.4环境 [https://www.zentao.net/dl/zentao/18.0.beta1/ZenTaoPMS.18.0.beta1.php7.2\_7.4.zip](https://www.zentao.net/dl/zentao/18.0.beta1/ZenTaoPMS.18.0.beta1.php7.2_7.4.zip)  IDEA PHP debug环境配置可以参考下方的文章 <https://smallfox233.github.io/%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/IDEA/PHP%20Debug/>  漏洞分析 ==== 路由规则 ---- ```php /index.php?m=文件夹名&f=方法名 ``` 若需要访问/module/admin/control.php的index方法,可使用如下路由(该路由需要登录后) ```php /index.php?m=admin&f=index ``` 通过debug就可以知道是否访问了该方法   漏洞点 --- 漏洞位置为`module\repo\model.php`的`checkConnection`函数 类型为POST 传入参数`scm=Subversion`可进入if语句中执行exec函数 变量client被拼接到了versionCommand变量,后经exec函数调用执行  寻找利用链 ----- 在model.php中的函数不能直接通过发送请求进行调用,在control.php中的函数才可以 有三处地方调用了函数checkConnection,都是在model.php中   第二处和第三处中都在model.php的update函数中 所以后续的利用链只需经过update函数,都会进入漏洞点   之后需要在control.php中寻找能够调用mode.php 的update()函数的地方 直接检索时,没法获取对应的调用点  触发点 --- 之后经过查询和debug调试发现`\module\repo\control.php`的edit可触发model.php的update函数 而edit函数需要先通过create创建一个仓库才能进行编辑  利用链 ---  漏洞复现 ==== 创建代码仓库 ------ 先登录后台  点击左侧的DevOps创建一个代码仓库  抓包发送,出现了一个报错  根据报错提示修改  将报文中的serviceProject修改为非0值即可成功创建代码仓库,创建成功后会返回repoID和objectID信息  编辑仓库触发漏洞 -------- 将请求包复制一个到重放模块中修改 将`f=create`替换为`f=edit` 在url中增加如下的内容,将这两个参数值提换成创建成功后返回的值 ```php &repoID=编号&objectID=编号 ``` 再替换post请求body信息 ```php SCM=Subversion&client=calc ``` 因为在module\\repo\\model.php中调用了两次的checkConnection()函数 所以发包后将会执行两次calc命令,将会弹出两个计算器   **文章首发于https://smallfox233.github.io/%E6%BC%8F%E6%B4%9E%E5%A4%8D%E7%8E%B0/%E7%A6%85%E9%81%93CMS/%E7%A6%85%E9%81%9318%E5%91%BD%E4%BB%A4%E6%89%A7%E8%A1%8C%E6%BC%8F%E6%B4%9E/** 参考 == [https://mp.weixin.qq.com/s?\_\_biz=MzkzNjMxNDM0Mg==&mid=2247485644&idx=1&sn=4bfa7d4ec2944dfa8755cc26b0454aa8&chksm=c2a1dc45f5d655534fe3205299ace389b080f51ce5ec3698cf1690c49171024b27cbfba4fa8d&mpshare=1&scene=1&srcid=0113dD9gKGwuztrYNWfTSAOh&sharer\_sharetime=](https://mp.weixin.qq.com/s?__biz=MzkzNjMxNDM0Mg==&mid=2247485644&idx=1&sn=4bfa7d4ec2944dfa8755cc26b0454aa8&chksm=c2a1dc45f5d655534fe3205299ace389b080f51ce5ec3698cf1690c49171024b27cbfba4fa8d&mpshare=1&scene=1&srcid=0113dD9gKGwuztrYNWfTSAOh&sharer_sharetime=)
发表于 2023-07-11 17:15:53
阅读 ( 5432 )
分类:
漏洞分析
3 推荐
收藏
0 条评论
请先
登录
后评论
小狐狸FM
1 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!