首页 > 其他分享 >Web安全:缓存欺骗攻击;基于缓存、CDN的新型Web漏洞

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

时间:2025-01-23 17:01:16浏览次数:3  
标签:Web 缓存 CDN cache Nginx proxy 攻击者

基于缓存、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

标签:Web,缓存,CDN,cache,Nginx,proxy,攻击者
From: https://blog.csdn.net/HackYourself/article/details/145325864

相关文章

  • CTFshow web入门 web69-77+118
    web69+70c=var_export(scandir('/'));查看目录,c=include('/flag.txt');得到flagweb71查看附件源码,在执行完命令后,会将页面字符替换为?,只需执行完命令立刻退出即可c=var_export(scandir('/'));exit();查看目录,c=include('/flag.txt');exit();得到flag,或者使用die();web......
  • 【转载】一个理想主义者到Web3包工头的蜕变
    1.请您介绍一下自己大家好,我是Robin。一名连续创业者、Web3包工头、独立工作室游戏爱好者。自2017年加入Web3领域以来,我一直从事开发、投研等方面的工作。我擅长永续合约以及借贷协议的开发。曾独立开发了Flux借贷协议的方案,后来发展成了fluxprotocol,是上一个周期崛起的国产借......
  • rocket.chat 安卓App连接失败 提示websocket在伺服器上未开启
    前言并不是很懂,纯粹瞎搞搞成功的环境前提rocket.chat服务器正常工作,局域网http正常访问nginx反向代理,开启ssl,可以通过https访问web端安卓手机使用App连接服务器手机错误截图解决方法并不是很懂,但是根据网上nginx转发ws的方法在location/块中增加proxy_http_versi......
  • C# WebAPI 插件热插拔
    背景WebAPI插件热插拔是指在不重启应用程序的情况下,能够动态地加载、更新或卸载功能模块(即插件)的能力。这种设计模式在软件开发中非常有用,尤其是在需要频繁更新或扩展功能的大型系统中。通过实现插件架构,可以将系统的不同部分解耦,使得它们可以独立开发、测试和部署。对于WebAPI......
  • Web-Chains:Web 版 Java Payload 生成与利用工具
    免责声明本文所提供的文字和信息仅供学习和研究使用,请读者自觉遵守法律法规,不得利用本公众号所提供的信息从事任何违法活动。本文不对读者的任何违法行为承担任何责任。工具来自网络,安全性自测,如有侵权请联系删除。工具介绍Web-Chains项目,又名Java-Chains项目,我们站在巨人......
  • 基于 WEB 开发的医药销售系统设计与实现
    标题:基于WEB开发的医药销售系统设计与实现内容:1.摘要摘要:随着互联网技术的发展,医药销售行业也在逐渐向线上转移。本文旨在设计并实现一个基于WEB的医药销售系统,以提高医药销售的效率和便利性。文章首先介绍了系统的背景和目的,然后详细阐述了系统的设计和实现方法。接着......
  • 基于 WEB 开发的在线求职招聘系统设计与实现
    标题:基于WEB开发的在线求职招聘系统设计与实现内容:1.摘要本文介绍了基于WEB开发的在线求职招聘系统的设计与实现。详细阐述了系统的背景、目的、方法、结果、结论和核心主题。通过对现有求职招聘系统的分析,结合用户需求,提出了系统的设计方案。采用了先进的WEB技术,实......
  • 基于WEB开发的网上问卷调查系统设计与实现
    标题:基于WEB开发的网上问卷调查系统设计与实现内容:1.摘要摘要:本文主要探讨了基于WEB开发的网上问卷调查系统的设计与实现。文章首先介绍了研究背景,即随着互联网的普及,网上问卷调查逐渐成为一种重要的数据收集方式。接着,文章阐述了研究目的,即设计并实现一个功能完善、易......
  • NoETL更实时灵活 | 智能数据检索、动态数据缓存与成本最优执行计划联合保障无数据移动
    在数据管理领域,传统上我们习惯于通过数据复制、转换和整合到单一物理数据库的方式来满足所有信息需求。然而,这种方式常常以牺牲灵活性和数据交付速度为代价,换取查询性能的提升。面对海量数据,是否只能通过一再复制来实现理想的性能表现?答案是否定的。今天的技术进步让我们可以......
  • skypack,一个针对浏览器优化的cdn
    前言看solidjs的文档时,发现其cdn引入部分,使用的是一个没有见过的cdn。skypack。https://www.skypack.dev/软件包已针对浏览器使用进行了预先优化。页面问题其在国内的速度依然不算快,平均1s,和npmmirror之类的没法比。然而,这个cdn还比较独特,不知道如何从中下载文件,实在有......