CSRF
CSRF:跨站请求伪造,是一种挟制用户在当前已登录的Web应用程序上执行非本 意的操作的攻击方法。
CSRF漏洞
CSRF漏洞概念:由于网站服务器对用户浏览器的信任导致用户在当前已登录的 Web站点的状态下,访问了攻击者构造的恶意连接,从而执行非本意操作的漏 洞;
过程:
-
用户打开浏览器,登录信任网站A,输入账号密码请求登录网站A。
-
用户信息通过验证后,网站A产生Cookie信息返回给用户浏览器。
-
用户在未退出网站A之前,在 同一浏览器 又打开了一个网站B。
-
网站B 接收到用户的访问请求后,网站B将包含向网站A请求的恶意的 代码返回给浏览器,用户浏览器渲染执行,触发恶意请求。
-
该条请求发送后,可信网站会以存储在浏览器中用户的Cookie处理该 请求,导致用户执行恶意操作。
漏洞危害
-
以受害者名义发送邮件,发消息。
-
盗取受害者的账号,甚至购买商品,虚拟货币转账。
-
修改受害者的网络配置(比如修改路由器DNS、重置路由器密码)。
-
网站后台创建管理员用户,破坏网站,获取服务器权限等。
检测漏洞
一般在用户密码修改、信息修改、添加账号、发布文章等一些敏感操作位置, 如果没有 二次校验 (图像验证码、短信验证码、原密码)那么就可以尝试检 测。
CSRF漏洞利用条件:
1.用户处于登陆目标网站的状态(Cookie)----已登录 未注销
2.用户点击攻击者发送的恶意URL连接
挖掘与修复
漏洞挖掘
目标:只要是存在用户注册及登陆站点都可以
intitle:用户注册
inurl:register.PHP/ASPX/JSP
挖掘思路:
1.注册两个账户 (test1/test2)
2.在账户的功能处抓包测试(修改用户头像/信息/状态/购买/结算/密码修改/ 地址添加/商品评论...)(form表单数据包)
3.查看是否是将修改的信息放在另外一个账户访问,是否成功修改信息
4.如果成功修改用户的信息,那就存在CSRF漏洞,查看信息/提交漏洞
漏洞防护
1、验证请求头中的HTTP Referer字段
2、在请求包中添加Token并验证
3、在HTTP头中自定义属性并验证
4、高危操作加入验证码机制
5、添加自动注销功能
6、添加二次验证功能
扩展token(一次性令牌)
1、Token的引入:Token是在客户端频繁向服务端请求数据,服务端频繁的 去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并 作出相应提示。
2、Token的定义:Token是服务端生成的一串字符串,以作客户端进行请求 的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给 客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上 用户名和密码。
3、使用Token的目的:Token的目的是为了减轻服务器的压力,减少频繁的 查询数据库,使服务器更加健壮。
漏洞区别
XSS与CSRF之间的异同点:
1.相同点:都是针对客户端进行攻击的漏洞
2.不同点:CSRF没有盗取用户的cookie而是直接利用完成客户端用户非本意 的操作,XSS是窃取Cookie在进行利用;