欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

齐博CMS的sql注入漏洞学习

程序员文章站 2023-12-24 22:24:33
...
今天看到了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 赋值,并且没有转义。齐博CMS的sql注入漏洞学习

poc:

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

写一个简单的html页面:

action里面写网站相关地址


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

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


齐博CMS的sql注入漏洞学习


齐博CMS的sql注入漏洞学习

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

  • 齐博CMS的sql注入漏洞学习
  • 大小: 55.3 KB
  • 齐博CMS的sql注入漏洞学习
  • 大小: 26.1 KB
  • 查看图片附件

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

上一篇:

下一篇: