天天看點

DedeCMS V5.7sp2最新版本parse_str函數SQL注入漏洞

織夢dedecms,在整個網際網路中許多企業網站,個人網站,優化網站都在使用dede作為整個網站的開發架構,dedecms采用php+mysql資料庫的架構來承載整個網站的運作與使用者的通路,首頁以及欄目頁生成html靜态化,大大的加快的網站通路速度,以及搜尋引擎的友好度,利于百度蜘蛛的抓取,深受廣大站長以及網站營運者的喜歡。最近我們發現dedecms漏洞,存在高危的parse_str函數sql注入漏洞。

關于該織夢漏洞的詳情,我們一步一步來剖析:

首先來介紹下parse_str函數的機制與作用是什麼,簡單通俗來講就是解析網站傳過來的字元串,将字元串的值轉變成一個固有的變量值,這個函數在傳入進來,進行轉變的時候并不會驗證網站目前變量的值是否含有,最直接的就是導緻目前的變量值會被代碼裡的值給覆寫掉。針對于dedecms存在的sql注入漏洞,我們來分析一下該漏洞是如何産生的,我們該如何去更好的利用這個織夢漏洞。在dedecms最新版裡的buy_action.php代碼裡,存在網站漏洞,dedecms針對于該檔案之前更新并修複過網站漏洞,代碼裡增加了許多函數的安全過濾,但是在過濾的同時編碼函數進行解碼的時候沒有嚴格的過濾掉傳入進來的值,導緻可以執行sql語句查詢dede的資料庫内容,包括可以查詢網站的管理者賬号與密碼。我們對該代碼進行人工的安全檢測發現,在第4,第6行裡調用了一個mchStrCode函數機制,這個函數我來簡單跟大家講解一下原理是什麼,該函數是将前端網站使用者送出過來的資料進行解碼,然後通過parse_str進行指派變量,變量的同時不會判斷目前的值是否存在,而導緻可以送出惡意的sql攻擊代碼進來,拼接進行sql注入攻擊。

DedeCMS V5.7sp2最新版本parse_str函數SQL注入漏洞

整個網站漏洞的産生以及dedecms漏洞利用很簡單,但是在實際漏洞利用過程中我們發現這個還是挺難實作的,最關鍵的還是mchStrCode的函數在整個網站編碼,控制前端使用者送出過來的值中的參數。在dedecms的data目錄下的common.inc.php這個代碼裡已經對get、post、cookies送出的方式進行了安全過濾,限制了非法字元的輸入,包括%20,空格,逗号,都會被攔截,那麼我們在使用這個織夢漏洞的時候,要對攔截的字元進行編碼加密繞過攔截,通過編碼讓request進行解析,直接解析成我們構造的sql注入語句即可。

dede漏洞利用如下圖所示:

每個網站,每個訪客的cookie跟user-agent都不一樣,要根據實際的值進行僞造與加密生成。

DedeCMS V5.7sp2最新版本parse_str函數SQL注入漏洞

dedecms網站漏洞修複建議:

關于這次的dedecms parse_str函數SQL注入漏洞,需要修複的就是變量的覆寫修複,在對前端輸入過來的值進行安全判斷,确認變量值是否存在,如果存在将不會覆寫,杜絕變量覆寫導緻摻入惡意構造的sql注入語句代碼。如果對網站漏洞修複,以及網站安全加強不懂的話,也可以找專業的網站安全公司,國内SINE安全公司,綠盟安全公司,啟明星辰安全公司,都是比較不錯的,也可以通過dedecms背景更新最新版本,目前官方沒有修複。