1. 程式人生 > >【程式碼審計】XIAOCMS_後臺database.php頁面存在任意檔案刪除漏洞

【程式碼審計】XIAOCMS_後臺database.php頁面存在任意檔案刪除漏洞

 

0x00 環境準備

XIAOCMS官網: http://www.xiaocms.com/

網站原始碼版本:XiaoCms (釋出時間:2014-12-29)

程式原始碼下載:http://www.xiaocms.com/download/XiaoCms_20141229.zip

測試網站首頁:

 

0x01 程式碼分析

1、漏洞檔案位置:/admin/controller/database.php 第38-56行:

  1. public function importAction() {  
  2.         $dir  = DATA_DIR .  'bakup' . DIRECTORY_SEPARATOR;  
  3.         $path = $this->get('path');  
  4.         if ($path && is_dir($dir . $path)) {  
  5.             $fileid = $this
    ->get('fileid');  
  6.             $this->importdb($path, $fileid);  
  7.             exit;  
  8.         }  
  9.         if ($this->post('submit')) {  
  10. 10.             $paths    = $this->post('paths');  
  11. 11.             if (is_array($paths)) {  
  12. 12.                 foreach ($paths as $path) {  
  13. 13.           
  14. 14.                     delete_dir($dir . $path .'/' );  
  15. 15.                     @rmdir($dir . $path );  
  16. 16.                 }  
  17. 17.             }  
  18. 18.             $this->show_message('操作成功', 1,url('database/import'));  
  19. 19.         }  

     

在這段函式中,首先判斷引數path/dir是否存在,如果存在就匯入資料備份檔案,繼續往下走,判斷是否獲取sumbmit、paths引數,遍歷陣列,接著刪除陣列中提交的檔案目錄。可以看到引數並未進行任何過濾或處理,導致程式在實現上存在任意檔案刪除漏洞,攻擊者可通過該漏洞刪除任意檔案。

0x02 漏洞利用

1、在網站根目錄新建test目錄。作為漏洞測試目錄:

 

2、構造URL引數,可成功刪除根目錄下的test目錄

 

3、當提交的引數paths[]=..\\..\\時,可刪除整個網站根目錄,如果繼續往上遍歷,將刪除整個伺服器檔案,存在較大的威脅。

0x03 修復建議

1、對於要刪除的檔案,通過正則判斷使用者輸入的引數的格式,看輸入的格式是否合法。

最後

歡迎關注個人微信公眾號:Bypass--,每週原創一篇技術乾貨。