CSRF
CSRF,全称Cross-site request forgery,即跨站请求伪造,
是指利用受害者尚未失效的身份认证信息(cookie,session等),诱骗其点击恶意的链接或者访问包含攻击代码的页面,
在受害人不知情的情况下以受害者的身份向服务器,从而完成非法操作(如转账,改密等)。
CSRF与XSS最大区别:CSRF并没有盗用cookie而是直接利用。
- low
查看源码,服务器收到修改密码的请求后,会检查pass_new和pass_conf是否一致,如果相同,就会修改密码,并没有做任何的csrf机制。
当受害者点击了这个链接,他的密码就会被改成password,http://localhost/vulnerabilities/csrf/?password_new=000&password_conf=000&Change=Change#
- 需要注意的是,csrf关键是利用受害者cookie发送伪造请求,要求之前登陆的这个系统和点击这个链接使用的是同一个浏览器的cookie。*
方法一:这样的链接太暴露了,可以通过短链接隐藏url内容。
方法二:构造攻击页面:
`404
file not found.
` 当受害者访问change.html时,会误认为是自己点击的是一个失效的url,但实际上已经遭受了CSRF攻击,密码已经被修改为了000。
- medium
查看源码,有个函数eregi(与ereg函数完全一致,只是忽略大小写),检查了保留变量HTTP_REFFER(表示来自哪里)中是否包含SEVER_NAME(http包头的Host参数)来抵御CSRF攻击。
把构造攻击页面的代码文件名重命名为host参数。 - high
出现了一个Anti-CSRF token机制,关键在于获取token值,这里利用XSS注入获取。<iframe src="../csrf"onload=alert(frames[0].document.getElementsByName('user_token')[0].value)
使用这个方法一直弹不出token值,。。。