Pikachu-CSRF(跨站请求伪造)
CSRF漏洞概述:
在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接),然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击也就完成了,所以CSRF攻击也被称为"one click"攻击。
我们判断一个网站是否存在CSRF漏洞,其实就是判断其对关键信息(比如密码等敏感信息)的操作(增删改)是否容易被伪造。
CSRF和XSS的区别:CSRF是借用户的权限完成攻击,攻击者并没有拿到用户的权限,而XSS是直接盗取到了用户的权限,然后实施破坏。
如何确认一个web系统存在CSRF漏洞:
- 对目标网站增删改的地方进行标记,并观察其逻辑,判断请求是否可以被伪造;
--比如修改管理员账号,并不需要验证旧密码,导致请求容易被伪造
--比如对于敏感信息的修改并没有使用安全的token验证,导致请求容易被伪造
2.确认凭证的有效期(这个问题会提高CSRF被利用的概率)
--虽然推出或者关闭了浏览器,但是cookie仍然有效,或者session并没有及时过期,导致CSRF攻击变得简单
CSRF(get)实验:
1.根据提示,我们随机选择账号进行登录。在这里,以lucy账号为例,进行登录。登录之后,可以看到lucy的个人信息
2.更改lucy的住址为shijiazhuang,并在这个过程中进行抓包
3.所以只需要拿到get请求的这个链接,如果想更改lucy的地址为邢台,只需将get请求中的地址更改为xingtai。然后将这个更改后的get请求以任何方式发送给lucy。
攻击者伪造的链接:127.0.0.1://GET /pikachu-master/vul/csrf/csrfget/csrf_get_edit.php?sex=girl&phonenum=12345678922&add=shijiazhuang&email=lucy%40pikachu.com&submit=submit发送给lucy,lucy收到后在处于登陆状态时,访问该链接。住址发生了变化
CSRF(post)实验:
1.登录lucy账号,并改写地址为北京并进行抓包。可以看到请求是通过post方式进行提交的,所以没有办法通过URL来伪造请求
2.我们要做一个站点,然后在站点上做一个 表单,让被攻击目标去点击我们站点中的恶意表单的URL。通过这个恶意表单向存在CSRF漏洞的页面提交post请求(和post类型的xss方法相同)
CSRF Token:
Token是如何防止CSRF的:
CSRF的主要问题是敏感操作的链接容易被伪造。
解决容易被伪造的方法:
--每次请求,都增加一个随机码(需要够随机,不容易伪造),后台每次对这个随机码进行验证
1.在pikachu的CSRF Token页面以lucy的账号进行登录,然后修改地址信息,并进行抓包
2.每次刷新页面,token值都会发生变化。这样就防止了CSRF
CSRF防范措施: