您好,欢迎访问一九零五行业门户网

齐博CMS的sql注入漏洞学习

今天看到了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教程有兴趣的朋友有所帮助。
其它类似信息

推荐信息