985544089 发表于 2015-2-7 17:00:53

【严重】kangle的重大BUG!直接导致用户可以跨站篡改!

本帖最后由 985544089 于 2015-2-10 07:32 编辑

昨天我的一个用户向我炫耀:
“我怎么用KODExplorer在线文件管理器可以进入你的C盘?”“而且还想删就删东西,想加就加,爽死了!”

我二话不说就去检查我的服务器权限,发现那位用户的目录权限只有”SYSTEM"和"a1302”还有“Administrators”这几个用户。

我就在想:“不可能啊,那位用户的权限用户不就是”a1302“吗?他应该只能管理他自己的文件夹啊?”

接着,我又向上几级文件夹返回,然后我右键打开C盘的目录权限发现只有”SYSTEM"和“Administrators”还有“Users”

“这C盘又没有Kangle创建的用户,他们用户应该不能直接访问C盘根目录啊?莫非:“Usere”就已经包括并控制了Kangle所有用户在C盘的权限?


紧接着我尝试把“Usere”这个用户从C盘目录权限中删除掉,然后也去下载一个文件管理器试了试,发现竟然真的访问不了,但是连用户本身的目录也访问不了了。

所以我又开始在C盘里的目录寻找答案。

当我把“home”目录右键打开看到它那里和C盘一样也是只有”SYSTEM"和“Administrators”还有“Users”这几个用户。

紧接着,我又打开“ftp”目录的权限列表,发现它那里不仅有”SYSTEM"和“Administrators”和“Users”而且还有一个“Kangle”用户。

为了测试这个”Kangle“用户的权限,我在”ftp“目录创建了一个“yes32”文件夹,然后把C盘的“Usere”用户权限按原样添加了回去,然后打开文件管理器,进入到“ftp”这层目录,进行删除“yes32”目录,让我意想不到的是,它既然提醒:“删除失败!”由此可以推算出“Kangle”用户的权限和其他的Kangle软件创建的用户的权限是一样的,都是和“Usere”一样的权限。


为了找到答案,我继续往里深入研究,发现那个根据用户空间的开通字母分类的文件夹们全部都是和“ftp”目录一样有”SYSTEM"和“Administrators”和“Users”和“Kangle”用户的。

为了寻找更准确的答案,我随便选了一个根据用户空间的开通字母分类的文件夹“a”,我把它的目录权限里的"Users"用户给改为只能读取。

然后再次打开文件管理器(我的空间名字是“admin”,所以网站目录也是在“a”目录里),返回上一级目录,我发现虽然可以访问到“a“目录里其他的目录,但是再往“a”上级就不行了,而且我尝试删除“a”目录其他的目录,发现也是提示“删除失败!”,由此可以证明“Usere”用户确实是包括并且控制了Kangle软件创建的所有用户。


因此,我直接推算出答案:其实只要把单个的用户空间的目录权限(不是开头字母分类目录)给添加一个“Usere”用户并把所有权限选项打上勾,就能实现用户不仅可以完全控制自己的跟目录,而且还不会出现跨站跨目录的现象了。

但是,现在让我最头痛的是:【假如一个使用kangle软件的idc商开通了1万个用户空间,那么他们难道要一个一个目录改个1万下??】

为此,我想对Kangle的开发人员强烈提建议:”请把开头字母分类目录这种方式给改掉,改成直接把用户的空间目录放在”ftp“目录即可,这样就能方便idc商们设置目录权限,只需把”ftp“目录设置一下,它就能自动同步到”ftp“下的子目录,相当于整个服务器的空间目录。“

好了,我的话到此结束,我打了这篇文章花了1个小时的时间,只希望kangle能改进一下产品,不想再看到出现这种低级而又严重的问题。
-------------------------------------------------

但是,上面只是以目录权限所使用的解决方法,这是愚蠢的。

最好的解决方法:
就是使用open_basedir来解决。

open_basedir的具体操作非常简单,只需一步:
在kangle安装目录下的ext/php52 内找到并打开php.ini文件。
把其中的open_basedir语句打开,写成如下样式:
open_basedir = "c:\windows\temp;${doc_root}"
把前面的“;”去掉即可。

注意:
使用open_basedir必须确保kangle“管理后台->扩展->api扩展”内php使用默认设置为"独立进程"。

还有建议各位站长把

disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,show_source;

也给开启了,其实也是把前面的“;”去掉。

在此感谢“云乐网”站长,为我们带来了新的有效解决方法。

另外,建议Kangle要注重这个问题,把这种安全漏洞的帖子让所有的站长都知道都懂的使用。

谢谢Kangle!
-------------------------------------------------

idc.yes32.com

云乐网 发表于 2015-2-10 01:22:57

本帖最后由 云乐网 于 2015-2-10 01:30 编辑

貌似我没出现你说的问题,只是你设置权限问题而已,还有php的安全问题你自己没设置而已,php.ini设置open_basedir开启就不会出现你所说的问题 ,别一味说康乐问题,自己认真排查清楚再来说吧。自己对服务器安全设置意识低。下面告诉你把这个也开启,预防你被黑
disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,show_source;

zhoumo310 发表于 2015-4-20 21:36:31

谢谢分享,已收藏

284949127 发表于 2016-4-1 15:33:25

没有用.

open_basedir = "c:\windows\temp;${doc_root}"
这行没有用.我用的PHP5.2
这行导致无法运行php
页: [1]
查看完整版本: 【严重】kangle的重大BUG!直接导致用户可以跨站篡改!