約會應用也不放過?利用參數污染漏洞繞過IDOR
最近,我發現了一款流行的約會軟體,該軟體已經擁有100多萬用戶,如此龐大的用戶群,引起了我對該軟體安全性的強烈興趣。
這款軟體的主要功能是,如果你和對方相互「喜歡」的話,就算匹配成功,然後就可以開始聊天了。除此之外,它還提供了許多額外的功能,如了解誰看過你的個人資料、誰喜歡你,等等。但是要想使用這些功能的話,需要在應用程序中付費購買。
在本次安全測試的過程中,我將burp設置為中間代理,用來攔截移動流量。下面的內容,是我在訪問自己的個人資料時候,burp攔截到的相關的流量。
在瀏覽個人資料的過程中,我注意到了一個現象,與男士相比,這款軟體為女士提供了更高的匿名性。女士的名字將使用縮寫形式(即名字和姓氏的第一個字母)。然而,男士的名字並沒有使用縮寫形式,相反,他們的個人資料中出現的都是全名。
看到了嗎,這明顯的不公平啊。也許,開發者可能認為男士是更好的社交工程師:D
後來,經過進一步的測試,我終於找到了第一個漏洞。
1.利用「Discover People across the Globe」功能
通過該功能,您就可以隨意進行虛擬旅行,無論身在何處,都可以結交其他地方的朋友了。但是,這是一項付費後才能夠使用的功能。
在瀏覽個人資料的同時,我在burp中發現了如下圖所示的請求。如果仔細查看下面的截圖,不難發現請求參數中含有與緯度和經度相關的參數。所以,我們只需將這兩個值改為我們想要的位置,即可獲得該區域的個人資料數據。
該軟體使用的名稱簡寫功能確實讓我非常苦惱。因為,如果只有這些有限的信息的話,社交工程都難以實施。
經過一番努力,我很快就克服了這個問題,因為我又發現了另一個漏洞。
2.獲取個人資料的完整信息
正如您之前所見到的那樣,當我瀏覽自己的個人資料的時候,會用到下列請求:
我的個人資料不僅顯示了完整的名稱,同時還有許多不會顯示給其他用戶的信息。該請求包含了我的UserID,哈哈,我下面要做的事情可能大多數黑客都已經想到了:將自己的UserID改為別人的用戶ID。
不幸的是……看起來沒有什麼效果!因為這裡得到了一個「401 Unauthorized」錯誤:(
下面展示的是目標用戶的個人資料頁面。(為了保護個人隱私,我給照片打了馬賽克)。
看起來,該應用程序似乎不存在直接對象引用漏洞。
別急!我們還有另一種方法。我們可以嘗試添加另一個UserId參數來進行測試,看看是否能夠通過參數污染訪問受害者的個人資料。
耶!成功了 :)
這一次,我成功得到了女孩的全名。這樣的話,通過社交網站進行社交工程就容易多了。除此之外,我還獲得了很多不對外公開的信息。
在獲取這些信息之後,就不難在臉書上找到她了。
我進一步考察了她在這個約會應用中的個人資料。然後,我還成功將自己的照片上傳到了她的個人資料中。不僅如此,我的大部分信息都被複制到受害者的個人資料中。
但是,我卻沒有找到刪除照片的方法。所以,男士們查看這位受害者的個人信息時會看到我的照片,但是名字卻是一個女孩的名字。
我設法了解這個問題的根源,但是發現payload中的內容真是一團糟。
我解碼payload中的字元串後,事情終於有了一些眉目。
{"showInitials":false,"personalQuote":"","Album":[{"photoStatus":"APPROVED","objectId":"10201413175049192","imageOrder":0,"srcBig":"http://store.s3.amazonaws.com/Pictures/1020141317<redacted>.jpg","profilePic":true},{"photoStatus":"APPROVED","objectId":"10201801229<redacted>","imageOrder":1,"srcBig":"http://store.s3.amazonaws.com/Pictures/102018012<redacted>.jpg","profilePic":false},{"photoStatus":"APPROVED","objectId":"1020286084<redacted>","imageOrder":2,"srcBig":"http://store.s3.amazonaws.com/Pictures/1020286084<redacted>.jpg","profilePic":false}],"degree":[{"isSelected":1,"tagId":1,"tagsDtoType":"NONE","name":"No Info (update your linked account)"}],"company":[{"isSelected":1,"tagId":215147778516386,"tagsDtoType":"USER_WORK","name":"<redacted>"}],"college":[{"isSelected":1,"tagId":2,"tagsDtoType":"NONE","name":"Dont Show」}],"religion":[{"isSelected":1,"tagId":1,"tagsDtoType":"USER_RELIGION","name":"Hindu"}],"location":"<redacted>","height":"<redacted>","showHeightType":"INCHES","tagsDtos":[{"tagId":"11","name":"Cricket","tagsDtoType":"SOME_TAG"},{"tagId":"84","name":"Painting","tagsDtoType":"SOME_TAG"},{"tagId":"85","name":"Sketching","tagsDtoType":"SOME_TAG"},{"tagId":"131","name":"Free Spirited","tagsDtoType":"SOME_TAG"}],"isMutualFriendVisible":true,"designation":[{"isSelected":1,"tagId":1,"tagsDtoType":"NONE","name":"No Info (update your linked account)」}],"ethnicity":[]}n
我用其他圖片替換了http://store.s3.amazonaws.com/Pictures/1020141317.jpg,這樣終於可以從她的個人資料中換掉我的照片了。
利用這個漏洞,可以從響應中查看她收到了多少個Crush(暗戀)消息。
接下來我們要做的事情,就是找到哪些人給她發送了Crush(暗戀)消息。
不久,我就發現了第三個漏洞。
3.閱讀其他人的CrushText消息
同樣,藉助參數污染,我就能夠讀取任何人的Crush(暗戀)消息。 (嗯……讓我看看你背地裡幹了什麼:D)
4.獲得無限的喜歡
在查看別人的個人資料時,我發現該軟體分配的喜歡遠遠不夠用啊!為了得到更多的喜歡,我需要等待10個小時以上。該軟體只會分配給用戶有限數量的喜歡,如果你用光了,那麼你就只好等待系統再次分配了。
但是,在測試過程中,我偶然發現了下面的請求:
你只需要添加一個人的targetID,她就成為你喜歡的對象了。更重要的是,在次數上面,這個方法是沒有限制的。
5.查看跳過的個人資料
這與Tinder中的倒帶功能類似。如果您跳過了個人資料,則可以利用這個功能返回查看,然後繼續。但是,這是一個專業版功能,就是說它是需要付費的。
我偶然發現了下面的請求,通過它可以查看跳過的個人資料。
在這裡,我們只需挑選一個UserId並將其作為以下請求中的targetID的值。跳過的個人資料就成為自己喜歡的了。
如果向某個人誤送了「喜歡」,不用擔心,你可以隨時使用下面的請求撤銷相應的「喜歡」:
6.查看誰訪問過自己的個人資料
該應用程序有一個功能,就是可以查看誰訪問過你的個人資料。但不幸的是,這是一個付費功能。當有人訪問自己的個人資料時,他們可以選擇喜歡或不喜歡你。當訪問者喜歡你的時候,你會收到一個通知,表示有人喜歡你的個人資料。
從上圖中可以看出,SK喜歡我的個人資料。如果我也喜歡她,這就意味著匹配成功,我們就可以開始聊天了。然而,要想找到SK的個人資料是非常困難的,除非付費開通了查看訪客的功能。
不過,你可以使用以下請求查看自己的訪客:
太棒了!我終於找到她的UserId了。這樣的話,我也可以給她發送一個「喜歡」。然後,匹配就成功了。
正如你在響應中看到的,匹配成功!
但是,這裡還有一個問題。我只能跟已經喜歡我的人互相匹配。我覺得,如果能夠讓所有人都喜歡我,然後我再向她們發送"喜歡",這樣的匹配方式難道不是更好一些嗎?
別急……這些很快就會成為現實,這還得藉助於參數污染!
7.與自己任選的個人資料進行匹配
以下是用於喜歡任意個人資料的請求。
在這裡,5318415是我的actorId。 如果將我的actorId替換為其他人的ID,會收到「401 Unauthorized」錯誤。
所以,再次使用參數污染,就能夠發送一個真正的請求。 我添加了2個actorId參數,其中第一個actorId參數是目標的actorId。 所以,這意味著,5024700(受害者)會喜歡5318415(我)。這次得到的響應是202 Accepted。
然後,我再向受害人發送一個喜歡,這樣匹配就成功了。
就像上面看到的那樣,匹配成功!:)
因此,使用參數污染,我可以在一天內與100多名女孩匹配成功;)
披露時間表:
2017年7月4日:將漏洞報告給供應商
2017年7月4日:漏洞報告被確認
2017年9月5日:收到賞金
本文翻譯自:http://blog.gaurangbhatnagar.com/2017/12/02/Hacking-a-dating-app.html,如若轉載,請註明原文地址: http://www.4hou.com/technology/9245.html 更多內容請關注「嘶吼專業版」——Pro4hou
推薦閱讀:
※iPhone 手機被鎖,如何快速解鎖?
※【人物】「土人」不土,「救火」生猛,譚校長的方法論
※解決方案:勒索蠕蟲病毒文件恢復工具
※記一次XSS防禦繞過的過程
TAG:信息安全 |