漏洞挖掘365天挑战——Day023:漏洞学习之开放式重定向

开放式重定向利用对一个给定域的信任诱使目标对象访问一个恶意Web网站。

例如:https://www.google.com/?redirect_to=https://evil.com

由于开放式重定向仅仅重定向用户,因此有时认为它们的影响很小,挖掘这类漏洞不值得被奖赏。例如,Google漏洞奖励项目就认为开放式重定向风险很小,不值得奖励

就上面的例子而已,当我们访问上面的URL时,Google网站会接收到一个HTTP的GET请求,然后依据redirect_to参数中指定的值来确定将你的浏览器重定向到哪里。

Google网站服务器会返回一个用于指示浏览器重定向用户的HTTP响应状态码。通常,这个状态码是302,但有时也可能是301、303、307或308。

参数攻击

如果Google没有验证redirect_to参数是否为其将访问者重定向到一个自有合法站点,攻击者就可以将该参数的值换成它们自己的URL。

当检查这类漏洞时,要重点关注具有特定名称的URL参数,例如url=、redirect=、next=等,因为这些都有可能会表示引导用户重定向去的URL。

另一个需要注意的是,重定向参数不总是明显命名的,参数也可能随着网站的不同而不同,即使同一个网站内部不同的链接时也可能不同。在有些情况下,参数可能以单个字母的形式表示,例如r=或u=等

标签重定向

TML标签和JavaScript都可以重定向浏览器。HTML标签可以告知浏览器刷新网页,并向标签中的content属性定义的URL发起GET请求。下面是一个例子:

<meta http-equiv="refresh" content="0; url=https://www.google.com/">

content属性定义了浏览器发起HTTP请求的两个步骤

  1. content属性定义了浏览器在向URL发起HTTP请求前需要等待的时间,在本例中,这个时间是0秒
  2. content属性确定了浏览器向其发起GET请求的网站中URL的参数,在本例中,这个参数是https://www.google.com

当攻击者可以控制标签时,就可以利用这种重定向的能力。

JS重定向

攻击者可以通过JS修改DOM中的window对象的localtion属性来实现重定向。

window.location = https://www.google.com/
window.location.href =https://www.google.com
window.location.replace(https://www.google.com)

通常,仅当攻击者能够执行JavaScript语句时才能设置window.location的属性值,而获得JavaScript执行权限一般是通过跨站脚本漏洞或者网站允许用户自定义重定向URL的漏洞来实现。

开放式重定向例子

1.Shopify主题设置的开放式重定向漏洞

链接:https://www.hackerone.com/reports/101962/

URL: https://apps.shopify.com/services/google/themes/preview/supply–blue?domain_name

这里是一个参数攻击,利用的URL:

https://app.shopify.com/services/google/themes/preview/supply–blue?domain_name=attacker.com

主要是shopify并没有对domain_name进行验证,导致可以重定向到恶意网址。

挖掘难点: 主要是需要去熟悉业务,而且这个开店的业务,这个主题的漏洞一般人还是很难去测试。

2.Shopify登录的开放式重定向漏

链接:https://www.hackerone.com/reports/103772

URL:http://mystore.myshopify.com/account/login

利用URL:

http://mystore.myshopify.com/account/login?checkout_url=.attacker
.com

checkout_url参数用来重定向用户,当访问上面的链接时,会重定向到

http://mystore.myshopify.com.<attacker&gt;.com/

然后DNS解析上面的URL时,会根据右侧优先的原则,重定向到<attacker>.com

3.HackerOne中间网页重定向漏洞

链接:https://www.hackerone.com/reports/111968/

很多网站会实现链接跳转的中间页来抵御重定向。这个中间页会说明你正在离开网站的域。在这个漏洞中,黑客利用了hackerone使用的一个zendesk系统来跳转。因为hackerone是信任zendesk的,zendesk缺可以注册个性化的zendesk账户,而且还支持重定向到其他的域。这就导致了hackerone可以被重定向到一个非信任的网站,而不会被提醒。

为了验证这个漏洞,黑客Mahmoud Jamal创建了一个具有子域http://compayn.zendesk.com
的Zendesk账号。然后他使用Zendesk主题编辑器(管理者可以通过主题编辑器定制自己的Zendesk网站的外观)在头文件中加上了如下JavaScript代码:

<script>document.location.href = «http://evil.com»;</script>

通过使用上面的JavaScript脚本,Jamal引导浏览器去访问http://evil.com。

当用户点击以下链接的时候,就会去访问evil.com了

https://hackerone.com/zendesk_session?locale_id=1&return_to=https://support.hackerone.com/ping/redirect_to_account?state=compayn:/

注意的点

在挖掘的时候,一定要注意网站所使用的服务,这些服务也会成为一个攻击的点。

漏洞挖掘365天挑战——Day023:漏洞学习之开放式重定向”的一个响应

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

您正在使用您的 WordPress.com 账号评论。 注销 /  更改 )

Facebook photo

您正在使用您的 Facebook 账号评论。 注销 /  更改 )

Connecting to %s