漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2014-051957
漏洞标题:ThinkSAAS多处越权CSRF包含漏洞
相关厂商:thinksaas.cn
漏洞作者: xfkxfk
提交时间:2014-02-25 11:40
修复时间:2014-05-26 11:41
公开时间:2014-05-26 11:41
漏洞类型:设计缺陷/逻辑错误
危害等级:高
自评Rank:20
漏洞状态:厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2014-02-25: 细节已通知厂商并且等待厂商处理中
2014-02-25: 厂商已经确认,细节仅向厂商公开
2014-02-28: 细节向第三方安全合作伙伴开放
2014-04-21: 细节向核心白帽子及相关领域专家公开
2014-05-01: 细节向普通白帽子公开
2014-05-11: 细节向实习白帽子公开
2014-05-26: 细节向公众公开
简要描述:
ThinkSAAS的SQL注入差不多了,剩下的就是很多越权,很多CSRF,还有几处包含漏洞了。
详细说明:
ThinkSAAS的SQL注入差不多了,剩下的就是很多越权,很多CSRF,还有几处包含漏洞了,也一起发了吧,求给力哦,来个大厂商吧!
第一处越权:
Thinksaas在编辑文章内容时,没有判断此文章的发表用户,造成任意用户可修改任意用户文章内容。
来看看编辑文章的代码,/app/article/action/edit.php
这里没有判断此文章的用户属性,只要用户登录,就能修改articleid和cateid下的任意文章内容。
漏洞证明:
用户111111发表的文章被222222用户修改了。
第二处越权:
ThinkSAAS在修改用户相册属性,以及修改相册中图片信息时存在越权操作,可修改任意用户相册以及图片信息。
app/photo/action/album.php
漏洞证明:
从代码中看出,这里没有判断相册的用户属性,导致用户可修改任意相册信息。
我们先账户111111建立一个相册:
然后我们换一个用户222222,构造如下请求:
这里的albumid就是相册的ID,修改这个ID,就能修改对应的相册信息。
此时111111用户的相册信息已被修改如下:
第三处越权:
在编辑小组基本信息时,没有判断此小组的创建用户属性,导致只通过小组id,groupid即可修改该小组的基本信息,导致越权修改他人创建的小组基本信息。
/app/group/action/do.php
第四处越权:
在小组中的帖子操作中,编辑帖子类型时存在越权:
/app/group/action/do.php:
没有判断此帖子类型所属用户属性,导致可以编辑任意用户所属的帖子类型。
第五处越权:
在小组中的帖子操作中,删除帖子类型时存在越权:
/app/group/action/do.php:
同样也没有判断帖子类型所属用户,导致删除任意用户帖子类型。
漏洞证明:
1、确定用户111111创建的小组111111的小组类型
2、然后用户222222登陆,界面上没有编辑小组111111信息的功能及权利,但我们构造编辑小组分类的请求。
3、然后发送修改小组111111帖子类型的构造请求。
4、最后,111111用户登陆查看自己的小组111111帖子类型被成功修改。
在编辑小组基本信息,删除帖子类型是也可用以上方法测试。
至于CSRF漏洞:
1、在前台有些地方有token,但是有些地方还是没有加token,防御不完善。
2、虽然加了token,但是整个站的token好像是一样的,这个token应该动态处理吧。
3、前台的CSRF就不说了。后台完全没有CSRF防御,像这样构造CSRF请求就可以操作后台的一切操作,拿shell,拖库,修改网站数据,添加管理员等等操作。
具体案例见:
WooYun: ThinkSAAS某功能设计不当可能导致可以csrf后台GETSHELL
WooYun: ThinkSAAS某处CSRF导致直接GETSHELL
WooYun: Thinksaas CSRF导致任意文件删除
第一处包含漏洞:
/app/group/action/plugin.php
这里没有判断是否登录,而且$app,$plugin,$in参数没有限制目录,导致文件包含。
那么我们只要找一个任意存在的文件就能执行该任意文件了。
第二处包含漏洞:
/app/home/action/plugin.php
第三处包含漏洞:
/app/pubs/action/plugin.php
第四处包含漏洞:
/app/user/action/plugin.php
包含原理通第一处。
漏洞证明:
我们通过上面的包含漏洞可以包含到后台的文件,执行后台的全部功能。
这里我们包含后台如下文件:
/app/system/action/sql.php
那么我们通过上面的包含就可以包含到此文件执行了。
再来看看这里的restore()函数,直接将$sql参数加到了需要回复的数据库文件后面,而且restore()函数并没有判断此文件的格式等有效性,直接打开文件,执行里面的内容,因为默认这是一个sql数据库文件,所以导致目录遍历漏洞。
这样就可以回复任意文件了,只要此文件中是合法的sql语句就行。
那我们在前台上传一个图片,图片内容为:
在sql参数处,把sql文件内容替换为我们自己上传的文件即可。
上传后的路径我们可以知道,上传后的文件名是按照1,2,3...这样的顺序命名的,所以上传后的文件路径,文件名都可以得到。这样就可以在非登录下直接拿到shell。
可能还有其他地方存在其他的很多漏洞,先发现,提交这么多,后面再继续挖掘。
希望厂商能把前面的那些SQL注入和这些漏洞修复了,做的更安全的产品!
漏洞证明:
见详细说明
修复方案:
1、越权处修复件程序的其他加了用户属性的地方,在操作相关内容时,判断此内容的唯一用户属性,在操作数据。
2、CSRF可以再全局加上token,再加上同源策略的判断即可。
3、包含处问题很多,首先过滤用户输入内容,然后再后台的操作全部加上用户认证和权限的控制和判断。
版权声明:转载请注明来源 xfkxfk@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:20
确认时间:2014-02-25 11:58
厂商回复:
非常感谢xfkxfk的反馈,我们尽快修复!
最新状态:
暂无