禪道11.6 后台多個漏洞復現分析
聲明
由於傳播、利用此文所提供的信息而造成的任何直接或者間接的后果及損失,均由使用者本人負責,雷神眾測以及文章作者不為此承擔任何責任。
雷神眾測擁有對此文章的修改和解釋權。如欲轉載或傳播此文章,必須保證此文章的完整性,包括版權聲明等全部內容。未經雷神眾測允許,不得任意修改或者增減此文章內容,不得以任何方式將其用於商業目的。
前言
根據前一篇關於的分析文章,我們可以知道數據流向以及傳參結構。
No.1任意文件讀取
http://***.*.*.*/zentaopms11.6/www/api-getModel-file-parseCSV-fileName=/etc/passwd
通過這個payload結合我們上一篇文章我們可以快速的知道
這是使用一個api模塊,調用getModel方法,然后傳了三個參數為file、parseCSV、fileName。並且加載file模塊中的parseCSV的方法,傳參fileName
相當於是方法調用方法。
接下來我們找到api模塊的getModel方法,文件為/module/api/control.php

etModel方法傳入三個參數,為模塊名、方法名字、還有參數,分別payload中的對應file、parseCSV、fileName(原因在上一篇有提到)
通過第50行代碼,以file為模塊名、parseCSV為方法名去調用,文件名為/module/file/model.php
這里需要注意一個點就是如果讀取的文件是.txt、.php這種帶后綴的,會被/framework/base/router.class.php中的parsePathInfo方法過濾掉

可以成功讀取文件,對文件內容進行了處理過濾部分參數。

No.2任意文件寫入
http://***.*.*.*/zentaopms11.6/www//api-getModel-editor-save-filePath=/tmp/1234
POST:fileContent=<?php phpinfo();?>
同理,用api模塊的getModel方法去調用editor模塊的save方法,並傳入filePath參數

通過第50行代碼,調用editor模塊的save方法並傳入filePath參數,文件名為:/module/editor/model.php
第368行代碼提示有一個fileContent以post形式進行傳參
發現下述並未做有效過濾可以寫入任意代碼

然后構造參數進行傳參

發現成功寫入

No.3文件包含
http://***.***.**.***/zentaopms11.6/www/api-getModel-api-getMethod-filePath=/tmp/1/1
上述payload,用api模塊的getModel方法去調用api模塊的getMethod方法,並傳入filePath參數,文件名為:/module/api/model.php
在第18行,進入到了另外一個方法中
if(!class_exists($className)) helper::import($fileName);
進入到/framework/base/helper.class.php中的import方法中,在第195行被include包含執行代碼。
realpath函數是顯示出該目錄的絕對路徑

例子:
<?php echo realpath('/tmp/test'); ?>
輸出結果:
/private/tmp/test
這里有一個點,按照上一步我們寫入的/tmp/test 文件來看。我們這里包含/tmp/test就可以了。
但是實際上是報錯的

讀代碼發現上述代碼中
$fileName = dirname($filePath);
dirname函數返回的是目錄名稱部分(不含文件名,默認最末級為文件名)
例子:
<?php echo dirname("c:/testweb/home.php") . "\n"; echo dirname("/testweb/home.php") . "\n"; echo dirname("C:/test/home.php/"). "\n"; echo dirname("C:/tttt/home.php/1234") . "\n"; ?>
輸出的結果對應為:
c:/testweb /testweb C:/test C:/tttt/home.php
發現會把最后一級的內容刪除掉。所以我們在包含的時候需要在后面加一級
http://***.***.**.***/zentaopms11.6/www/api-getModel-api-getMethod-filePath=/tmp/test/1234
最終執行結果為

參考鏈接:
https://wiki.0-sec.org/img/20200419/a0b1b1342fb144c6b65244138b32a44f.png
https://wiki.0-sec.org/img/20200419/8a59bdb34b6d4227b4572623cbf9c857.png