CSRF漏洞超详细讲解(适合小白从0到1)
声明:
本文编写的目的仅用于学习!
一、认识CSRF漏洞
CSRF(Cross-Site Request Forgery)跨站请求伪造,是一种利用用户在某网站的身份认证信息,通过伪造请求来执行恶意操作的攻击方式。
(1)CSRF漏洞的基本原理:
-
攻击目标:攻击者的目标通常是受害者已经登录的某个网站(比如银行、社交媒体等);
-
攻击方式:攻击者诱使受害者点击恶意链接或访问恶意网页,这个链接或网页会向受害者已经登录的目标网站发起伪造请求。由于受害者已经登录并且网站信任其身份,目标网站会认为这个请求是合法的。
-
请求伪造:伪造的请求通常会携带一些恶意的参数,比如修改用户信息、转账、删除数据等。目标网站在接收到这个伪造的请求时,可能不会对请求的来源进行有效验证,从而执行了攻击者的恶意操作。
(2)CSRF漏洞的工作流程:
-
受害者登录:受害者先登录一个网站(如网上银行、社交平台等),并且此时浏览器保存了该网站的登录认证信息(比如 cookie)。
-
攻击者构造恶意请求:攻击者构造一个恶意网页或链接,链接中包含一个目标网站的请求(如更改账户密码、转账等)。该请求看似合法,但实际上是恶意构造的。
-
受害者点击链接:受害者在不知情的情况下点击了攻击者诱导的链接,或访问了包含恶意请求的网页。
-
伪造请求被发送:由于受害者已经登录目标网站,浏览器会自动附带上该网站的 Cookie 等身份认证信息,目标网站接收到这个伪造的请求时,认为这个请求来自合法用户,从而执行了恶意操作。
举个例子:
假设你已经登录了网上银行,攻击者通过发送一封电子邮件或者社交媒体链接诱使你点击。在点击之后,恶意链接会发送一个请求(比如转账1000元到攻击者的账户),请求携带的参数看起来和正常操作完全一样。
由于银行网站没有验证请求的来源,认为这是一个来自合法用户的请求,因此会执行这个操作,转账就成功了。
(3)为什么CSRF是一个漏洞?
- CSRF漏洞的存在是因为网站往往没有验证请求的来源(如来源网站、HTTP头部的
Referer或Origin,以及是否有CSRF令牌等)。 - 攻击利用了网站对用户身份认证的信任,但没有验证请求是否是用户有意发出的。
(4)防止CSRF攻击的方法:
-
使用CSRF令牌:网站可以生成一个随机的CSRF令牌,并在每次用户请求时(特别是POST请求)将该令牌包含在请求中,且每次请求的令牌不同,服务器会验证该令牌是否合法。如果请求中缺少令牌或令牌不正确,服务器就拒绝执行请求。
-
使用
SameSiteCookie属性:可以在设置cookie时使用SameSite属性,它可以防止浏览器在跨站请求时自动带上cookie,从而避免CSRF攻击。比如SameSite=Strict会完全禁止跨站请求携带cookie。 -
验证请求来源:可以通过检查请求的
Referer头部或Origin头部,确保请求来自合法的域名。 -
要求用户输入验证码:对于关键操作,如更改密码或进行资金转账,可以要求用户输入验证码或进行二次身份验证,增加攻击的难度。
-
POST请求而非GET请求:对于可能造成副作用的操作(如修改密码、转账等),尽量使用POST请求而不是GET请求,因为GET请求通常容易被恶意链接滥用。
二、漏洞扫描工具
1. OWASP ZAP (Zed Attack Proxy)
OWASP ZAP 是一个非常流行的开源安全扫描工具,专门用于发现Web应用程序中的安全漏洞,包括CSRF漏洞。它是由OWASP(开放Web应用程序安全项目)提供的,功能强大,适合渗透测试人员和安全研究人员使用。
下载地址:
下载与安装:
- 访问 OWASP ZAP 官方下载页面。
- 根据你的操作系统选择适合的版本下载:
- Windows:
Windows Installer - macOS:
macOS Installer - Linux:下载
.tar.gz或.deb文件,根据你的发行版选择。
- Windows:
- 下载完成后,按照安装向导进行安装。
使用方法:
-
启动ZAP:安装完毕后,打开ZAP工具。ZAP会启动一个本地代理服务器,默认情况下是
localhost:8080。 -
配置浏览器代理:
- 打开浏览器并设置其代理为
127.0.0.1,端口为8080(即 ZAP 代理的默认端口)。
- 打开浏览器并设置其代理为
-
抓取应用程序:
- 在配置好的浏览器中,开始访问你想检测的Web应用程序,ZAP 会自动将浏览器的请求转发到其代理服务器,并分析应用程序中的请求和响应。
-
检测CSRF漏洞:
- 在ZAP主界面中,选择**“Active Scan”**功能,扫描整个应用程序。
- ZAP会自动检测Web应用程序中的各种安全漏洞,包括CSRF漏洞。
-
查看报告:
- 扫描完成后,ZAP会生成一份安全报告,其中列出可能的CSRF漏洞及其相关信息。
特点:
- 免费、开源。
- 强大的自动化扫描功能。
- 可以检测各种Web应用漏洞(包括CSRF、XSS、SQL注入等)。
- 支持插件扩展,可以自定义扫描规则。
2. Burp Suite Community Edition
Burp Suite 是另外一个非常强大的Web应用程序安全测试工具,特别是在渗透测试领域广泛使用。其 Community Edition(免费版)虽然功能有限,但依然具备CSRF漏洞检测的基本功能。
下载地址:
Burp Suite Community Edition 官方下载页面
下载与安装:
- 访问 Burp Suite 官方下载页面。
- 根据你的操作系统选择适合的版本(Windows、macOS、Linux)进行下载。
- 下载完成后,安装Burp Suite Community Edition。
使用方法:
-
启动Burp Suite:
- 打开Burp Suite后,进入"Proxy"界面。
-
配置浏览器代理:
- 和ZAP一样,你需要将浏览器的代理设置为
127.0.0.1和端口8080,使Burp能够监听到浏览器的请求。
- 和ZAP一样,你需要将浏览器的代理设置为
-
访问目标Web应用:
- 在配置好的浏览器中,访问你想要测试的Web应用。Burp Suite会抓取所有的HTTP请求和响应。
-
启动扫描:
- 进入"Scanner"标签页,启动一个主动扫描(Active Scan),它会自动检测包括CSRF漏洞在内的各种漏洞。
-
查看报告:
- 扫描完成后,Burp Suite会显示扫描结果,列出所有检测到的漏洞,其中包括CSRF漏洞(如果存在)。
特点:
- 强大的Web应用安全测试工具。
- 适合渗透测试人员。
- 免费版有一些功能限制,但足以用于基本的CSRF检测。
总结:
- OWASP ZAP 是一个全面的安全测试工具,适合初学者和渗透测试人员,功能强大且完全免费。
- Burp Suite Community Edition 是一个非常流行的安全测试工具,特别适用于渗透测试和漏洞分析。尽管免费版功能有限,但仍然足够用于简单的漏洞检测。
这两个工具都可以帮助你检测Web应用中的CSRF漏洞,并提供详细的报告和修复建议。
Pikachu 和 DVWA(Damn Vulnerable Web Application)两个靶场都可以用来练习CSRF漏洞,并且它们都有自己独特的特点。下面是关于这两个靶场在练习CSRF漏洞方面的简要评估:
三、在线练习靶场
1. Pikachu靶场
Pikachu 是一个专为网络安全学习和演练设计的靶场,里面有多个与Web安全相关的练习题目,其中包括CSRF漏洞的练习。它是一个较为轻量级的靶场,主要以简单、清晰的教学为目的。
优点:
- 简单易用:适合初学者,针对具体漏洞(如CSRF、XSS等)有精心设计的练习。
- 针对性强:每个漏洞都有清晰的场景设置和明确的目标,练习难度适中。
- 良好的指导:在进行攻击时,通常会提供步骤说明,帮助你理解如何利用漏洞。
- 跨平台支持:支持Docker,可以方便地在本地环境部署进行练习。
缺点:
- 功能有限:相比一些大型的靶场,Pikachu的漏洞场景较为简单,可能无法覆盖到更复杂的CSRF漏洞利用场景。
- 资源较少:可能对于一些有一定经验的学习者来说,练习场景有些基础。
适用人群:
- 初学者和CSRF漏洞的入门练习者。
- 希望通过快速学习并掌握CSRF漏洞的基本原理和攻击方式的人。
练习CSRF漏洞的步骤:
- 在Pikachu平台中选择CSRF漏洞相关的练习题目。
- 按照题目提供的环境进行操作,进行CSRF攻击。
- 理解题目中的漏洞设定和解决方案。
- 实践并尝试在题目环境下完成攻击任务。
2. DVWA (Damn Vulnerable Web Application)
DVWA 是一个经典的、开源的Web应用漏洞靶场,专为渗透测试和漏洞研究设计。它包含了多种Web应用漏洞,CSRF是其中之一。
优点:
- 漏洞种类丰富:DVWA包含多种Web漏洞,如SQL注入、XSS、CSRF等,适合全面学习Web安全漏洞。
- 不同难度级别:DVWA允许你调整漏洞的难度级别(Low、Medium、High),这对于练习CSRF漏洞非常有帮助,因为在不同的安全级别下,攻击的难度和防御策略也会不同。
- 真实环境模拟:它模拟了一个真实的Web应用环境,适合更深入的渗透测试和漏洞分析。
- 社区支持良好:DVWA有广泛的社区支持,你可以在论坛或其他安全网站找到大量的教程和解决方案。
缺点:
- 环境配置相对复杂:相比Pikachu,DVWA的安装和配置可能稍微复杂一些,尤其是在本地搭建环境时。
- 并非专门为CSRF设计:虽然DVWA有CSRF漏洞的练习,但它的目标是让你掌握更多种类的漏洞,所以它的CSRF场景可能不如Pikachu那样针对性强。
适用人群:
- 有一定基础的学习者,特别是那些已经了解一些Web安全概念,并希望深入练习各种Web漏洞的人。
- 渗透测试人员、开发人员,或者任何对Web应用安全感兴趣的人。
练习CSRF漏洞的步骤:
-
安装和配置:将DVWA安装在本地或虚拟机中,确保它能正常运行。
- 可以选择使用XAMPP或LAMP等集成开发环境进行快速安装。
-
进入CSRF模块:在DVWA的Web界面中,选择“CSRF”漏洞模块(通常在“漏洞”栏目下)。
-
设置难度:可以根据需要调整模块的难度级别(Low、Medium、High),这会影响应用的防御机制,比如是否开启了CSRF防护。
-
进行攻击:
- 在低难度下,攻击通常较为简单。你可以通过伪造一个恶意请求来利用CSRF漏洞。
- 在更高难度下,可能需要绕过一些防护机制(如CSRF令牌、SameSite Cookies等)。
-
分析与理解:通过练习,你将学会如何在不同的防护水平下成功利用CSRF漏洞。
总结:
-
Pikachu靶场:如果你是刚接触Web安全并希望快速学习和理解CSRF漏洞的基本概念,那么Pikachu是一个非常不错的选择。它设计简单,适合入门级练习。
-
DVWA:如果你已经对Web安全有一定的了解,并希望深入练习不同种类的漏洞,尤其是了解在更复杂环境下如何防御和利用CSRF漏洞,DVWA是一个更全面且富有挑战性的选择。
如果你是初学者,我建议你可以先从Pikachu开始,掌握CSRF漏洞的基本攻击方式,再逐步转向DVWA,挑战更复杂的场景。
关于这两个靶场练习的详细解析,可以关注我接下来的文章
更多推荐



所有评论(0)