何金棟
(國網(wǎng)福建省電力有限公司電力科學(xué)研究院,福建福州,350007)
PHP是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點(diǎn),利于學(xué)習(xí),使用廣泛,主要適用于Web開發(fā)領(lǐng)域。PHPCMS是國內(nèi)領(lǐng)先的網(wǎng)站信息發(fā)布管理系統(tǒng),同時也是開源的PHP開發(fā)架構(gòu)。PHPCMS由內(nèi)容模型、廣告、郵件訂閱、短消息、自定義表單、全站搜索等二十多個功能模塊組成,內(nèi)置新聞、圖片、下載、信息、產(chǎn)品五大內(nèi)容模型。PHPCMS采用模塊化開發(fā),支持自定義內(nèi)容模型和會員模型,并且可以自定義字段。該軟件采用模塊化開發(fā),支持多種分類方式,使用它可方便實現(xiàn)個性化網(wǎng)站的設(shè)計、開發(fā)與維護(hù)。它支持眾多的程序組合,可輕松實現(xiàn)網(wǎng)站平臺遷移,并可廣泛滿足各種規(guī)模的網(wǎng)站需求,可靠性高。PHPCMS采用PHP5+MYSQL做為技術(shù)基礎(chǔ)進(jìn)行開發(fā)。采用OOP(面向?qū)ο螅┓绞竭M(jìn)行基礎(chǔ)運(yùn)行框架搭建。
SQL注入攻擊指的是通過構(gòu)建特殊的輸入作為參數(shù)傳入Web應(yīng)用程序,而這些輸入大都是SQL語法里的一些組合,通過執(zhí)行SQL語句進(jìn)而執(zhí)行攻擊者所要的操作,其主要原因是程序沒有細(xì)致地過濾用戶輸入的數(shù)據(jù),致使非法數(shù)據(jù)侵入系統(tǒng)。根據(jù)相關(guān)技術(shù)原理,SQL注入可以分為平臺層注入和代碼層注入。前者由不安全的數(shù)據(jù)庫配置或數(shù)據(jù)庫平臺的漏洞所致;后者主要是由于程序員對輸入未進(jìn)行細(xì)致地過濾,從而執(zhí)行了非法的數(shù)據(jù)查詢?;诖耍琒QL注入的產(chǎn)生原因通常表現(xiàn)在以下幾方面:(1)不當(dāng)?shù)念愋吞幚恚?)不安全的數(shù)據(jù)庫配置(3)不合理的查詢集處理(4)不當(dāng)?shù)腻e誤處理(5)轉(zhuǎn)義字符處理不合適(6)多個提交處理不當(dāng)。
在某些web頁面表單中,用戶輸入的內(nèi)容直接用來構(gòu)造動態(tài)SQL命令,或者作為存儲過程的輸入?yún)?shù),這些表單特別容易受到SQL注入的攻擊。而許多網(wǎng)站程序在編寫時,沒有對用戶輸入的合法性進(jìn)行判斷或者程序中本身的變量處理不當(dāng),使應(yīng)用程序存在安全隱患。這樣,用戶就可以提交一段數(shù)據(jù)庫查詢的代碼,根據(jù)程序返回的結(jié)果,獲得一些敏感的信息或者控制整個服務(wù)器,于是SQL注入就被惡意利用了。網(wǎng)站程序員在寫代碼的時候,沒有對用戶提交的數(shù)據(jù)參數(shù)進(jìn)行嚴(yán)格驗證。導(dǎo)致惡意用戶可以提交非法Sql語句查詢數(shù)據(jù)庫內(nèi)容,竊取當(dāng)前數(shù)據(jù)庫用戶權(quán)限。
該工具針對基于PHP的Web應(yīng)用SQL注入漏洞研發(fā),通過深入逆向分析SQL漏洞的形成原因編寫了此漏洞檢測系統(tǒng)。通過建立檢測語句庫,快速檢測SQL注入點(diǎn),提交特殊的數(shù)據(jù)庫查詢代碼進(jìn)行驗證,并對SQL漏洞進(jìn)行消除和加固防護(hù),高效防護(hù)公司web應(yīng)用安全穩(wěn)定運(yùn)行。
基于PHP的Web應(yīng)用SQL注入漏洞檢測系統(tǒng)包括以下四個功能模塊。
(1)目標(biāo)URL地址模塊:自主研發(fā)PHPCMSV9SQL注入漏洞利用工具可輸入網(wǎng)站URL地址到目標(biāo)URL地址輸入框。
(2)管理員信息回顯模塊:自主研發(fā)PHPCMSV9SQL注入漏洞利用工具可通過SQL注入漏洞獲取系統(tǒng)管理員帳號信息,回顯到該模塊。
(3)密碼信息回顯模塊:自主研發(fā)PHPCMSV9SQL注入漏洞利用工具可通過SQL注入漏洞獲取系統(tǒng)管理員密碼信息,回顯到該模塊。
(4)密碼Salt信息回顯模塊:自主研發(fā)PHPCMSV9SQL注入漏洞利用工具可通過SQL注入漏洞獲取系統(tǒng)管理員登錄的密碼Salt信息,回顯到該模塊。
該款基于PHP的Web應(yīng)用SQL注入漏洞檢測系統(tǒng)概要設(shè)計圖如圖1所示。
圖1 設(shè)計圖
函數(shù)詳細(xì)說明:
(1)static void Main();
自主研發(fā)PHPCMSV9SQL注入漏洞利用工具程序主函數(shù)、入口點(diǎn)。
(2)private void button1_Click();
自主研發(fā)PHPCMSV9SQL注入漏洞利用工具按鈕功能,進(jìn)行漏洞檢測與利用。
(3)public string getexp(string poc);
自主研發(fā)PHPCMSV9SQL注入漏洞利用工具功能接口,利用POC獲取相關(guān)信息。
通過自主研發(fā)PHPCMSV9SQL注入漏洞利用工具對目標(biāo)網(wǎng)站http://192.168.XX.XX/2/進(jìn)行掃描為例。
(1)雙擊“phpcms_v9_Sqli_EXP.exe”,網(wǎng)址處輸入網(wǎng)站地址http://192.168.XX.XX/2/,如下圖2所示。
(2)點(diǎn)擊“獲取驗證碼”按鈕,在“填入驗證碼”模塊處輸入驗證碼,點(diǎn)擊開始注入,工具會提示是否存在SQL注入漏洞,在回顯的文本框中返回管理員帳號信息、密碼信息、密碼Salt信息,如圖3所示。
圖2
圖3
(3)如果填入驗證碼信息錯誤,工具會提示驗證碼信息錯誤,在回顯的文本框中不會返回管理員帳號信息、密碼信息、密碼Salt信息,如圖4所示。
圖4
該安全漏洞檢測系統(tǒng)主要過對基于PHP架構(gòu)的WEB應(yīng)用進(jìn)行深度遍歷,針對典型的SQL注入漏洞進(jìn)行檢測,分析驗證注入點(diǎn)的危害程度,模擬黑客使用的漏洞發(fā)現(xiàn)技術(shù)和攻擊手段,獲得敏感信息或者管理員權(quán)限,有利于國網(wǎng)福建省電力有限公司制定有效的Web應(yīng)用安全加固措施,有效提高公司重要網(wǎng)站和信息系統(tǒng)的防御能力。通過該工具的安全檢測和滲透測試,有效提高國網(wǎng)福建省電力有限公司網(wǎng)絡(luò)與信息系統(tǒng)的安全檢測能力,完善公司信息安全防御體系,保障公司網(wǎng)絡(luò)與信息系統(tǒng)安全穩(wěn)定運(yùn)行,全面提升公司W(wǎng)eb應(yīng)用的主動防御能力。
[1]劉凱凌. 基于PHP數(shù)據(jù)加密安全性探討[J]. 電腦編程技巧與維護(hù). 2017(04).
[2]胡華海,王新宇. 深入研究PHP程序開發(fā)中存在的漏洞[J].科技風(fēng).2016(12).
[3]聶慶鵬. 一種PHP程序源代碼加密保護(hù)機(jī)制的設(shè)計[J]. 信息系統(tǒng)工程. 2017(06).