《WEB安全漏洞100讲》(第4讲)CSRF漏洞

news/2024/11/9 5:02:27/

1.CSRF漏洞原理

CSRF(Cross-site request forgery),跨站请求伪造,简写 CSRF/XSRF。指利用受害者尚未失效的身份认证信息(cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害者的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作(如转账、改密等)。

CSRF与XSS最大的区别就在于,CSRF并没有盗取cookie而是直接利用

2.CSRF漏洞测试

 上文说过了CSRF漏洞不盗取用户身份信息,而是利用用户身份信息去伪装成受信任的用户来发起请求。一般情况下,我们可以通过抓包软件抓取数据包,然后以GET或POST形式制作成链接或页面,之后诱骗目标用户点击。目标用户点击后,因为浏览器会自动携带cookie向服务器发送请求,这样用户可能在不知情的情况下完成了对自己不利的操作

比如恶意用户lisi发现某银行个人网银的转账请求如下所示(注意www.testbank.com为本地演示地址):

GET /personTransfer.do?account=612**158&money=1000.0&name=lisi HTTP/1.1
Host: www.testbank.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:107.0) Gecko/20100101 Firefox/107.0
Cookie:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://www.testbank.com
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: cross-site
Sec-Fetch-User: ?1
Te: trailers
Connection: close

lisi现在希望大家都给自己转账,他将account改为自己的账号,name改为他的名字,money改为1000.0元。之后使用Burp构造CSRF POC。

 我们可以点击下方Copy Html将它粘贴成一个html文件,置于我们的服务器下,然后将这个链接发给目标用户,想办法让他点击即可。

这里为了演示,我直接选择Test in browser,之后会出现一个URL,点击Copy,这个链接就是给目标用户点击的。

 当我访问这个链接后http://burpsuite/show/3/qizpy26u7wa3myaejlqbzowa66ktko5n,可以看到浏览器携带着我的Cookie向lisi发起了转账操作,这样在我不知情的情况下,lisi就盗取了我的money。

你可以清晰的看到,点击不明链接的危害有多大!

3.CSRF漏洞修复

(1)使用token

CSRF攻击想要成功,攻击者必须要准确地预测所有的参数从而伪造出合法的请求。所以我们可以在请求中添加一个随机的参数token,它是随机的,并是一次性的,并在服务器端检验,如果请求中没有token或者token的内容不正确,那么就拒绝该请求。

(2)检测Referer

通过检查Referer的值,我们就可以判断这个请求是合法的还是非法的,如果Referer是以自己的网站开头的域名,那么就说明该请求是合法的。

(3)关键操作只接受 POST 请求。


http://www.ppmy.cn/news/2024.html

相关文章

面试10分钟就完事了,问的实在是太...

干了两年外包,本来想出来正儿八经找个互联网公司上班,没想到算法死在另一家厂子。 自从加入这家外包公司,每天都在加班,钱倒是给的不少,所以也就忍了。没想到11月一纸通知,所有人不许加班,薪资…

线段树模板(Java)

线段树一、线段树概念二、线段树模板1.建树2. 单点修改3.区间查询4.完整代码及测试一、线段树概念 线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。它的主要优势是对于区间求和…

从入门到精通,收下这 22 个 Python 学习网站

今天一并给大家整理推送,希望能帮你在这条道路上,走得更顺畅,走得更远,更稳… 0. 学习整体思路 我做为一个过来人,有一些经验想要分享: 前期:花点时间选一门口碑上佳的入门电子文字教程&…

SM4分组密码算法

对称加密算法SM4SM4算法介绍一、SM4加密流程二、轮函数F1.合成置换T3.非线性变换τ2.线性变换L4.加密的结果总结SM4算法介绍 SM4.0于2013年3月被列为国家密码行业标准“GM/T 0002-2012《SM4分组密码算法》(原SMS4分组密码算法)”。2016年被列入国家标准…

【Map 和 WeakMap 的区别】

Map 1.传统对象结构 Map本质上是一个键值对的集合。和传统对象结构相比,传统对象只能用字符串作为键名,这在使用上造成了很大的限制。 const data {} //element为节点对象 const element document.querySelector(.node) console.log(element) //输…

探花交友_第2章_环境搭建(新版)

探花交友_第2章_环境搭建(新版) 文章目录探花交友_第2章_环境搭建(新版)课程介绍 《探花交友》1、项目介绍1.1、项目背景1.2、市场分析1.3、目标用户群体1.4、使用场景1.5、竞争对手分析1.5.1、竞品选择1.5.2、竞品分析1.6、项目简…

Transformer Encoder-Decoer 结构回顾

有关于Transformer、BERT及其各种变体的详细介绍请参照笔者另一篇博客:最火的几个全网络预训练模型梳理整合(BERT、ALBERT、XLNet详解)。 本文基于对T5一文的理解,再重新回顾一下有关于auto-encoder、auto-regressive等常见概念&…

一个基于.Net高性能跨平台内网穿透工具

作为一名程序员,我们平常需要调试远程API(如公众号回调)、远程操作公司内部、家里的电脑,我们都会用到内网穿透的工具。 今天给大家推荐一个高性能跨平台内网穿透工具的开源项目。 项目简介 一个基于.Net开发的内网穿透工具&am…