免责声明:用户因使用公众号内容而产生的任何行为和后果,由用户自行承担责任。本公众号不承担因用户误解、不当使用等导致的法律责任
CSRF漏洞原理简介:
CSRF(Cross-Site Request Forgery,跨站请求伪造) 是一种利用浏览器对用户身份的自动验证机制发起攻击的Web安全漏洞。其核心原理是:攻击者诱导用户在已登录目标网站的情况下,向该网站发起一个伪造的请求,而服务器误认为这是用户的合法操作。
核心攻击流程
1.用户登录目标网站
用户正常登录网站(如银行系统),浏览器存储会话Cookie(如Session ID
),用于后续身份验证。
2.攻击者构造恶意请求
攻击者创建一个看似无害的页面(如钓鱼网站、论坛帖子),其中隐藏了针对目标网站的敏感操作请求
3.用户触发恶意请求
用户访问攻击者的页面时,浏览器自动携带已存储的Cookie向目标网站发送请求。
4.服务器执行非法操作
服务器收到请求后,验证Cookie合法(认为是用户本人操作),执行转账、改密等敏感操作。
CSRF漏洞本质
1.信任矛盾
服务器依赖Cookie验证身份,但无法区分请求是用户主动发起还是被第三方伪造。
2.浏览器机制漏洞
浏览器默认自动发送Cookie,且攻击者可通过多种方式(图片、链接、表单)触发跨域请求。
关键危害
1.用户无感知:攻击全程用户可能毫无察觉(如访问一个普通网页)。
2.高破坏性:可导致资金盗取、密码重置、数据篡改等严重后果。
防御思路
1. 打破“请求可预测性”:使用随机Token验证请求来源(如CSRF Token)。
2. 限制Cookie作用域:设置SameSite属性,禁止第三方网站携带Cookie。
3. 增强请求验证:检查Referer/Origin头,确保请求来自同源。
案例一:基于pikachu靶场练习CSRF
1.登录后发现为get传参(post传参相同),当我们点击非法链接时个人信息就会被自动修改,所以打开bp,生成ff链接进行模拟实战。
2.利用csrf模块生成脚本放于非pikachu路径下
3.打开模拟网页出现伪造的链接,当用户点击伪造链接时个人信息被修改
4.然后我们点击按钮观察变化.
5.性别由111变更为222,修改成功。
注意:bp只是检测是否存在csrf漏洞。
首先,自己登录网页注册信息抓包然后修改其中信息伪造成一个链接让小明点击,这样他的信息就会被修改,这就是利用bp进行csrf跨站请求伪造。
注意:如果被攻击者没有打开相应的网站,csrf就不会成功
总结:xss和csrf的区别在于 xss是偷取用户cookie然后自己登录进行修改信息,获取了用户权限。而csrf则是利用用户权限进行修改信息,并没有获取用户权限。
案例二:模拟页面出现csrf漏洞
1.首先打开我们模拟的一个登录界面
2.建立模拟数据库
3.利用数据库存储的账号密码进行登录操作,可以看到当前余额为9q
4.当我们界面没有关闭时弹出一个非f链接并且我们打开非f链接会发生什么
4.我们可以通过网络适配器发现非法网页获取了我们银行的转账页面链接及cookie值
5.当我们返回时9q已经变为7q,攻击者成功盗取我们zj
6.最后观察其非法页面链接时发现。它获取了我们的转账页面链接及用于身份验证的cookie进行了转账操作
总结:当我们打开一个非法链接时,对放会获取我们的cookie及链接进行登录,既跨站请求伪造。防御方法:referer:判断当前请求页面的来源页面的地址是否合法进而阻止csrf 但利用bp可以修改referer字段所以不安全,第二种方法为二次身份验证如修改密码时需要输入原来的密码,避免了csrf 或token :Token"常用于身份验证和授权。服务器生成并返回给客户端的Token可以用于验证用户的身份,确保用户有权限访问特定资源。,但token也可以被获取如联合xss进行获取,所以综上所述二次身份验证最为安全。
以下为结合xss漏洞获取token值的payload
(需要源代码联系博主免费领取!!还希望多多关注点赞支持,你的支持就是我的最大动力!!!)