天天看點

Metinfo 5.3 背景getshell(遠端檔案包含漏洞)分析

最近準備入代碼審計的坑,拿Metinfo來練練手,先找了下以前的版本整理下思路。

看了下大神的文章,代碼審計的方法總體上分為兩種:

    1. 跟蹤使用者的輸入資料,判斷資料進入的每一個代碼邏輯是否有可利用的點,此處的代碼邏輯可以是一個函數,或者是條小小的條件判斷語句。

    2. 根據不同程式設計語言的特性,及其曆史上經常産生漏洞的一些函數,功能,把這些點找出來,在分析函數調用時的參數,如果參數是使用者可控,就很有可能引發安全漏洞

針對Metinfo 5.3的該漏洞利用後種方法進行,現在本地搭上Metinfo 5.3.1,利用Seay大神的代碼審計工具自動審計下,發現大約在60行發現存在漏洞的函數

Metinfo 5.3 背景getshell(遠端檔案包含漏洞)分析

具體函數如下:

Metinfo 5.3 背景getshell(遠端檔案包含漏洞)分析

在上面包含export.func.php引用curl_post函數,跳轉到該函數發現幾個有用的函數:

link_error:根據傳入的字元串傳回int型變量值

curl_post:利用curl構造資料包發送到URL,判斷開頭是否是metinfo,是則傳回後續字元,否則傳回“nohost”

Metinfo 5.3 背景getshell(遠端檔案包含漏洞)分析

漏洞分析:$result傳回請求位址的後的頁面,要求傳回的内容“metinfo”,接收後續字元内容,利用explode函數分割<Met>标簽内容放入$results數組中,後續将數組内容寫入dlappfile.php和standard.php中

Metinfo 5.3 背景getshell(遠端檔案包含漏洞)分析

漏洞利用:想辦法構造全局變量$met_host,$met_file使其通路我們可控的網站内容,由于$met_file在漏洞函數上已經被指派,是以無法利用其傳參,想辦法改變$met_host的值

Metinfo 5.3 背景getshell(遠端檔案包含漏洞)分析
Metinfo 5.3 背景getshell(遠端檔案包含漏洞)分析

Global變量的作用是定義全局變量,但是這個全局變量不是應用于整個網站,而是應用于目前頁面,包括include或require的所有檔案,搜尋下目前檔案及其包含檔案$met_host是否被指派,幸好沒有.....ok,在遠端主機上構造$met_file目錄檔案,代碼如下

Metinfo 5.3 背景getshell(遠端檔案包含漏洞)分析

通路http://127.0.0.1/Metlnfo5.3.1/admin/app/physical/physical.php,額需要使用者登陸,看來必須登陸背景才行,登陸後通路,送出$met_host值,如下

Metinfo 5.3 背景getshell(遠端檔案包含漏洞)分析

現在本地看下dlappfile.php 和 standard.php 是否成功寫入

Metinfo 5.3 背景getshell(遠端檔案包含漏洞)分析

Ok,上菜刀,菜刀配置如下:

Metinfo 5.3 背景getshell(遠端檔案包含漏洞)分析

成功getshell!

Metinfo 5.3 背景getshell(遠端檔案包含漏洞)分析

剛準備開始下載下傳Metinfo最近版本,結果聽學長說不收Metinfo的洞... QAQ

漏洞參考:http://www.91ri.org/16663.html

繼續閱讀