Web缓存欺骗是一种新的攻击方式,危害范围可扩大至各种技术及框架。
前言
缓存的意义在于实现资源的快速访问,在Web程序中就使用了网络缓存功能,如CDN、负载均衡器及反向代理。
为了实现快速访问,同时保证数据安全,可将一些静态的、公共的、不敏感的文件缓存在服务器,而一些动态的、敏感的文件则不应缓存。
攻击前提及原理
攻击前提:代理服务器可以进行静态文件的缓存,但对文件的缓存头部置之不理,且服务器能返回错误请求中有效路径的文件内容。
举个例子:当请求http://www.ice.com/ice.php/AAAA.txt时,由于AAA.txt并不存在,服务器提取http://www.ice.com/ice.php/的内容,并将其作为HTTP缓存发送给代理服务器,在这个缓存的HTTP头部中,可能指示代理服务器不可缓存/AAAA.txt页面。
但由于代理服务器对文件的缓存头部置之不理,而且通过文件拓展名判断出AAA.txt文件为静态文件,导致代理服务器缓存该页面,于是,代理服务器将创建一个名为ice.php的目录(如果没有),并在该目录下缓存AAA.txt,其内容为HTTP缓存。
也就是说,我们访问http://www.ice.com/ice.php/返回的HTTP头部与访问http://www.ice.com/ice.php/AAAA.txt返回的HTTP头部是相同的,具有相同的缓存头部及内容类型。
总结来说,即使服务器返回了不可缓存该页面的头部指令,但代理服务器仍然可以绕过该指令,同时如果该不存在的文件的拓展名被检测为静
本文详细介绍了Web缓存欺骗攻击的原理和实例,包括ChatGPT和Paypal的账户接管漏洞,以及IIS的负载均衡器安全问题。通过实例展示如何利用缓存机制绕过服务器规则,强调了合理配置缓存和服务器安全设置的重要性。
订阅专栏 解锁全文
990

被折叠的 条评论
为什么被折叠?



