ThinkSNS修改帐号验证不安全,可伪造
![]() | ![]() | |
![]() | 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) 用户修改了安全邮箱就会收到一个验证连接 如下 而validationcode就等于 md5("1thinksns#^!@*#%^!@#") 所以可以通过这个方式绕过所有的验证。 好在数据不是通过参数接收的 安全级别给个低把。 修复方案: 用自定义的常量代替thinksns#^!@*#%^!@# 或者自由发挥! | |
![]() | ![]() |