goback add

ThinkSNS修改帐号验证不安全,可伪造

2875 点击·0 回帖
灯火互联
楼主

ThinkSNS开启邮箱验证后修改帐号邮箱发送的连接不安全,可伪造

版本最新的2.8

代码位置:

thinksns\addons\services\ValidationService.class.php

$validation_code = $this->__generateCode($vid);

$target_url  = $target_url . ";validationid=$vid;validationcode=$validation_code";

$res = model('Validation')->where("`validation_id`=$vid")->setField(array('code','target_url'), array($validation_code, $target_url));

if ($res) {

 return $target_url;

}else {

 return false;

}

private function __generateCode($id) {

return md5($id.'thinksns#^!@*#%^!@#');

}

明显这个validationid和validationcode可以很容易伪造。作为开源程序这个应该做为常量安装的时候配置,但是他们没有

说说利用把

加入 a(用户id假设为1) 用户修改了安全邮箱就会收到一个验证连接

如下

http://test.thinksns.com/index.php?app=home;mod=Public;act=doModifyEmail;validationid=1;validationcode=304dbee8afac9f91bc211009ce9de3e8

而validationcode就等于 md5("1thinksns#^!@*#%^!@#")

所以可以通过这个方式绕过所有的验证。

好在数据不是通过参数接收的 安全级别给个低把。

修复方案:

用自定义的常量代替thinksns#^!@*#%^!@#

或者自由发挥!


喜欢0 评分0