### 简要描述: drops文档实例。利用HTTP host头攻击的技术。需要交互。 ### 详细说明: 原理参考:http://drops.wooyun.org/papers/1383 ``` }else{ $setmes=in($_POST['backname']); if(empty($setmes)) $this->error('填写信息不全~'); switch ($_POST['type']) { case 'acc': if(!Check::userName($setmes)) $this->error('非法账户名~'); $info=model('members')->find("account='{$setmes}'",'email'); if(empty($info)) $this->error('账户不存在~'); $url='http://'.$_SERVER['HTTP_HOST'].url('member/index/getpassword',array('code'=>urlencode(cp_encode($setmes,config('ENCODE_KEY'),600)))); echo $url; $email=new Email(config('EMAIL')); $email->send($info['email'],config('sitename').'密码重置','请点击以下链接以重置密码~ <a href="'.$url.'">重置密码</a>'); $this->success('请到邮箱查看邮件~',url('index/getpassword')); break; case 'email': if(!Check::email($setmes)) $this->error('邮箱格式错误~'); $list=model('members')->select("email='{$setmes}'",'account'); if(empty($list)) $this->error('该邮箱未注册~'); $email=new Email(config('EMAIL')); foreach ($list as $vo) { $url.="<a...
### 简要描述: drops文档实例。利用HTTP host头攻击的技术。需要交互。 ### 详细说明: 原理参考:http://drops.wooyun.org/papers/1383 ``` }else{ $setmes=in($_POST['backname']); if(empty($setmes)) $this->error('填写信息不全~'); switch ($_POST['type']) { case 'acc': if(!Check::userName($setmes)) $this->error('非法账户名~'); $info=model('members')->find("account='{$setmes}'",'email'); if(empty($info)) $this->error('账户不存在~'); $url='http://'.$_SERVER['HTTP_HOST'].url('member/index/getpassword',array('code'=>urlencode(cp_encode($setmes,config('ENCODE_KEY'),600)))); echo $url; $email=new Email(config('EMAIL')); $email->send($info['email'],config('sitename').'密码重置','请点击以下链接以重置密码~ <a href="'.$url.'">重置密码</a>'); $this->success('请到邮箱查看邮件~',url('index/getpassword')); break; case 'email': if(!Check::email($setmes)) $this->error('邮箱格式错误~'); $list=model('members')->select("email='{$setmes}'",'account'); if(empty($list)) $this->error('该邮箱未注册~'); $email=new Email(config('EMAIL')); foreach ($list as $vo) { $url.="<a href='http://".$_SERVER['HTTP_HOST'].url('member/index/getpassword',array('code'=>urlencode(cp_encode($vo['account'],config('ENCODE_KEY'),600))))."'>重置:".$vo['account']." 的密码</a> "; } $email->send($setmes,config('sitename').'密码重置','请点击以下链接以重置密码~ '.$url); $this->success('请到邮箱查看邮件~',url('index/getpassword')); break; default: $this->error('错误的类型~'); break; ``` 注意:$url='http://'.$_SERVER['HTTP_HOST'].url('member/index/getpassword',array('code'=>urlencode(cp_encode($setmes,config('ENCODE_KEY'),600)))); ``` ``` 重置密码连接里的域名会变成别人控制的域名,用户点击之后,token就发送给他人控制的服务器上了。 [<img src="https://images.seebug.org/upload/201410/14123900b8d240ccb4d54e61363e1b53c4cf9f38.jpg" alt="选区_037.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201410/14123900b8d240ccb4d54e61363e1b53c4cf9f38.jpg) ### 漏洞证明: [<img src="https://images.seebug.org/upload/201410/14123900b8d240ccb4d54e61363e1b53c4cf9f38.jpg" alt="选区_037.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201410/14123900b8d240ccb4d54e61363e1b53c4cf9f38.jpg)