1. 程式人生 > >【程式碼審計】大米CMS_V5.5.3 任意檔案讀取漏洞分析

【程式碼審計】大米CMS_V5.5.3 任意檔案讀取漏洞分析

 

0x00 環境準備

大米CMS官網:http://www.damicms.com

網站原始碼版本:大米CMS_V5.5.3試用版(更新時間:2017-04-15)

程式原始碼下載:http://www.damicms.com/downes/dami.rar

測試網站首頁:

 

0x01 程式碼分析

1、漏洞檔案位置:/Admin/Lib/Action/TplAction.class.php  第76-87行中:

  1. public function add()  
  2. {  
  3.     $filename = dami_url_repalce(str_replace('*','.',trim($_GET['id'])));  
  4.     if (empty($filename))   
  5.     {  
  6.         $this->error('模板名稱不能為空!');  
  7.     }  
  8.     $content = read_file($filename);  
  9.     $this->assign('filename',$filename);  
  10. 10.     $this->assign('content',htmlspecialchars($content));  
  11. 11.     $this->display('add');  

12. }  

這段編輯模板的函式中,首先對獲取的引數進行替換,然後判斷檔案是否為空,接著帶入read_file函式中執行,可以看到引數並未進行任何過濾或處理,導致程式在實現上存在任意檔案讀取漏洞,可以讀取網站任意檔案,攻擊者可利用該漏洞獲取敏感資訊。

0x02 漏洞利用

1、登入後臺, 全域性配置路徑在\Public\Config\config.ini.php,通過構造URL讀取全域性配置檔案內容。

http://127.0.0.1/admin.php?s=Tpl/Add/id/.\Public\Config\config.ini.php

 

 

0x03 修復建議

1、指定檔案讀取目錄,過濾.(點)等可能的惡意字元,防止目錄跳轉,最為推薦的方法;

2、正則判斷使用者輸入的引數的格式,看輸入的格式是否合法:這個方法的匹配最為準確和細緻,但是有很大難度,需要大量時間配置規則。

最後

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