想必大家都對參數篡改攻擊有所瞭解,今天作者分享的是對RSA加密參數的篡改從而實現賬號劫持的簡單測試,漏洞原因在於Web應用在客戶端缺乏安全的防護機制。一起來看看。

出於保密,目標Web應用暫且叫它爲target.com,在接觸該目標時,經測試發現,其上所有的參數操作都是加密傳輸的,在Burp的抓包配合下,可見其大概的加密形式如下:

userName=8cfe39943d6e08e505531ddfd90c66f47c2f55ce140e5770fef58d3bec826f52490a089d1942aaed74a9f6ed0fd8890cef6c36e31220c9859a3ab423062wxbeea480d94850d95374ab3a7a47de3e9f89b3250a58397044817069c6a17109cc27408b0c53f94q34a5878270ff6random8c96b916bb9594af648e6dc6851685a9d41cdb868761c4d36d49389150840af05a277530dd191464befc79a46d418a4e4f12b2dec0c5cc01097efed4b2a6608c2c2f076a27fe0ce62a70a4fe2f02b558abae6f4a4757fb34a593ccd04f2356c2c521758b0e59c017087121d63c1b002fc794953e690290489f8af87d17359ba0fc59b832f972d80293fe8d2aafcb4faca

接下來,我把關注點放到了其“忘記密碼”功能上,其大概流程如下:

1、訪問target.com/signin頁面,輸入需要重置密碼的郵箱號;
2、Web服務端會向郵箱發送一個6位數授權碼;
3、訪問target.com/forgotPasswd,輸入需要重置密碼的郵箱號、授權碼和重置後的密碼,提交即可完成密碼重置操作。

現在,我以郵箱“[email protected]”向Web服務端發起密碼重置請求,在收到授權碼之後,訪問target.com/forgotPasswd,重複上述密碼重置操作,該過程用Burp抓包的數據如下:

從上圖中可以看到,其中包含4個參數:Email, Username, Encrypted Password 和 Code,但是所有這些參數都是加密的。我嘗試着把參數數值替換成明文數值,如用“[email protected]” 或“[email protected]”替換掉其中的郵箱,但提交的請求卻不成功。

接着,我用另外的瀏覽器訪問target.com/forgotpasswd,以“[email protected]”身份發起密碼重置請求,抓包,複製其中的email 和 username加密數值,到之前的瀏覽器請求包中,提交,但請求還是無效。

因此,總結來看,忘記密碼的請求格式如下:

email=encryptedattackeremail&userName=encryptedattackerusername&passwd=encryptedattackerpasswd&code=encryptedcode

我度過把其中的encryptedattackeremail替換爲encryptedvictimemail,encryptedattackerusername替換爲encryptedvictimusername,但都不可行。

我依然沒有氣餒。經過一番分析,根據加密長度,我發現其加密方式爲RSA。同時,我對目標Web應用的源代碼分析後發現,其中多個js腳本中包含了rsa方法名稱,因此,我確信其爲RSA加密無疑了。

後來我意識到Burp抓包時參數值已經被加密了,這是一種客戶端加密,所以我嘗試把瀏覽器中調用的js腳本執行關閉,看看加密功能是否還可行,但之後,密碼重置請求就完全不起效。

我又考慮到,由於這是客戶端加密,RSA函數肯定是在某個js腳本中被定義,且被瀏覽器調用的,於是我點擊Chrome瀏覽器的Inspect Element按鈕,來到了其Console一欄下,輸入“rsa” ,讓我喫驚的是其中匹配出了“rsaEncrypt”方法函數名。

經過測試發現,只要爲該方法函數提供一個參數名,其就能生成相應的加密數值,因此,我以參數s定義了數值“[email protected]”,即s=“[email protected]“,執行rsaEncrypt,它即生成了如下相應的加密串:

需要注意的是,可能是其與會話參數相關,所以在端點/forgotpasswd上每次刷新頁面,上述的加密串都會發生變化。

按照前述的密碼重置操作,我以“[email protected]”身份發起密碼重置請求,提交授權碼和新密碼,並進行Burp抓包,其相應界面如下:

在Burp的請求包中,除了 把其中的“username”替換成瀏覽器端rsaEncrypt方法生成的“rsaencryptedvictimemail”加密串之外,其它的都無需更改,也即:

email=encryptedattackeremail& username=rsaencryptedvictimemail &passwd=encryptedattackerpasswd&code=encryptedcode

請求提交後,奇蹟發生了,[email protected]對應的賬號密碼被成功更改,實現了賬戶劫持!

考來源

medium

* 本文作者:clouds ,轉載請註明來自 FreeBuf.COM

相關文章