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#^!@*#%^!@# 或者自由发挥!
查看更多关于ThinkSNS修改帐号验证不安全,可伪造 - 网站安全的详细内容...