天天看點

網站漏洞檢測 wordpress sql注入漏洞代碼審計與修複

wordpress系統本身代碼,很少出現sql注入漏洞,反倒是第三方的插件出現太多太多的漏洞,我們SINE安全發現,僅僅2019年9月份就出現8個插件漏洞,因為第三方開發的插件,技術都參差不齊,對安全方面也不是太懂導緻寫代碼過程中沒有對sql注入,以及xss跨站進行前端安全過濾,才導緻發生sql注入漏洞。

網站漏洞檢測 wordpress sql注入漏洞代碼審計與修複

目前發現的wordpress漏洞插件,AdRotate廣告插件,NextGEN Gallery圖檔管理插件,Give贊賞插件,這些插件使用的網站數量較多,因為開源,免費,功能強大,使用簡單,深閱聽人多站長們的喜歡,關于該網站漏洞的詳情我們SINE安全來詳細的給大家分析一下:看下圖的代碼

網站漏洞檢測 wordpress sql注入漏洞代碼審計與修複

在前端進行輸入的時候,可以插入惡意的sql注入代碼,如果後端沒有對前端輸入進來的參數值進行安全過濾攔截,那麼就會導緻sql注入漏洞的發生,我們來看上面的一段代碼。該代碼在寫的時候,會将get中的ID,傳入後資料庫中進行查詢,沒有做任何的安全過濾導緻sql注入,在wordpress最新版中以及将get、post、cookies、送出的方式進行了安全攔截,對一些非法的字元與sql注入攻擊語句加強過濾,但是還是被繞過,導緻sql注入的發生,就拿adrotate插件來說,在dashboard目錄下的publisher檔案夾下的adverts-edit.php代碼中第46行:

網站漏洞檢測 wordpress sql注入漏洞代碼審計與修複

對前端來的get_ad變量隻是做了簡單的html字元轉換操作,并沒有實質性的對sql語句進行攔截,導緻可以執行SQL注入代碼,擷取管理者賬戶密碼。截圖如下:

網站漏洞檢測 wordpress sql注入漏洞代碼審計與修複

give插件,也存在漏洞,漏洞産生的原因是includes目錄下的donors檔案夾裡的class-give-donors-query.php代碼,在擷取訂單的函數中,沒有對其order by字元進行攔截,導緻sql代碼可以到後端進行查詢資料庫,導緻sql盲注。代碼如下:

網站漏洞檢測 wordpress sql注入漏洞代碼審計與修複
網站漏洞檢測 wordpress sql注入漏洞代碼審計與修複

關于wordpress漏洞修複辦法,建議插件的開發公司在對代碼編寫過程中,對使用者的輸入,以及送出,get,post等請求進行全面的安全過濾與安全校驗,及時的更新wordpress的版本以及插件版本更新,定期對網站代碼進行安全檢測,檢查是否存在網站木馬後門,以及webshell檔案,對插件目錄可以設定安全權限部署,防止惡意篡改,對wordpress的背景登入做安全驗證,僅僅使用賬戶密碼還不行,還要使用另外一種方式進行驗證,短信驗證以及google身份驗證器。