当前位置:Gxlcms > PHP教程 > 齐博CMS的sql注入漏洞学习

齐博CMS的sql注入漏洞学习

时间:2021-07-01 10:21:17 帮助过:73人阅读

今天看到了asrc上面对某个cms的漏洞分析的文章(http://security.alibaba.com/blog/blog.htm?spm=0.0.0.0.96tpib&id=13 ),感觉阿里大牛在写漏洞分析的时候还是有点谨慎,利用方式什么就更不能说了。

百度搜了一下这个CMS,使用量还是不小的。对php不太懂,简单学习了一下,并且总结了利用方式。

漏洞的原因就是 inc/common.inc.php 中的这一段代码:

if(!ini_get('register_globals')){
	@extract($_FILES,EXTR_SKIP);
}

这段代码的含义就是把 php接收到的$_Files 请求的数组转换成一些变量。而我们知道,这些变量是不会经过魔术引号的转义的。

再看 member/comment.php 这个文件,如下代码:

if($job=='del'){
      foreach( $cidDB AS $key=>$value){
		$rs=$db->get_one("SELECT aid FROM {$pre}comment WHERE cid='$value'");
		$erp=get_id_table($rs[aid]);
		$rsdb=$db->get_one("SELECT C.cid,C.uid AS commentuid,C.aid,A.uid,A.fid FROM {$pre}comment C LEFT JOIN {$pre}article$erp A ON C.aid=A.aid WHERE C.cid='$value'");
		if($rsdb[uid]==$lfjuid||$rsdb[commentuid]==$lfjuid||$web_admin||in_array($rsdb[fid],$fiddb)){
			$db->query("DELETE FROM {$pre}comment WHERE cid='$rsdb[cid]'");
		}
		$db->query("UPDATE {$pre}article$erp SET comments=comments-1 WHERE aid='$rsdb[aid]'");
	}
	refreshto("$FROMURL","删除成功",0);
}

其中 $cidDB 这个变量本应该是从URL里面通过get方式获取的留言的id ,然后拼到sql语句里面执行sql的。

但是因为 comment.php引用了common.inc.php,并且$cidDB并没有初始化,所以这边我们可以用 $_Files里面的变量去直接给 $cidDB 赋值,并且没有转义。

poc:

其实算不上poc,就是一个简单的利用方式。

写一个简单的html页面:

action里面写网站相关地址

然后我们重命名一个文件,名为:1' union select version() and '1'='1

然后提交上传,就可以看到返回结果了:





这边有个比较麻烦的问题是: 由于value值保存在了两个sql语句里面,这两个语句的列不一样,所以这边用union会报错,只能盲注了。或者寻找一下其他地方的未初始化的变量也可。

  • 大小: 55.3 KB
  • 大小: 26.1 KB
  • 查看图片附件

以上就介绍了齐博CMS的sql注入漏洞学习,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

人气教程排行