CSRF
跨站请求伪造
它与XSS不同在于从信任角度来看
XSS 利用用户对站点的信任
CSRF:站点对已经经过身份认证的信任
CSRF和之前的注入漏洞不同,CSRF其实不是一个技术漏洞,而是一种业务逻辑漏洞(对关键操作缺少确认机制),CSRF攻击过程需要的条件:
-
目标用户已经登录过网站,已经完成身份认证
-
新请求的认证不需要重新身份认证
-
攻击者必须了解web请求的参数构造
-
目标用户访问了攻击者的URL(社会工程学)
简单实验说明概念,同样还是利用DVWA上的环境,我们在通过CSRF修改密码时候,原先的密码是不需要我们重复输入到页面上,我们只需要输入新的密码即可修改,利用burp进行截断查看
这时我们可以构造出一个新的页面,诱使受害者点击链接从而修改密码。修改如下:
1.先构造一个直接将密码修改为我们想要的密码链接
2.接着打开apache服务,将此链接投放至受害者网页
3.用户点击后,(但是这里的前提条件是用户之前登陆过此页面,拥有此页面的修改密码权限)
上面这种情况的弊端就是我们将鼠标放在123链接上的时候会看到链接的GET请求,所以我们需要将GET请求改成POST请求。此时burp会帮助我们实现此行为
此时再去访问a.html页面
点击按钮后的现象和用get方式一样,同样可以修改密码,这样做更加隐蔽一些
上述实验只是阐述CSRF的大概思路,具体情况要根据不同页面设计上的逻辑漏洞而形成不同的攻击手段
检测是否可以利用CSRF:
现在大多数网站都有anti-CSRF-token ( 可以理解为服务器和客户端之间的一个随机值)
检查referrer头是否可以伪造
检查会话超时时间