1,暴力破解。
ucserver的默认管理员登录需要输入验证码,并且还有登录次数的限制,但是在:
/control/app.php 内是没有限制登录的次数的
只要登录的密码符合,就可以添加一个客户端连接到ucserver并且分配一个uckey和数据库信息。
2,已知客户端的uckey的情况下,对ucserver进行SQL注射
代码在:
/control/mail.php 中
$mail['uids'] = explode(',', $this->input('uids'));
这句代码中的$mail['uids']最后进到了SQL语句里,相应的代码在:
model/mail.php里有:
$mail['email_to']被拼到$uids里最后导致了SQL注射。
3,信息泄漏,泄漏ucserver内的客户端应用和相应版本
代码在:
control/app.php 内
所以只要$this->init_input();能正确运行,那么就会抛出ucserver里面的应用和相应的版本号。
正好上传头像的api是存在$this->input()所需要的信息的,我们拿官方做个实验。
登录后访问:
http://www.discuz.net/home.php?mod=spacecp&ac=avatar
获得
抠出我们要的东西
拼一下,得到:
http://uc.discuz.net/index.php?m=app&a=ls&inajax=1&appid=13&input=2b310Oraxl%2BiVL8yXhYy7pJ5DkQOPHYLt2FRsTEIyOD3PMtxkbn%2FDKkzssQgMWYlBirpQPsYOuN4vT9J5mZF7V6Q%2BRD3A8GK9uBTSj8%2FCEOGkPH959sDeep%2FiFag6X8&agent=569b93c7d7e18a505d671ba495198a3a&ucapi=uc.discuz.net&avatartype=virtual&uploadSize=2048
访问得到: