文章目录
- CSRF漏洞是什么?
- 场景复现
- get方式攻击
- post方式攻击
- 原理分析
CSRF漏洞是什么?
跨站请求伪造(Cross Site Request Forgery,CSRF)是一种攻击,它强制浏览器客户端用户在当前对其进行身份验证后的Web 应用程序上执行非本意操作的攻击,攻击的重点在于更改状态的请求,而不是盗取数据,因为攻击者无法查看伪造请求的响应。
借助于社工的一些帮助,例如,通过电子邮件或聊天发送链接,攻击者可以诱骗用户执行攻击者选择的操作。如果受害者是普通用户,则成功的CSRF 攻击可以强制用户执行更改状态的请求,例如转移资金、修改密码等操作。如果受害者是管理账户,CSRF 攻击会危及整个Web 应用程序。
CSRF是跨站请求伪造攻击,它不像XSS和SQL注入会盗取用户的信息,它的目的是强制用户的浏览器客户端执行攻击者想要用户做的操作,也就是更改用户状态的请求,如:转移资金和修改密码等操作。
场景复现
将模拟场景的网站文件放到phpstudy的www目录下,分别打开三个浏览器模拟三个不同用户的客户端(其中一个是黑客),并在phpstudy中打开命令行,新建一个数据库bank,加载C:\phpStudy\WWW\bank下的bank.sql文件,在member表中将hacker用户的余额修改为0,让用户在访问恶意网站的情况下被CSRF攻击,给黑客转账。
如图:
打开火狐、IE、bp的浏览器分别登录三个账户:
admin用户:
hello用户:
hacker用户:
然后修改攻击用户的网页的配置文件,改为本机的地址
get方式攻击的配置文件:
post方式攻击的配置文件:
get方式攻击
如果用户admin在不退出登录的情况下访问了该网页,就会被CSRF攻击
访问网页:
攻击成功,余额减少,并多出转账记录:
黑客收到转账:
post方式攻击
hello用户访问恶意网站,同理也受到攻击,点击链接2:
返回页面,攻击成功:
原理分析
攻击者的网站诱骗用户访问用户原本的网站,并带有自己的身份凭证(cookie),执行攻击者的要求的操作,跨网站攻击,这就是CSRF跨站请求伪造。
注意,CSRF可以用post请求的方式攻击,所以如果用户用仅接收post请求的方法防御,是行不通的,post请求的攻击是比get明显的,因为会有页面的回显。