声明:

本文编写的目的仅用于学习!

一、认识CSRF漏洞

CSRFCross-Site Request Forgery)跨站请求伪造,是一种利用用户在某网站的身份认证信息,通过伪造请求来执行恶意操作的攻击方式。

(1)CSRF漏洞的基本原理:

  1. 攻击目标:攻击者的目标通常是受害者已经登录的某个网站(比如银行、社交媒体等);

  2. 攻击方式:攻击者诱使受害者点击恶意链接或访问恶意网页,这个链接或网页会向受害者已经登录的目标网站发起伪造请求。由于受害者已经登录并且网站信任其身份,目标网站会认为这个请求是合法的。

  3. 请求伪造:伪造的请求通常会携带一些恶意的参数,比如修改用户信息、转账、删除数据等。目标网站在接收到这个伪造的请求时,可能不会对请求的来源进行有效验证,从而执行了攻击者的恶意操作。

(2)CSRF漏洞的工作流程

  1. 受害者登录:受害者先登录一个网站(如网上银行、社交平台等),并且此时浏览器保存了该网站的登录认证信息(比如 cookie)。

  2. 攻击者构造恶意请求:攻击者构造一个恶意网页或链接,链接中包含一个目标网站的请求(如更改账户密码、转账等)。该请求看似合法,但实际上是恶意构造的。

  3. 受害者点击链接:受害者在不知情的情况下点击了攻击者诱导的链接,或访问了包含恶意请求的网页。

  4. 伪造请求被发送:由于受害者已经登录目标网站,浏览器会自动附带上该网站的 Cookie 等身份认证信息,目标网站接收到这个伪造的请求时,认为这个请求来自合法用户,从而执行了恶意操作。

举个例子

假设你已经登录了网上银行,攻击者通过发送一封电子邮件或者社交媒体链接诱使你点击。在点击之后,恶意链接会发送一个请求(比如转账1000元到攻击者的账户),请求携带的参数看起来和正常操作完全一样。

由于银行网站没有验证请求的来源,认为这是一个来自合法用户的请求,因此会执行这个操作,转账就成功了。

(3)为什么CSRF是一个漏洞?

  • CSRF漏洞的存在是因为网站往往没有验证请求的来源(如来源网站、HTTP头部的RefererOrigin,以及是否有CSRF令牌等)。
  • 攻击利用了网站对用户身份认证的信任,但没有验证请求是否是用户有意发出的。

(4)防止CSRF攻击的方法:

  1. 使用CSRF令牌:网站可以生成一个随机的CSRF令牌,并在每次用户请求时(特别是POST请求)将该令牌包含在请求中,且每次请求的令牌不同,服务器会验证该令牌是否合法。如果请求中缺少令牌或令牌不正确,服务器就拒绝执行请求。

  2. 使用SameSite Cookie属性:可以在设置cookie时使用SameSite属性,它可以防止浏览器在跨站请求时自动带上cookie,从而避免CSRF攻击。比如SameSite=Strict会完全禁止跨站请求携带cookie。

  3. 验证请求来源:可以通过检查请求的Referer头部或Origin头部,确保请求来自合法的域名。

  4. 要求用户输入验证码:对于关键操作,如更改密码或进行资金转账,可以要求用户输入验证码或进行二次身份验证,增加攻击的难度。

  5. POST请求而非GET请求:对于可能造成副作用的操作(如修改密码、转账等),尽量使用POST请求而不是GET请求,因为GET请求通常容易被恶意链接滥用。

二、漏洞扫描工具

1. OWASP ZAP (Zed Attack Proxy)

OWASP ZAP 是一个非常流行的开源安全扫描工具,专门用于发现Web应用程序中的安全漏洞,包括CSRF漏洞。它是由OWASP(开放Web应用程序安全项目)提供的,功能强大,适合渗透测试人员和安全研究人员使用。

下载地址:

OWASP ZAP 官方下载页面

下载与安装:
  1. 访问 OWASP ZAP 官方下载页面
  2. 根据你的操作系统选择适合的版本下载:
    • Windows:Windows Installer
    • macOS:macOS Installer
    • Linux:下载.tar.gz.deb文件,根据你的发行版选择。
  3. 下载完成后,按照安装向导进行安装。
使用方法:
  1. 启动ZAP:安装完毕后,打开ZAP工具。ZAP会启动一个本地代理服务器,默认情况下是 localhost:8080

  2. 配置浏览器代理

    • 打开浏览器并设置其代理为 127.0.0.1,端口为 8080(即 ZAP 代理的默认端口)。
  3. 抓取应用程序

    • 在配置好的浏览器中,开始访问你想检测的Web应用程序,ZAP 会自动将浏览器的请求转发到其代理服务器,并分析应用程序中的请求和响应。
  4. 检测CSRF漏洞

    • 在ZAP主界面中,选择**“Active Scan”**功能,扫描整个应用程序。
    • ZAP会自动检测Web应用程序中的各种安全漏洞,包括CSRF漏洞。
  5. 查看报告

    • 扫描完成后,ZAP会生成一份安全报告,其中列出可能的CSRF漏洞及其相关信息。
特点:
  • 免费、开源。
  • 强大的自动化扫描功能。
  • 可以检测各种Web应用漏洞(包括CSRF、XSS、SQL注入等)。
  • 支持插件扩展,可以自定义扫描规则。

