對于一個完善系統而言,無論是桌面還是web程序, 都會使用客戶端保存數據如cookie,db文件等。為了不讓外部獲取或者控制,系統會對數據進行私有加密 例如qq密碼,聊天記錄,web程序中用戶信息等。而對于開源程序而言,算法是公開的,對數據的加密只有依靠key來保護數據 ,一旦數據可控就可能造成某些安全問題,本文探討web開源程序中對私有數據的使代碼的安全性問題。
某些加密key可推算抑或可爆破情況下,私有數據數據完全可控,根據實際環境sql注入,xss,越權等攻擊。
例如:
PHPCMS V9 sys_auth()設計缺陷導致多個SQL注入漏洞
為了數據和代碼的統一,一套系統中數據的加密解密key一般是通用的,我們可以利用程序的某些功能來生成加密之后的數據,從而控制程序的私有數據,進行攻擊。
類似的案例如:
WooYun: Espcms加密函數缺陷導致getshell
當變量能控時,一切數據都是危險的,程序除了對輸入輸出的數據做嚴格過濾之外,對內部私有數據也要相應的過濾。