### 简要描述:
在Discuz! <=2.5版本的某处设计存在失误,csrf防御可被绕过
可以获取到formhash 所以应该算全局的绕过吧
### 详细说明:
其实还是 drops文章《上传文件的陷阱》带来的问题。
dz2.5以下版本修改头像处未检查图片文件的合法性,可以上传.jpg后缀的swf文件。
使用这个swf文件发起恶意请求读取页面源码就能获取到formhash 有formhash之后。。想干嘛就干嘛了
具体文件/uc_server/control/user.php 281行onuploadavatar函数
```
$imgtype = array(1 => '.gif', 2 => '.jpg', 3 => '.png');
```
只检查了后缀而不像3.0以上用库检查了图片格式
### 漏洞证明:
步骤
1、新建一个获取页面源码 提取formhash 然后用formhash发送添加副站长请求的swf,保存为.jpg后缀
[<img src="https://images.seebug.org/upload/201405/24140118027cb57a60e471ee1da2fe45450fc3c7.jpg" alt="0.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201405/24140118027cb57a60e471ee1da2fe45450fc3c7.jpg)
2、注册一个账号,去/home.php?mod=spacecp&ac=avatar上传上一步生成的.jpg后缀的swf文件并抓包 上传后的地址应该是
http://192.168.1.104/uc_server/data/tmp/upload{uid}.jpg这样的
[<img src="https://images.seebug.org/upload/201405/24140259a5b580714c3e240edf7debaceb69a833.jpg" alt="1.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201405/24140259a5b580714c3e240edf7debaceb69a833.jpg)
3、新建一个html页面,把上一步拿到的头像地址当作flash加载到页面。
4、引诱管理员访问这个html页面,就会在后台把你的账号添加为副站长
[<img src="https://images.seebug.org/upload/201405/2414052151e6777efdffe88932382c9ddd901811.jpg" alt="2.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201405/2414052151e6777efdffe88932382c9ddd901811.jpg)
[<img src="https://images.seebug.org/upload/201405/24140535fa2011caab0791e6e6f3535010b66f43.jpg" alt="3.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201405/24140535fa2011caab0791e6e6f3535010b66f43.jpg)
暂无评论