0x00 前言


對于一個完善系統而言,無論是桌面還是web程序, 都會使用客戶端保存數據如cookie,db文件等。為了不讓外部獲取或者控制,系統會對數據進行私有加密 例如qq密碼,聊天記錄,web程序中用戶信息等。而對于開源程序而言,算法是公開的,對數據的加密只有依靠key來保護數據 ,一旦數據可控就可能造成某些安全問題,本文探討web開源程序中對私有數據的使代碼的安全性問題。

0x01 直搗黃龍:key可知


某些加密key可推算抑或可爆破情況下,私有數據數據完全可控,根據實際環境sql注入,xss,越權等攻擊。

例如:

WooYun: Espcms v5.6 暴力注入

WooYun: dedecms sql injection

PHPCMS V9 sys_auth()設計缺陷導致多個SQL注入漏洞

0x02? 隔山打牛:key不可知


為了數據和代碼的統一,一套系統中數據的加密解密key一般是通用的,我們可以利用程序的某些功能來生成加密之后的數據,從而控制程序的私有數據,進行攻擊。

類似的案例如:

WooYun: PHPCMS最新版(V9)SQL注入一枚

WooYun: espcms 二次注入一枚

WooYun: Espcms加密函數缺陷導致getshell

0x03 總結


當變量能控時,一切數據都是危險的,程序除了對輸入輸出的數據做嚴格過濾之外,對內部私有數據也要相應的過濾。

您的支持將鼓勵我們繼續創作!

[微信] 掃描二維碼打賞

[支付寶] 掃描二維碼打賞