【程式碼審計】XIAOCMS_後臺database.php頁面存在任意檔案刪除漏洞
阿新 • • 發佈:2018-12-03
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行:
- public function importAction() {
- $dir = DATA_DIR . 'bakup' . DIRECTORY_SEPARATOR;
- $path = $this->get('path');
- if ($path && is_dir($dir . $path)) {
- $fileid = $this
- $this->importdb($path, $fileid);
- exit;
- }
- if ($this->post('submit')) {
- 10. $paths = $this->post('paths');
- 11. if (is_array($paths)) {
- 12. foreach ($paths as $path) {
- 13.
- 14. delete_dir($dir . $path .'/' );
- 15. @rmdir($dir . $path );
- 16. }
- 17. }
- 18. $this->show_message('操作成功', 1,url('database/import'));
- 19. }
在這段函式中,首先判斷引數path/dir是否存在,如果存在就匯入資料備份檔案,繼續往下走,判斷是否獲取sumbmit、paths引數,遍歷陣列,接著刪除陣列中提交的檔案目錄。可以看到引數並未進行任何過濾或處理,導致程式在實現上存在任意檔案刪除漏洞,攻擊者可通過該漏洞刪除任意檔案。
0x02 漏洞利用
1、在網站根目錄新建test目錄。作為漏洞測試目錄:
2、構造URL引數,可成功刪除根目錄下的test目錄
3、當提交的引數paths[]=..\\..\\時,可刪除整個網站根目錄,如果繼續往上遍歷,將刪除整個伺服器檔案,存在較大的威脅。
0x03 修復建議
1、對於要刪除的檔案,通過正則判斷使用者輸入的引數的格式,看輸入的格式是否合法。
最後
歡迎關注個人微信公眾號:Bypass--,每週原創一篇技術乾貨。