用户7759
发布于 IP属地北京

服务器端请求伪造(SSRF)和跨站请求伪造(CSRF)

Server Side Request Forgery(SSRF)服务器端请求伪造是攻击者构造恶意URL去攻击外部互联网无法访问的内部系统(由服务器端发起,请求与当前出口相连的而与外部隔离的内部系统)

1. SSRF 形成原因

服务器端需要从其他服务器获取数据,而且没有对目标地址做过滤与限制(比如从指定URL地址获取网页文本内容,加载指定地址的图片、文档等)
当网络应用程序在未验证用户提供的 URL 的情况下获取远程资源时,就会出现 SSRF 漏洞。即使受到防火墙、VPN 或其他类型网络访问控制列表 (ACL) 的保护,攻击者也可以胁迫应用程序向意外目标发送伪造请求。随着现代网络应用程序为终端用户提供便利的功能,获取 URL 已成为一种常见的应用场景。因此,SSRF 的发生率越来越高。此外,由于云服务和架构的复杂性,SSRF 的严重性也越来越高。

1.1 SSRF 漏洞的利用方式

  • 对与外网服务器相连的内网服务器、网络设备、应用等进行端口扫描,获取服务banner信息
  • 攻击运行在内网的服务器或应用(DoS攻击、溢出等)
  • 对内网web应用进行指纹识别、扫描默认路径/文件名
  • 利用file协议读取内网文件等

1.2 如何防御 SSRF 漏洞

开发者可以从以下三个角度来防御SSRF:

  • 从网络层:
    在不同的网络中详细划分远程资源访问功能
    强制要求防火墙或网络遵循“默认拒绝”访问控制原则去阻止除必要内网流量以外的所有流量
    为每个应用建立基于生存周期和操作权限的防火墙策略
    每次访问记录在案并从防火墙阻止网络流量
  • 从应用层:
    过滤并验证所有用户输入的数据
    对URL scheme、端口、目的地址启用白名单
    不要直接给用户返回原生回复
    禁用HTTP重定向
    注意URL一致性以避免类似攻击(DNS 重绑定、检查时间与使用时间的竞争条件)
    不建议用黑名单过滤,攻击者有很多办法绕过这种防御
  • 其他要考虑的情况:
    别在前端系统部署其他安全相关的服务(如OpenID)在这些系统上控制控制本地网络连接
    对于具有专用和可管理用户组的前端,在独立系统上使用网络加密(如 VPN),以满足安全性需求

2. CSRF 形成原因

CSRF属于业务逻辑漏洞,从服务器角度所有请求均合法。Cross-Site Request Forgery(CSRF)跨站请求伪造是利用受害者尚未失效的身份认证信息(cookie、session等)诱骗受害人点击恶意链接或访问包含恶意代码(js脚本)的页面,在受害人不知情的情况下以受害人的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作。

2.1 CSRF 漏洞的利用方式

攻击者伪造一个请求骗取用户的点击,盗取用户的身份认证信息向服务器发送请求(针对网络购物服务如转账、刷单,针对内容产品的刷赞、买评论,以及通用的修改密码盗取账户等)

2.2 如何防御 CSRF 漏洞

  • 使用黑名单过滤敏感IP地址如10.0.0.0/8、172.16.0.0/12、192.168.0.0/16、localhost私有地址
  • 使用黑名单过滤file:、dict:、gopher:、ftp:等敏感协议
  • 对正常业务使用白名单
  • 内网服务也开启鉴权(Memcached、Redis、Elastic search、MongoDB)
  • 对回显内容进行二次加工
浏览 (720)
点赞 (3)
收藏
打赏
评论