2018,我要Axublog
0x00 背景
0x01 前台SQL注入
源碼版本:Axublog axublog v1.0.6
漏洞位置:hit.php
漏洞鏈接:http://www.cnvd.org.cn/flaw/show/CNVD-2017-35761
下載源碼並進行安裝,根據CNVD上的描述,存在漏洞的文件是ad/theme.php,打開目標文件進行審計,經過審計發現改文件還存在其他多個漏洞,本篇先不做分析。
1. 根據CNVD上的描述,在hit.php文件中發現如下代碼塊,使用GET接收參數id的值並且直接傳入到SQL語句進行拼接操作,且沒有進行任何安全處理,所以存在SQL注入漏洞,在文件的第20行中將SQL語句的執行結果列印出來,因此是有回顯的SQL注入。
2. 此處是前台的頁面,因此可以在前台直接訪問該頁面,進行SQL注入獲取資料庫中的敏感信息,首先需要滿足if條件語句的要求,使用GET請求g參數的值為arthit,id參數的值不為空,進行如下請求後使用mysql監控工具,監測執行的SQL語句,確保傳入的參數已經執行。
3. 執行如下請求發現被攔截了,然後在文件的第4-5行發現sqlguolv方法。
4. 跟入該方法在axublog1.0.6classc_other.php文件的第545-548行中發現了該方法的代碼塊。
5. 該代碼塊使用$_SERVER["QUERY_STRING"]獲取查詢語句,一般是問號後面的字元串,但是使用$_SERVER["QUERY_STRING"]並不會對傳入的字元進行一次URL解碼操作,但是$_GET是會進行一次URL解碼的,並且傳入id值使用的是$_GET的方式接收,過濾的時候使用$_SERVER["QUERY_STRING"]進行接收和處理,所以可以使用url編碼繞過檢測。
獲取管理員用戶名。
獲取管理員用戶密碼:
6. 在分析的時候發現axublog1.0.6adlogin.php的第88行中密碼使用了authcode方法進行加密。
7. 跟入authcode方法,在axublog1.0.6classc_md5.php文件的第16-62行中發現了該方法的代碼塊,將該加解密的方法抓取出來,然後結合axublog1.0.6adlogin.php的第88行,可以知道加解密的字元串寫成固定的值key,使用如下的方式獲取從資料庫中得到的管理員密碼明文,然後便可以登錄後台。
0x02 任意文件上傳漏洞
源碼版本:Axublog axublog v1.0.6
漏洞位置:ad/theme.php
漏洞鏈接:http://www.cnvd.org.cn/flaw/show/CNVD-2017-36013
1. 在ad/theme.php文件中的第185-205行中發現edit2save方法中的如下代碼塊,是進行文件的報存操作,將REQUEST請求的的path參數和content參數分別作為作為報存的路徑和內容傳入file_put_contents中進行保存操作。
2. 追溯尋找edit2save方法被調用的位置,在文件ad/theme.php中的第10-25行中發現如下代碼,當GET傳入的g參數的值為edit2save時候便會調用edit2save方法。
3. 但是由於該文件需要登錄到後台訪問,所以有一定的限制,但是與前台SQL注入漏洞利用便可以使用管理員賬號登錄,進行如下請求可以對該漏洞進行驗證;使用GET傳入g=edit2save,使用POST傳入path=./evil_shell.php&content=
然後再訪問http://127.0.0.1/code/axublog1.0.6/ad/evil_shell.php,便可以訪問到上傳的惡意文件。
0x03 總結
本篇涉及Axublog的3個主要問題:1.前台SQL過濾可以被繞過,2. 加密的key默認是固定的,3. 後台存在任意文件上傳,因此利用這3個問題便可以前台GetShell,最後感謝師傅們的指導,期待和師傅們的各種交流。


TAG:漏斗社區 |