CSRF
CSRF的原理和XSS区别
- CSRF是跨站请求伪造,是基于服务器对客户端身份认证后的信任。利用社会工程学在用户不知情的情况下对服务器发送请求。可以修改账号密码、个人信息。
- 正常情况下客户端访问服务端,获取服务器端的信任,而攻击者发送一个伪造的form表单,或者链接,用户要是点击了,就会在用户不知情的情况下直接给服务器发送带有cookie的请求。
- xss是基于程序的漏洞,而csrf只是基于逻辑的漏洞,并不是代码有问题。
- 以前有类似的案列,这是一个伪造的from表单。我小的时候好像就去填写过。
- 漏洞被利用的条件:
* 被害者已经完成了身份认证
* 进行关键性的信息提交的时候没有进行身份验证(确认机制)
* 攻击者了解web app请求的参数构造
* 需要社会工程学诱使被害者触发指令
CSRF攻击(low安全级别)
1.在low安全级别下的dvwa,没有任何的二次身份确认机制就可以直接更改密码,一个get请求,密码就被更改了
2. 我们就可以伪造一个页面诱使被害者点击。我打开windows虚拟机来当做被害者,windows上打开了dvwa并且登录了系统时,收到了一个来自kali的伪造页面(我用一个很粗糙的超链接代替一下),当被害者点击之后,密码就被修改了。
3. 使用Burpsuite CSRF PoC generator生成一个表单,在刚刚的页面使用这一段代码也就一样的
CSRF攻击(其他安全级别)
- 中安全级别在refer中做出限制,必须是要本机发出的请求才能修改。
- 直接进行修改的时候没有任何反应。可以在burp截断时在refer中做出修改,进行绕过。
- 高安全级别下,需要对原密码进行输入,对客户端身份进行了二次验证,就很难使用csrf攻击。