iOS系統關於URL Schemes的漏洞探究

iOS系統關於URL Schemes的漏洞探究

1、何爲URL Schemes

    我想這個東西的設計的目的是爲了方便App之間的相互調用與通信,你能夠在本身的App中使用OpenURL方法來喚起其餘的App。好比微信的URL Schemes是wiexin,咱們新建一個工程,實現以下代碼後運行程序:xcode

[[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"weixin://]];

這時你會發現,你的應用啓動後很快就調起了微信的客戶端。微信

2、由URL Schemes引起的漏洞的根源

一、一個小問題引發的漏洞根源

    如上所說,經過URL Schemes能夠在應用間相互喚起,而產生漏洞的根源在於這個URL並不是是應用惟一的。apple並無任何限制或者審覈這個URL的任何措施,也就是說,若是兩個App有着相同的URL Schemes,那麼系統喚起的App可能並非你想喚起的。app

二、URL Schemes的優先級如何肯定

    因爲相同的URL Scheme可能同時被多個App使用,再若是這些App都安裝在了同一個設備上,那麼系統究竟會喚起哪個呢?這個我也不能十分的肯定,只有一點能夠確定:若是有和系統應用的URL Scheme相同,那麼系統必定會喚起系統本身的應用,在這裏系統的應用有着最高的優先級(蘋果這裏作的好像很不厚道,將本身的應用保護了起來,而把廣大其餘開發者的應用放在漏洞前置之不理)。若是沒有和系統耦合的,那麼系統會喚起哪個App就看運氣了。不過,這也不是無章可循,通過測試,優先級和App的Bundle identifier有關,更準確說和Bundle identifier的字母排序有關,若是精心設計這個id,咱們就能夠作到截獲其餘應用的URL。ide

三、這個漏洞會引起什麼問題麼?

    僅僅經過上面的敘述,你可能還看不出這個漏洞會引起什麼樣的後果。但是若是你仔細觀察,你會發現,各類iPhone上的第三方調用,例如QQ音樂快捷登陸,騰訊的各類遊戲,甚至包括調用支付寶錢包的支付功能,都是經過這樣的原理實現的。若是這些回調的數據被截獲,那麼就等於說登陸信息,用戶信息甚至支付訂單信息都會暴漏在他人眼下,對於截獲者來講,他能夠用你的信息進行登陸,能夠替你完成支付,也能夠盜取你登錄後的用戶信息。函數

3、利用URL Scheme漏洞進行遠程登陸

    下面,就用一個實例來演示一下我如何經過一個假裝App登陸每天炫斗帳號。測試

    每天炫鬥是騰訊的一款十分火爆的格鬥遊戲,像其餘騰訊遊戲同樣,支持QQ和微信登陸,這裏我拿微信登陸爲例。url

    首先,咱們須要作一個假裝的App來截取用戶的登陸信息,新建一個項目,在plist文件中添加一個和每天炫鬥微信登陸相同的URL Scheme:spa

這裏的wx63124814f356e266就是微信登陸每天炫斗的URL Scheme,這裏將Bundle id設置爲A,使它有比每天炫鬥更高的優先級。設計

在AppDelegate中添加以下代碼:調試

-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
    NSLog(@"%@",url);
    return YES;
}

這個函數是在App被經過URL喚起時首先調用的函數,這裏傳入的URL就是用戶的登陸驗證信息,咱們能夠在這裏將這個信息發送回來。

將假裝好的程序跑一遍後,運行每天炫鬥,而後使用微信登陸,會發如今微信驗證成功後跳轉後並無跳轉回每天炫鬥應用,而是跳轉到了咱們假裝的這個Demo。這時xcode調試區會打印出以下的信息:

以後,來開始作咱們的侵入程序,這個其實更加簡單,新建一個工程,只須要添加一行代碼:

[[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"wx63124814f356e266://oauth?code=0118aa2f2b99d8a9e0e76a7176b2bd4E&state=weixin"]];

這裏的URL就是咱們截獲的帶參的URL,在另外一個裝有每天炫斗的手機上跑這個程序(在同一個手機上測試的話要將剛纔的假裝App刪去,否則它也會將咱們的侵入程序一塊兒騙了)。會發現登陸每天炫鬥成功,角色信息徹底一致。

    一樣的作法,還能夠遠程登陸QQ音樂,每天飛車等等各類經過微信,QQ,微博快捷登陸的應用。

4、要打敗你的敵人,必需要了解你的敵人

    不瞭解apple爲何一直不對URL Scheme作限制,或許須要或許不須要。可是這一點建議老是好的:在你的App使用快捷登陸的時候,最好同時將設備號或者某個本地保存的標誌綁定,防止惡意的第三方藉此獲取用戶的信息。

專一技術,熱愛生活,交流技術,也作朋友。

——琿少 QQ羣:203317592

相關文章
相關標籤/搜索