2. Burp Suite Community Edition

Burp Suite 是另外一个非常强大的Web应用程序安全测试工具,特别是在渗透测试领域广泛使用。其 Community Edition(免费版)虽然功能有限,但依然具备CSRF漏洞检测的基本功能。

下载地址:

Burp Suite Community Edition 官方下载页面

下载与安装:
  1. 访问 Burp Suite 官方下载页面
  2. 根据你的操作系统选择适合的版本(Windows、macOS、Linux)进行下载。
  3. 下载完成后,安装Burp Suite Community Edition。
使用方法:
  1. 启动Burp Suite

    • 打开Burp Suite后,进入"Proxy"界面。
  2. 配置浏览器代理

    • 和ZAP一样,你需要将浏览器的代理设置为 127.0.0.1 和端口 8080,使Burp能够监听到浏览器的请求。
  3. 访问目标Web应用

    • 在配置好的浏览器中,访问你想要测试的Web应用。Burp Suite会抓取所有的HTTP请求和响应。
  4. 启动扫描

    • 进入"Scanner"标签页,启动一个主动扫描(Active Scan),它会自动检测包括CSRF漏洞在内的各种漏洞。
  5. 查看报告

    • 扫描完成后,Burp Suite会显示扫描结果,列出所有检测到的漏洞,其中包括CSRF漏洞(如果存在)。
特点:
  • 强大的Web应用安全测试工具。
  • 适合渗透测试人员。
  • 免费版有一些功能限制,但足以用于基本的CSRF检测。

总结:
  • OWASP ZAP 是一个全面的安全测试工具,适合初学者和渗透测试人员,功能强大且完全免费。
  • Burp Suite Community Edition 是一个非常流行的安全测试工具,特别适用于渗透测试和漏洞分析。尽管免费版功能有限,但仍然足够用于简单的漏洞检测。

这两个工具都可以帮助你检测Web应用中的CSRF漏洞,并提供详细的报告和修复建议。

PikachuDVWA(Damn Vulnerable Web Application)两个靶场都可以用来练习CSRF漏洞,并且它们都有自己独特的特点。下面是关于这两个靶场在练习CSRF漏洞方面的简要评估:

三、在线练习靶场

1. Pikachu靶场

Pikachu 是一个专为网络安全学习和演练设计的靶场,里面有多个与Web安全相关的练习题目,其中包括CSRF漏洞的练习。它是一个较为轻量级的靶场,主要以简单、清晰的教学为目的。

优点:
  • 简单易用:适合初学者,针对具体漏洞(如CSRF、XSS等)有精心设计的练习。
  • 针对性强:每个漏洞都有清晰的场景设置和明确的目标,练习难度适中。
  • 良好的指导:在进行攻击时,通常会提供步骤说明,帮助你理解如何利用漏洞。
  • 跨平台支持:支持Docker,可以方便地在本地环境部署进行练习。
缺点:
  • 功能有限:相比一些大型的靶场,Pikachu的漏洞场景较为简单,可能无法覆盖到更复杂的CSRF漏洞利用场景。
  • 资源较少:可能对于一些有一定经验的学习者来说,练习场景有些基础。
适用人群:
  • 初学者和CSRF漏洞的入门练习者。
  • 希望通过快速学习并掌握CSRF漏洞的基本原理和攻击方式的人。
练习CSRF漏洞的步骤:
  1. 在Pikachu平台中选择CSRF漏洞相关的练习题目。
  2. 按照题目提供的环境进行操作,进行CSRF攻击。
  3. 理解题目中的漏洞设定和解决方案。
  4. 实践并尝试在题目环境下完成攻击任务。

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漏洞的步骤:
  1. 安装和配置:将DVWA安装在本地或虚拟机中,确保它能正常运行。

    • 可以选择使用XAMPP或LAMP等集成开发环境进行快速安装。
  2. 进入CSRF模块:在DVWA的Web界面中,选择“CSRF”漏洞模块(通常在“漏洞”栏目下)。

  3. 设置难度:可以根据需要调整模块的难度级别(Low、Medium、High),这会影响应用的防御机制,比如是否开启了CSRF防护。

  4. 进行攻击

    • 在低难度下,攻击通常较为简单。你可以通过伪造一个恶意请求来利用CSRF漏洞。
    • 在更高难度下,可能需要绕过一些防护机制(如CSRF令牌、SameSite Cookies等)。
  5. 分析与理解:通过练习,你将学会如何在不同的防护水平下成功利用CSRF漏洞。


总结:

  • Pikachu靶场:如果你是刚接触Web安全并希望快速学习和理解CSRF漏洞的基本概念,那么Pikachu是一个非常不错的选择。它设计简单,适合入门级练习。

  • DVWA:如果你已经对Web安全有一定的了解,并希望深入练习不同种类的漏洞,尤其是了解在更复杂环境下如何防御和利用CSRF漏洞,DVWA是一个更全面且富有挑战性的选择。

如果你是初学者,我建议你可以先从Pikachu开始,掌握CSRF漏洞的基本攻击方式,再逐步转向DVWA,挑战更复杂的场景。

关于这两个靶场练习的详细解析,可以关注我接下来的文章

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