嗨,大家好。在这里,我将谈论几个月前在Linkedln中发现的一个不错的漏洞。在进入漏洞之前,让我快速向您介绍开放重定向。
当应用程序以不安全的方式将用户可控制的数据合并到重定向的目标中时,就会出现开放式重定向漏洞。攻击者可以在应用程序内构造一个URL,该URL导致重定向到任意外部域。易受攻击的网站链接的示例可能像这样:
http://xyz.com/login.html?vulparam = https://xyz.com/next
在此示例中,“ vulparam”参数表示成功登录后将用户发送到的位置。如果网站未验证“ vulparam”参数值以确保目标网页合法且有针对性,则攻击者可以操纵该参数将受害者发送到攻击者制作的假页面上:
https://xyzcom/login.html?vulparam=http://evil.com
但是绕过Linkedln开放重定向并不是那么容易。易受攻击的网址是
https://www.linkedin.com/lite/external-redirect?url=http://evilzone.org&urlHash=YKI5
由于我无法使用某些常用技术(例如
url = .. / evilzone.org
url = ///evilzone.org
url = ///www.linkedln.com@www.evilzone.org/%2f%2e%2e
现在,仅将“ url”值更改为任何恶意网站将在这里行不通。但是,还有一个额外的参数“ urlHash”,该参数看起来像是用户重定向到的URL的一些哈希值,因此,如果“ urlHash”值是“ url”的实际有效哈希值,则只有成功重定向地点。到目前为止,有一件事很清楚,即传统的绕过技术无法发挥任何作用,然后我回到原始请求包中查看能否绕过
该请求包括“referer”字段,该字段指示用户所访问的最后一页(他们单击链接的那一页),这引起了我的注意:“如何更改url值并查看验证是否在那里起作用? ” 。因此,我将header值更改为其他域,并且[face palm],但是依然没有成功。
让我们再尝试一次,我搜索了LinkedIn Android应用程序引荐来源网址,并找到了以下链接-https 😕/github.com/snowplow/referer-parser/issues/131,然后发现LinkedIn Android引荐来源网址为“ android-app: //com.linkedin.android ”。我在“ referer”标头字段中使用了Referer值,然后成功的重定向了:
成功的重定向,是的,我终于绕过了LinkedIn的开放重定向保护:)
翻译自medium.com
免责申明:本文由互联网整理翻译而来,仅供个人学习参考,如有侵权,请联系我们,告知删除。