### 简要描述:
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)
暂无评论