CSRF和SSRF漏洞的总结

目录

CSRF

简介

原理

利用方式

防范

SSRF

简介

漏洞场景

常见的伪协议及利用方式

危害

防范

CSRF和SSRF的区别

攻击方向

利用对象

攻击目标

利用难度

危害范围

防御方式


CSRF

简介

CSRF,即跨站请求伪造(Cross-Site Request Forgery),是一种常见的 Web 应用程序安全漏洞。

它通常发生在用户在某个信任的网站上保持登录状态,而同时访问了恶意网站的情况下。攻击者利用用户浏览器的自动发送请求功能,诱导用户在不知情的状态下,以其在信任网站上的合法身份执行恶意操作。

CSRF 攻击的特点在于它利用了用户已经通过身份验证的会话,使得服务器误以为是合法用户发起的请求。这些恶意请求可能包括修改用户个人信息、进行转账、发布非法内容等,从而给用户和网站带来严重的损失。

原理

CSRF(跨站请求伪造)的原理可以概括为以下几个关键步骤:

  1. 用户登录受信任的网站 A,并在浏览器中建立会话,会话信息通常以 Cookie 等形式存储在浏览器中。

  2. 此时,用户未退出网站 A,会话仍然有效。

  3. 攻击者在恶意网站 B 上构造一个精心设计的请求,该请求的目标是网站 A 上的某个敏感操作,例如修改密码、转账等。

  4. 攻击者通过各种手段诱导用户访问恶意网站 B,可能是发送恶意链接、在其他网站上嵌入恶意内容等。

  5. 当用户访问恶意网站 B 时,浏览器会自动携带网站 A 的会话 Cookie 等认证信息,向网站 A 发送请求。

  6. 网站 A 的服务器接收到这个请求,由于请求中包含有效的会话信息,服务器误以为这是用户的合法操作,从而执行了攻击者构造的敏感操作。

简单来说,CSRF 利用了用户浏览器在发送请求时自动携带会话信息的特性,以及网站服务器对请求来源验证的不足,使得攻击者能够以用户的身份在用户不知情的情况下执行非法操作。

利用方式

CSRF 主要有以下几种常见的利用方式:

  1. 更改用户信息:攻击者可以构造请求来修改用户的个人资料,如用户名、邮箱地址、联系电话等。

  2. 进行资金操作:例如诱导用户进行未经授权的转账、支付、提现等涉及资金的行为。

  3. 执行恶意操作:比如删除用户的重要数据、发布不良信息等。

  4. 修改密码:强制更改用户的登录密码,从而获取对用户账户的完全控制权。

  5. 社交工程诱导:通过发送欺诈性的电子邮件或消息,诱使用户点击包含 CSRF 攻击的链接。

为了防范 CSRF 攻击,网站通常会采用多种安全措施,如添加验证码、验证请求来源、使用令牌等。

防范

为了防范 CSRF 攻击,常见的措施包括:

  1. 在关键请求中添加验证码,要求用户手动输入,增加攻击的难度。
  2. 验证请求的来源,通过检查 HTTP 请求头中的 Referer 字段或 Origin 字段来判断请求是否来自合法的源。
  3. 为每个请求添加不可预测的令牌(Token),服务器端验证令牌的有效性,确保请求是合法的。

SSRF

简介

SSRF(Server-Side Request Forgery,服务器端请求伪造)是一种攻击者利用服务端的漏洞,构造请求并让服务端发起请求的攻击方式。攻击者可以控制服务端向其他服务器发送请求,从而达到攻击内网或其他不可直接访问的目标的目的。

SSRF 形成的原因通常是服务端提供了从其他服务器获取数据的功能,但没有对目标地址进行充分的过滤与限制。例如,服务端可能允许用户通过提交 URL 来获取网页内容、加载图片、下载文件等,如果没有对用户提交的 URL 进行严格验证,攻击者就可能构造恶意的 URL 来利用此漏洞。

漏洞场景

以下是一些可能存在 SSRF 漏洞的常见场景:

  1. 图片加载与下载:通过 URL 加载或下载图片,如果开发者对图片进行了额外处理(如加水印、压缩等),可能导致 SSRF 问题。
  2. 在线翻译:通过 URL 翻译对应文本的内容。
  3. 转码服务:将网页内容通过相关手段转为适合手机屏幕浏览的样式。
  4. 分享功能:通过 URL 分享网页内容,类似于获取 URL 地址中标题以及文本的内容作为显示。
  5. 未公开的 API 实现以及其他调用 URL 的功能:如某些网站通过 API 获取远程地址的 XML 文件来加载内容,或者类似 360 网站评分等功能。
  6. 数据收集处:收集用户输入的可能涉及 URL 或 IP 地址的地方。

