Web安全:缓存欺骗攻击;基于缓存、CDN的新型Web漏洞

devtools/2025/1/24 6:20:35/
webkit-tap-highlight-color: rgba(0, 0, 0, 0);">

基于缓存CDN的新型Web漏洞

    • 漏洞原理
    • 利用方式
    • 解决方法

Web缓存欺骗漏洞(Web Cache Deception)是一种利用不安全的缓存机制来泄露用户敏感信息的攻击方式。攻击者通过操控请求URL诱导缓存系统将敏感信息缓存并对其他用户公开,可能导致用户数据泄露等严重问题。

漏洞原理

缓存
现代大多数Web应用会在应用前置CDN缓存代理,再通过URL来决定是否缓存内容。下面这里放一个Nginx的例子

	location ~* \.(css|js|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {proxy_cache cache;proxy_cache_valid 200 3m;proxy_cache_use_stale error timeout updating;......}

这段代码是 Nginx 配置的一部分,用于处理静态资源(如 CSS、JS、图片等)的缓存和代理。它定义了针对某些文件类型(通常是静态文件)的请求如何通过 Nginx 转发到后端的web应用,并缓存这些文件以提高性能。

  • location:定义一个匹配规则,匹配请求路径中的文件类型。
  • ~*:表示正则匹配,且不区分大小写。
  • \.(css|js|...):匹配文件扩展名为 CSS、JS、PNG 等静态资源。
  • proxy_cache cache:启用代理缓存,使用名为cache缓存区域。
  • proxy_cache_valid:当后端返回 HTTP 200 响应时,缓存的有效时间为 3 分钟。

Web的路径规则
这里我们写一个Go语言的Web应用的一部分示例,这个应用定义了一个/profile接口:

router := gin.Default() 
router.GET("/profile*", profileHandler) 
router.Run(":8080")
...

接口的处理是这样的,通过Token获取用户名再获取用户信息,以确保用户信息的安全。

func profileHandler(c *gin.Context) {//从Token中获取用户名username, err := GetUsernameFromToken(c)//获取用户信息userinfo,err := GetUserInfo(username)if err != nil { c.JSON(http.StatusUnauthorized, gin.H{ "status": "error", "message": err.Error()}) return }c.JSON(http.StatusOK, gin.H{"status": "success","data": userinfo )
}

利用方式

  1. 首先受害者是已经登录的状态
  2. 攻击者发送链接:http://*****.com/profile***********.css
  3. 受害者访问攻击者构造的链接,受害者的敏感数据将被Nginx缓存
  4. 攻击者访问其链接,因为Nginx会将其视为一个css文件,对其进行缓存,因此所有人都可以访问。

解决方法

  • 严格验证URL的路径和扩展名,拒绝非法请求。
  • 配置CDN/中间件的缓存规则,禁止对用户敏感页面的缓存
  • 确保敏感页面的响应头中包含:Cache-Control: no-store, no-cache, must-revalidate

http://www.ppmy.cn/devtools/153064.html

相关文章

Spring Boot整合WebSocket

目录 ?引言 1.WebSocket 基础知识 ?1.1 什么是 WebSocket? ?1.2 WebSocket 的应用场景 ?2.Spring Boot WebSocket 整合步骤 2.1 创建 Spring Boot 项目 2.2 添加 Maven 依赖 2.3 配置 WebSocket 2.4 创建 WebSocket 控制器 2.5 创建前端页面 引言 在…

《RWA全球产业白皮书》发布:向凌云教授解析全球经济转型与RWA的未来

2025年1月16日,旅美经济学家、全球新兴产业金融专家向凌云教授在美国发布了引人注目的《RWA全球产业白皮书》。该白皮书通过深入分析全球产业结构变化,尤其强调了“真实世界资产”(Real-World Assets,简称RWA)在当前及…

Flutter_学习记录_基本组件的使用记录

1.TextWidge的常用属性 1.1TextAlign: 文本对齐属性 常用的样式有: TextAlign.center 居中TextAlign.left 左对齐TextAlign.right 有对齐 使用案例: body: Center(child: Text(开启 TextWidget 的旅程吧,珠珠, 开启 TextWidget 的旅程吧&a…

基于 STM32 的智能农业温室控制系统设计

1. 引言 随着农业现代化的发展,智能农业温室控制系统对于提高农作物产量和质量具有重要意义。该系统能够实时监测温室内的环境参数,如温度、湿度、光照强度和土壤湿度等,并根据这些参数自动调节温室设备,如通风扇、加热器、加湿器…

docker-registry

安装依赖 apt install apache2-utils设置密码 htpasswd -Bbn 用户名 密码 >/data/registry_hub/passwd#docker私服部署 docker run -d -p 5000:5000 --name docker-registry -v /data/registry_hub/:/var/lib/registry -v /data/registry_hub/passwd:/auth/htpasswd \ -e …

【前端】CSS实战之音乐播放器

目录 播放器背景旋转音乐封面按钮进度条音量调节音乐信息按钮的效果JavaScript部分播放和暂停音乐切换音乐信息进度条 音量调节避免拖拽时的杂音音量调节条静音和解除静音 自动下一首实现一个小效果最终效果 播放器背景 <div class"play_box"></div>设置…

从0到1:.NET Core微服务的Docker容器奇幻冒险

扬帆起航&#xff1a;开启技术新征程 在当今软件开发的广袤海洋中&#xff0c;技术浪潮此起彼伏&#xff0c;不断推动着行业的变革与发展。.NET Core 微服务与 Docker 容器化技术的结合&#xff0c;宛如一艘强大的战舰&#xff0c;引领着开发者驶向高效、灵活、可扩展的软件开…

2025年美国大学生数学建模竞赛赛前准备计划

您的点赞收藏是我继续更新的最大动力&#xff01; 一定要点击文末的卡片&#xff0c;那是获取资料的入口&#xff01; 知识技能&#xff0c;火速巩固 01 数学模型&#xff1a; 回顾核心理论&#xff1a;快速回顾数学建模的基础理论&#xff0c;如线性代数、概率统计、微分方…