【程式碼審計】大米CMS_V5.5.3 任意檔案讀取漏洞分析
阿新 • • 發佈:2018-12-03
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行中:
- public function add()
- {
- $filename = dami_url_repalce(str_replace('*','.',trim($_GET['id'])));
- if (empty($filename))
- {
- $this->error('模板名稱不能為空!');
- }
- $content = read_file($filename);
- $this->assign('filename',$filename);
- 10. $this->assign('content',htmlspecialchars($content));
- 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--,每週原創一篇技術乾貨。