freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

渗透测试 | web缓存投毒
Notadmin 2023-12-06 15:50:39 192174

前言

现在大多数网站为了提高响应速度,都会在各地节点设置一些缓存服务器,这些服务器会缓存一些后端服务器的内容,如果收到了相同的请求则直接响应给客户端缓存的内容,如我们最常见的CDN就属于这种格式,这种方式提高了响应的速度,可也带来新的一些新的攻击方式,今天就来认识一下web缓存投毒。

由于本人水平有限,文章中可能会出现一些错误,欢迎各位大佬指正,感激不尽。如果有什么好的想法也欢迎交流~~

什么是web缓存?

先来了解一下什么是web缓存,Web缓存就是服务器会先将之前没见过的请求对应的响应缓存下来,然后当有认为是相同请求的时候直接将缓存发给用户,这样可以减轻服务器的负荷。

这里面有几个需要关注的点

1)什么样的请求被认为是相同的请求?

这个主要是根据请求包的几个关键特征(参数)来确定的,如认为host头,请求行,Referer,query参数消息头完全一致,则认为是相同的请求,缓存服务器如果有这个请求的缓存则会直接发送给客户端。这几个关键特征也被叫做缓存键,其它的字段被称作非缓键了。

2)缓存的信息是否会因为请求的不同而改变?

实际情况也是会的,如果开发过程中取请求的某些内容动态的填充到页面中,那么我们也就有可能改变缓存的内容,如果后端取X-Forwarded-Host的值填充到页面中。

1701848414_6570255ee32905527e509.png!small?1701848415684


web缓存投毒的利用条件?

1)页面被缓存服务器缓存

2)页面存在某个内容是根据非缓存键的值来生成的。例如存在非缓键X-Forwarded-Host,而页面存在一个a标签,它的href是根据X-Forwarded-Host来生成的

#正常请求
GET / HTTP/1.1
Host: test.com
X-Forwarded-Host: www.demo.com

#正常响应
<a href='www.demo.com'></a>

#我们就可以利用web投毒构造XSS
GET / HTTP/1.1
Host: test.com
X-Forwarded-Host: #'></a><script>alert(1)</script> // 

#响应变成了
<a href='#'></a><script>alert(1)</script> // '></a>


web缓存投毒可以造成的危害?

看了上面的介绍,大家对web缓存投毒应该有了基本的了解,那么web缓存投毒可以造成什么危害呢?

web缓存投毒只要是将带有payload的缓存发送给其它请求该页面的人,那么它跟xss就很相似,可以通过payload获取客户端的敏感信息或者修改页面内容。但是从影响范围来看,一旦成功缓存被投毒的响应,会影响到大量的用户,比起以往某些只能针对某个用户发起的攻击,危害大很多很多。


工具

上面的说了web缓存中毒的一个重点就是要找到非缓键对页面的影响,这点可以通过burp的一个插件param miner来实现。

param miner可以帮助我们找到影响页面响应的非缓键。

如下图,选择一个请求,右键->Extensions->Param Miner->Guess Params->Guess headers

默认配置即可

1701848456_6570258800f62ec6141a0.png!small?1701848456913

实际利用

接下来通过portswigger上面的靶场来进行实际利用

靶场地址:https://portswigger.net/web-security/web-cache-poisoning

1701848507_657025bb362f21fbc7dfa.png!small?1701848508664

1.一个非缓键导致的web缓存中毒

打开这个实验,抓取首页的数据包,将X-Forwarded-Host的值改为baidu.com,看到影响也发生了改变

1701848513_657025c132a3d52fe3371.png!small?1701848514192

这一步也可以通过上面的工具来完成,如下,可以探测到X-Forwarded-Host是一个可以影响页面结果的非缓存键。

1701848518_657025c6aff042f01595d.png!small?1701848519448


在服务器上修改创建一个脚本,内容如下

1701848522_657025ca7c87bf6c6c972.png!small?1701848523256

然后将页面的内容修改如下,多点击几次,让缓存生效,如下图,x-cache显示hit表示缓存已经生效。

1701848528_657025d0cfac865d288c0.png!small?1701848530020


然后刷新页面,可以看到弹窗

1701848533_657025d50823e93679342.png!small?1701848534365


2.cookie内容造成的web缓存投毒

实验地址:

可试读前30%内容
¥ 9.9 全文查看
9.9元开通FVIP会员
畅读付费文章
最低0.3元/天
# web安全
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 Notadmin 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
kkk
Notadmin LV.6
微信公众号:信安路漫漫
  • 87 文章数
  • 154 关注者
浅谈SSO认证原理及常见安全问题
2025-03-25
微信小程序测试技巧总结
2025-03-13
验证机制常见的问题
2025-03-10
文章目录