齊博CMS_V7.0前臺SQL注入
今天看到一篇文章分析齊博CMS注入的文章: ofollow,noindex">齊博CMS啟用驗證處SQL%E6%B3%A8%E5%85%A5/">SQL注入 ,得空分析了一下,總體感覺漏洞利用比較雞肋。
漏洞分析
實際上齊博CMS是有對變數進行過濾的,但是本次注入點就是利用程式自帶的編碼,使得這些過濾形同虛設。
注入點在 inc/class.user.php 檔案中的 get_passport 方法,可以清晰的看到SQL語句進行了變數拼接。
同個檔案的 get_allInfo 方法呼叫了 get_passport 。
變數加密處的位置在 do/activate.php 檔案,程式碼如下:
可以看到上圖 第7行 程式碼,將經過 mymd5 函式解密後的資料直接賦值給 $username 和 $password 兩個變數,並帶入資料庫查詢。解密後的資料沒有經過處理,這是導致發生SQL注入的關鍵。我們可以看看 mymd5 函式的程式碼。
可以看到這個函式包含了加密與解密。然而要想利用這個注入點,我們需要知道 $webdb[mymd5] 的值,而這個變數的值在每個網站搭建時會有一個初始值,且都不一樣,這也是這個漏洞的雞肋之處。我們可以登入後臺檢視到該變數對應的值。
漏洞利用
要想利用這個漏洞,我們只需要知道 $webdb[mymd5] 的值,並將相關函式抽取出來,加密我們的 payload 即可。具體如下:
然後利用生成的加密字串構造如下payload,即可成功注入SQL語句: