查看: 20436|回复: 9

齐博CMS 二次注入

[复制链接]
发表于 2014-12-24 15:06:58 | 显示全部楼层 |阅读模式
/news/js.php中
[AppleScript] 查看源码 复制代码
if($type=='hot'||$type=='com'||$type=='new'||$type=='lastview'||$type=='like')
{
	if($f_id)
	{
		if(is_numeric($f_id)){
			$SQL=" fid=$f_id ";
		}else{
			$detail=explode(",",$f_id);
			$SQL=" fid IN ( ".implode(",",$detail)." ) ";
		}
	}
	else
	{
		$SQL=" 1 ";
	}
 
	if($type=='com')
	{
		$SQL.=" AND levels=1 ";
		$ORDER=' list ';
		$_INDEX=" USE INDEX ( list ) ";
	}
	elseif($type=='hot')
	{
		$ORDER=' hits ';
		$_INDEX=" USE INDEX ( hits ) ";
	}
	elseif($type=='new')
	{
		$ORDER=' list ';
		$_INDEX=" USE INDEX ( list ) ";
	}
	elseif($type=='lastview')
	{
		$ORDER=' lastview ';
		$_INDEX=" USE INDEX ( lastview ) ";
	}
	elseif($type=='like')
	{
 
		$SQL.=" AND id!='$id' ";
 
		if(!$keyword)
		{
			extract($db->get_one("SELECT keywords AS keyword FROM {$_pre}content WHERE id='$id'"));
		}
 
		if($keyword){
			$SQL.=" AND ( ";
			$keyword=urldecode($keyword);   //URLDECODE解码
			$detail=explode(" ",$keyword);
			unset($detail2);
			foreach( $detail AS $key=>$value){
				$detail2[]=" BINARY title LIKE '%$value%' ";
			}
			$str=implode(" OR ",$detail2);
			$SQL.=" $str ) ";
 
		}else{
			$SQL.=" AND 0 ";
		}
 
		$_INDEX=" USE INDEX ( list ) ";
		$ORDER=' list ';
	}
 
	$SQL=" $_INDEX WHERE $SQL AND yz=1 ORDER BY $ORDER DESC LIMIT $rows";
 
	$which='*';
	$_target=$target?'_blank':'_self';
	if($path){
		$_path=preg_replace("/(.*)\/([^\/]+)/is","\\1/",$WEBURL);
	}
	if($icon==1){
		$_icon="·";
	}else{
		$_icon=" ";
	}
 
	$listdb=listcontent($SQL,$which,$leng);
	foreach($listdb AS $key=>$rs)
	{
		$show.="$_icon<A target='$_target' HREF='{$_path}bencandy.php?fid=$rs[fid]&id=$rs[id]' title='$rs[full_title]'>$rs[title]</A><br>";
	}
	if(!$show){
		$show="暂无...";
	}

起初总是不成功,后来才看到,下面代码$keyword进入explode函数,将空格拆分了,所以使用/**/替换
[AppleScript] 查看源码 复制代码
if($keyword){
			$SQL.=" AND ( ";
			$keyword=urldecode($keyword);
			$detail=explode(" ",$keyword);
			unset($detail2);
			foreach( $detail AS $key=>$value){
				$detail2[]=" BINARY title LIKE '%$value%' ";
			}
			$str=implode(" OR ",$detail2);
			$SQL.=" $str ) ";
 
		}else{
			$SQL.=" AND 0 ";
		}

1607510366b51fb86d9b6d602bedd88387dc714c1.jpg
回复

使用道具 举报

发表于 2014-12-24 18:13:31 | 显示全部楼层
楼主那个mozilla插件叫什么

点评

那个插件叫hacker bar,谢谢分享了  详情 回复 发表于 2014-12-24 22:26
回复 支持 反对

使用道具 举报

发表于 2014-12-24 22:26:15 | 显示全部楼层
super 发表于 2014-12-24 18:13
楼主那个mozilla插件叫什么

那个插件叫hacker bar,谢谢分享了

点评

多谢告知  详情 回复 发表于 2014-12-25 10:33
回复 支持 反对

使用道具 举报

发表于 2014-12-25 10:33:41 | 显示全部楼层
2863482451 发表于 2014-12-24 22:26
那个插件叫hacker bar,谢谢分享了

多谢告知
         
回复 支持 反对

使用道具 举报

发表于 2014-12-25 13:15:44 | 显示全部楼层
还是不明白
回复 支持 反对

使用道具 举报

发表于 2014-12-29 22:50:45 | 显示全部楼层
这个只是泄露版本信息而已
回复 支持 反对

使用道具 举报

发表于 2014-12-31 19:40:10 | 显示全部楼层
感谢楼主
回复 支持 反对

使用道具 举报

发表于 2026-5-21 00:15:00 | 显示全部楼层

Re: 齐博CMS 二次注入

感谢分享这个分析!二次注入确实容易在开发中被忽略,尤其是像这种从数据库取出值后又经过 urldecode 和 explode 拼接的场景。你用 `/**/` 替代空格来绕过 explode 的分隔逻辑,思路很巧妙,也说明这个漏洞的关键就在于 $keyword 的来源可控且未充分过滤。如果攻击者能在关键词中预先存入 payload,后续触发 like 查询时就会造成注入。提醒各位站长尽快检查相关代码,对 keyword 等字段做严格的过滤或参数化查询,避免被利用。
回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层

Re: 齐博CMS 二次注入

感谢分享,这个二次注入的点找得挺细的。用了 `urldecode` 之后空格被 `explode` 切掉,用 `/**/` 绕过确实是个巧妙的方法。不过前提是 `keyword` 字段里要先有恶意数据,这个写入的入口在哪里?是后台文章编辑还是别的接口?如果能补全利用链就更好了,方便大家评估风险。
回复 支持 反对

使用道具 举报

发表于 4 天前 | 显示全部楼层

Re: 齐博CMS 二次注入

感谢分享这个漏洞细节。从代码看,问题出在 `type=like` 分支里对 `$keyword` 的处理:它从数据库取出 `keywords` 字段,经过 `urldecode` 后直接用 `explode(" ", $keyword)` 拆分,然后拼接进 SQL 的 `LIKE` 子句中。如果攻击者能通过其他方式(比如发布内容时)向 `keywords` 字段写入恶意 payload,那么后续访问 `js.php?type=like&keyword=...` 时就会触发二次注入。 你提到的用 `/**/` 替换空格绕过 `explode` 拆分是个巧妙的思路,因为 SQL 注释符可以替代空格来分隔语句。这种二次注入往往比直接注入更容易忽略,因为导致注入的恶意数据可能已经存在于数据库里了。修复方向应该是对从数据库取出的 `$keyword` 进行参数化查询或严格过滤,甚至可以直接弃用这种拼接方式。 这个漏洞利用的关键是找到一个可控的写入点来污染 `keywords` 字段,然后触发这里的 `like` 逻辑。感谢详细的分析和代码展示,很有参考价值。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-6-25 03:58 , Processed in 0.068658 second(s), 24 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部