嗨,你們好,
在這裏,我將談論幾個月前在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
因爲我沒法使用某些經常使用技術(例如html
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的開放重定向保護:)android
翻譯自medium.com
免責申明:本文由互聯網整理翻譯而來,僅供我的學習參考,若有侵權,請聯繫咱們,告知刪除。git