前言 当我们访问https://时,我想知道你是否曾经想过一个想法www.paypal.com/myaccount/home/stylesheet.css,或者https://www.paypal.com/myaccount/settings/notifications/logo.png可能会暴露敏感数据,甚至攻击者可以控制我们的帐户。 Binggo!如果你有这个想法,那是对的。在这种情况下,Web缓存欺骗是一种攻击媒介。 漏洞背景介绍 网站通常通过CDN,负载平衡器或反向代理等功能实现Web缓存。通过缓存经常访问的文件来减少服务器响应延迟。例如,网站“htttp: //www.examplecom ”配置了反向代理。对于包含有关用户个人信息的页面,例如“http://www.example.com/home.php”,因为每个用户返回不同的内容,这些页面通常是动态生成的,不在缓存服务器中。缓存。通常缓存的主要是可以公开访问的公共文件,例如css文件,js文件,txt文件,图像等。此外,许多最佳实践文章建议缓存可公开访问的静态文件并忽略HTTP缓存标头。 从对等方接收数据时失败 4.代理识别该文件具有css后缀; 5.在缓存目录中,代理服务器创建目录home.php并将返回的内容保存为non-existent.css。 ( 攻击者欺骗用户访问“http://www.example.com/home.php/logo.png ”,导致包含用户个人信息的页面被缓存,以便可以公开访问。在更严重的情况下,如果返回的内容包含会话ID,安全问题的答案或Csrf令牌。这样攻击者就可以获得此信息,因为通常大多数站点的静态资源都是公共可访问的。整个过程如图1所示:
图1 Web缓存漏洞利用 link1 该漏洞必须存在,至少必须满足以下两个条件:1web缓存功能根据扩展名保存,并忽略缓存头; 2当访问诸如“http://www.examplecom/home.php/non-existent.css”之类的页面不存在时,将返回“home.php”的内容。 , 防御措施主要包括3点:1设置缓存机制,只缓存http缓存头允许的文件,从根本上消除问题; 2如果缓存组件提供选项,则根据内容类型设置为缓存; 3访问“http://Www.example.com/home.php/non-existent.css”对于此类页面不存在,不返回“home.php”的内容,但返回404或302。 link2 在Paypal可以修复信息之前,可以获得的信息包括:用户名,账户金额,信用卡的最后4位数,交易数据和电子邮件地址。 受攻击影响的一些页面包括:“https://www.paypal.com/myaccount/home/attack.css ”,“https://www.paypal.com/myaccount/settings/notifications/attack.css ”,“https://Paypal.com/cgi-bin/webscr/attack.css?cmd=_history-details “。 可以缓存的静态文件后缀如下:aif,aiff,au,avi,bin,bmp,cab,carb,cct,cdf,class,css,doc,dcr,dtd,gcf,gff,gif,grv, hdml,hqx,ico,ini,jpeg,jpg,js,mov,mp3,nc,pct,ppc,pws,swa,swf,txt,vbs,w32,wav,wbmp,wml,wmlc,wmls,wmlsc,xsd,压缩。 缓存过期:测试后,访问文件后,缓存大约5个小时。如果在这些文件之间再次访问该文件,则延长有效期。 Paypal访问页面和相应的视频: https://www.paypal.com/myaccount/home https://www.paypal.com/myaccount/settings 从对等方接收数据时失败