问答
发起
提问
文章
攻防
活动
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) ![image.png](https://shs3.b.qianxin.com/attack_forum/2023/07/attach-836bfc81e5470a4ef95fb79ffd78c766bacab27f.png) IDEA PHP debug环境配置可以参考下方的文章 <https://smallfox233.github.io/%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE/IDEA/PHP%20Debug/> ![4.png](https://shs3.b.qianxin.com/attack_forum/2023/07/attach-4ab20fc6babc3a15238b571759c5945048e3310e.png) 漏洞分析 ==== 路由规则 ---- ```php /index.php?m=文件夹名&f=方法名 ``` 若需要访问/module/admin/control.php的index方法,可使用如下路由(该路由需要登录后) ```php /index.php?m=admin&f=index ``` 通过debug就可以知道是否访问了该方法 ![3.png](https://shs3.b.qianxin.com/attack_forum/2023/07/attach-916ae671e1098448f50b8132e4fa104b0deac9aa.png) ![5.png](https://shs3.b.qianxin.com/attack_forum/2023/07/attach-870c1057f1e3b69f99e72784e337b844809d1d8c.png) 漏洞点 --- 漏洞位置为`module\repo\model.php`的`checkConnection`函数 类型为POST 传入参数`scm=Subversion`可进入if语句中执行exec函数 变量client被拼接到了versionCommand变量,后经exec函数调用执行 ![6.png](https://shs3.b.qianxin.com/attack_forum/2023/07/attach-a8af57bd77f3fb58894c8f5995733f02c63117fb.png) 寻找利用链 ----- 在model.php中的函数不能直接通过发送请求进行调用,在control.php中的函数才可以 有三处地方调用了函数checkConnection,都是在model.php中 ![7.png](https://shs3.b.qianxin.com/attack_forum/2023/07/attach-ab431aeb64ab2a1a519313e8dcc7e771ebfe0e74.png) ![8.png](https://shs3.b.qianxin.com/attack_forum/2023/07/attach-57bccea93db9497f3d7fa6270f2818aecd1ee198.png) 第二处和第三处中都在model.php的update函数中 所以后续的利用链只需经过update函数,都会进入漏洞点 ![9.png](https://shs3.b.qianxin.com/attack_forum/2023/07/attach-c256960b7567095220ab4f5c34dd787563dab69c.png) ![10.png](https://shs3.b.qianxin.com/attack_forum/2023/07/attach-7319d7914216c3cec41e00265556899f43a44843.png) 之后需要在control.php中寻找能够调用mode.php 的update()函数的地方 直接检索时,没法获取对应的调用点 ![11.png](https://shs3.b.qianxin.com/attack_forum/2023/07/attach-65e5d2f5006d1e8b64a2e058d083e1af99549655.png) 触发点 --- 之后经过查询和debug调试发现`\module\repo\control.php`的edit可触发model.php的update函数 而edit函数需要先通过create创建一个仓库才能进行编辑 ![12.png](https://shs3.b.qianxin.com/attack_forum/2023/07/attach-b75e16240b1548829ccc50ba3f5d32f3890649f6.png) 利用链 --- ![1.png](https://shs3.b.qianxin.com/attack_forum/2023/07/attach-c7d73fb144c2906c9d8784681c9f594dd53a6ad8.png) 漏洞复现 ==== 创建代码仓库 ------ 先登录后台 ![13.png](https://shs3.b.qianxin.com/attack_forum/2023/07/attach-be15248ce5b3d4066582a37889cf0078120e8ffa.png) 点击左侧的DevOps创建一个代码仓库 ![14.png](https://shs3.b.qianxin.com/attack_forum/2023/07/attach-90dd7f85f0d83553d523ca05fb2704b2aa453ce5.png) 抓包发送,出现了一个报错 ![15.png](https://shs3.b.qianxin.com/attack_forum/2023/07/attach-c6c5a8f4b7db42cde710e292a1a237d1fab4a5f3.png) 根据报错提示修改 ![16.png](https://shs3.b.qianxin.com/attack_forum/2023/07/attach-929e53dd43f1cd8d1cb2c597993e243fa6a18109.png) 将报文中的serviceProject修改为非0值即可成功创建代码仓库,创建成功后会返回repoID和objectID信息 ![17.png](https://shs3.b.qianxin.com/attack_forum/2023/07/attach-fb79fbb24979e186cafd45754721afa2dcc79e8b.png) 编辑仓库触发漏洞 -------- 将请求包复制一个到重放模块中修改 将`f=create`替换为`f=edit` 在url中增加如下的内容,将这两个参数值提换成创建成功后返回的值 ```php &repoID=编号&objectID=编号 ``` 再替换post请求body信息 ```php SCM=Subversion&client=calc ``` 因为在module\\repo\\model.php中调用了两次的checkConnection()函数 所以发包后将会执行两次calc命令,将会弹出两个计算器 ![19.png](https://shs3.b.qianxin.com/attack_forum/2023/07/attach-157931f4fdead268a5d207f1b3116f9c6c0ac51b.png) ![18.png](https://shs3.b.qianxin.com/attack_forum/2023/07/attach-244a5f92aa8cf35b14c18b524a401571e7780a6a.png) **文章首发于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
阅读 ( 4808 )
分类:
漏洞分析
3 推荐
收藏
0 条评论
请先
登录
后评论
小狐狸FM
1 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!