常见的伪协议及利用方式

一些常见的可用于 SSRF 攻击的函数在不同编程语言中都可能存在,例如 PHP 中的file_get_contentsfsockopencurl_exec等函数,如果使用不当,可能导致 SSRF 漏洞。

当发现 SSRF 漏洞后,可以测试各种可用的 URL 伪协议来进一步利用该漏洞。

常见的伪协议及利用方式如下:

  • file 协议:可用于读取服务器本地的文件。例如,?url=file:///etc/passwd(在 Linux 系统中)或?url=file://c:\windows\system32\drivers\etc\hosts(在 Windows 系统中)。但通常无法读取内网其他机器的文件。
  • dict 协议:可以用来探测内网的主机存活与端口开放情况,还能泄漏安装软件的版本信息等。例如,dict://ip 地址:端口。不过,该协议不支持换行符,一次只能执行一条命令,不能用于攻击需要交互的应用。
  • http/https 协议:通过发送 http 或 https 请求来探测内网主机是否存活。比如,?url=http://127.0.0.1/flag.php。由于 get 请求的参数直接加在 url 里,所以可探测那些使用 get 请求即可攻击的内网应用。
  • gopher 协议:gopher 协议比较强大,支持发出 get、post 请求,可用于构造各种请求包来攻击内网应用,甚至可用于反弹 shell。但使用时需注意一些细节,例如它会吃掉第一个字符,回车需表示为%0d%0a,直接发%0d%0a可能会出现问题,需编码为%250d%250a等。

危害

SSRF 攻击的危害包括但不限于:

  1. 端口扫描:探测内网中其他服务器开放的端口。
  2. 内网 Web 应用指纹识别:识别内网应用使用的框架、平台、模块以及 CMS 等,为后续的渗透测试提供信息。
  3. 攻击内网 Web 应用:利用内网安全薄弱点,如溢出、弱口令等,攻击内网应用或本地机器,获取 shell 或其他敏感信息。
  4. 读取本地文件:通过file://协议读取服务器本地的文件。

防范

为了防范 SSRF 攻击,可以采取以下措施:

  1. 限制协议:仅允许httphttps等必要的协议。
  2. 限制 IP:避免应用被用于获取内网数据或攻击内网。
  3. 限制端口:将请求的端口限制为http常用的端口,如 80、443、8080、8090 等。
  4. 过滤返回信息:对远程服务器返回的响应进行验证和过滤,防止敏感信息泄露。
  5. 统一错误信息:避免用户根据错误信息推断出远端服务器的端口状态等信息。
  6. 严格验证用户输入:对用户提交的 URL 或其他涉及请求的参数进行严格的验证和过滤,确保其符合预期的格式和范围。
  7. 实施访问控制:对服务端与其他系统之间的通信进行细粒度的访问控制,只允许必要的请求。

在实际应用开发中,需加强对服务端代码的安全审查和测试,及时发现并修复可能存在的 SSRF 漏洞,以降低安全风险。同时,要保持对新的攻击手法和漏洞的关注,不断更新和完善防御措施。

CSRF和SSRF的区别

CSRF(跨站请求伪造)和 SSRF(服务器端请求伪造)虽然都属于安全漏洞,但在以下方面存在明显区别:

  1. 攻击方向

    • CSRF:是从浏览器端(客户端)发起的攻击,利用用户在浏览器中已有的会话和认证信息,诱使用户在不知情的情况下向目标网站发送恶意请求。
    • SSRF:是从服务器端发起的攻击,攻击者操纵服务器向其他服务器或内网发起请求。
  2. 利用对象

    • CSRF:针对用户与网站之间的交互。
    • SSRF:针对服务器本身的功能和权限。
  3. 攻击目标

    • CSRF:主要用于执行用户权限范围内的操作,如修改用户信息、进行交易等。
    • SSRF:可以用于访问内网资源、探测端口、攻击内网服务等。
  4. 利用难度

    • CSRF:相对较容易,通常只需要诱导用户点击恶意链接或访问恶意页面。
    • SSRF:需要找到服务器端存在漏洞的功能点,利用难度相对较高。
  5. 危害范围

    • CSRF:一般局限于用户自身的数据和操作权限。
    • SSRF:可能对整个服务器所在的内网环境造成较大威胁。
  6. 防御方式

    • CSRF:常见的防御方法包括添加验证码、验证请求来源、使用令牌等。
    • SSRF:主要通过限制服务器能访问的地址范围、禁止使用危险协议、严格过滤输入等方式防御。

  • 23
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值