ALLEN DISK CSRF 漏洞分析 - Black Space 黑杜科技

2017年7月14日 星期五

ALLEN DISK CSRF 漏洞分析



Allen Disk 是一款強大又既免費開源的雲端硬碟系統,可供用戶註冊帳號並且登入上傳相關檔案、文件供使用者下載、更多功能特色請參見官方。

漏洞通報過程當中也已經過了好幾個月,但是!終究還是沒看到官方釋出更新版本,因此我在最後結尾貼上我自己Patch 檔,開發人員可以參考看看。

漏洞概述:因在修改密碼當中他沒有像其他網站一樣有提供必須輸入原始密碼才能修改,看到下圖也沒有產生相關令牌(token、session ) 來驗證是否屬於用戶發起的請求。




在修改密碼時,可以看到 Request 只從這個該domain 發出請求響應,也沒有驗證是否從原本站點發出 (圖二)



(圖二)


所以導致了跨站請求偽造(Cross-site request forgery) !任意修改密碼

綜合前面一些問題概述,我們自己寫一個和Poc 概念驗證程序,最主要我們是要能修改對方密碼,所以我們在請求網域方面要選擇有漏洞問題的網站

Poc Payload:



漏洞示範Video:



接下來我們就是對這些文件檔案進行程式碼審查下,首先先找出受影響的目錄檔案

找到setpass.php ,之後我們來看看 ↓


他include 了兩個不同檔案,但是這兩個file 在中沒有勾引我的興趣,因為一個是修改密碼後將所送出的資料存儲在資料庫,另外一個引了密碼加密函數,但是!這也不是我們要分析的來源。

可以看到他判斷 $_Session 變量名是否為登入的 是就跳出這個範圍,但是相對來講我們一開始在登入就必須配發新的一組Session 沒錯之後登出也要消除,日後要再登入就再重新發一組新的就好,這樣比較能避免相同令牌沒有過期導致攻擊者竊取到就可以無限制登入,但在前面我們就看到了最主要在Form 裡面它沒有定義Session  而是在登入之後沒事的就亂配一組沒有起太大的防禦作用!

我們也可以看到在其他幾行裡面都沒有嚴謹的檢查修改密碼,都只是在Crack Password ,就算有加密 但影響的還是修改密碼,加密的Key 是儲存在數據資料庫,最主要是避免傳輸過程被竊聽沒有加密導致明文形式暴露還有被入侵遭攻擊者偷到敏感資料直接被登入,所以加密也是一道牆!

 對於開發人員沒有對此修改重視,避免用戶被利用攻擊,所以我自己寫了Patch 供參考 ~


修復方式:





在修復方面,我是採取請求中他會隨機產生新的Token 之後再表單定義輸出是由Server 產生之後取出來的!

關於該漏洞編號:CVE-2017-8848

  
修復後示範:






沒有留言:

張貼留言