1. 首页
  2. 网络安全技术

防火墙与缓存机制Bypass造成SSRF漏洞

前言

这次漏洞分享是由是一连串漏洞组合起来,包含不同层次的Bypass,最终可以获取印度最大股票经纪公司的AWS凭据。下面我将分享我绕过Web应用防火墙,再绕过Web缓存然后造成SSRF漏洞,最后获取到AWS账户凭据的过程。

漏洞挖掘

在第一阶段的测试过程中,我发现网站上一些端点与内部文件系统会发生一些交互,我开始检查是否存在LFI(本地文件包含)漏洞,但是这个网站被CloudFlare防火墙保护着

防火墙与缓存机制Bypass造成SSRF漏洞

Bypass WAF

如过要绕过防火墙,我只需请求直接发送至后端服务器。希望后端服务器或者均衡负载器没有设置请求IP白名单。

防火墙与缓存机制Bypass造成SSRF漏洞

现在,我还需要找到后端服务器IP,简单运行dig www.agesec.com,就可以获取:

防火墙与缓存机制Bypass造成SSRF漏洞

LFI

设置完Host后,我尝试通过LFI读取/etc/pass的内容,然后得到下面这个响应:

防火墙与缓存机制Bypass造成SSRF漏洞

读取AWS元数据

OK,现在我成功来过了防火墙并且造成LFI漏洞。然后我开始收集IP的whois信息,我发现该IP属于AWS。现在我的下一个目标则是通过SSRF漏洞来读取AWS账户凭据,我认为这一定可以实现,因为(端点名称)可以命名页面或者说URL的名字。于是我开始着手读取AWS实例的元数据

防火墙与缓存机制Bypass造成SSRF漏洞

Bypass Web cache

响应码为200,这表明请求与API发生交互,但只返回了一个空响应。但为什么会这样呢?仔细查看响应内容,你会发现服务器标头为NginxX-Proxt-Cache标头用于Nginx缓存层其值为HIT,因此当用户尝试访问AWS元数据时,首先会HITNginx缓存层,而缓存层为空值,响应自然也为空。

现在为了从服务器获取正常响应,我得绕过缓存层。首先,我需要理解Nginx缓存系统的URL缓存页面规则。

我的理解是缓存一般是在URL路由路径这个基础上完成的,所以如果某个URL为https://vul.agesec.com/a.html,此URL与路由路径相匹配,然后触发缓存。但是如果把URL改为https://vul.agesec.com/a.html?,那么URL路由路径将无法与缓存规则匹配,因此不会触发缓存,直接从服务器获取相应。所以我尝试在http://169.254.169.254/latest/meta-data后面加上?或者其他任意特殊字符,逃避URL路由路径的检测,下面是我得到的响应:

防火墙与缓存机制Bypass造成SSRF漏洞

可以看到X-Proxt-Cache的值已经变为MISS,这表明API调用并没有触发缓存,而是直接从服务器获取响应。

因此,我成功绕过了缓存层来利用SSRF漏洞读取AWS元数据。现在我还需要读取AWS元数据凭据(http://169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance?):

防火墙与缓存机制Bypass造成SSRF漏洞

我最终我获取了AWS访问ID,密码访问密钥和一些token,使用它们我可以登入AWS账户,接触大量秘密内容。

小结

在这次渗透测试中,我首先绕过了Cloudflare防火墙,利用LFI漏洞然后通过绕过Web缓存机制将LIF提升为SSRF,最后我通过利用SSRF漏洞获取了AWS账户凭据。

文章来源:【安全时代】 原文链接:https://www.agesec.com/article/953.html

安全时代全部内容仅适用于网络安全技术爱好者学习研究,学习中请遵循国家相关法律法规。

安全时代全部数据来源互联网,不代表安全时代立场,如侵犯您权益可邮箱联系我们,详情:版权纠纷

发表评论

电子邮件地址不会被公开。 必填项已用*标注