漏洞概要
关注数(24)
关注此漏洞
漏洞标题:CmsEasy多出任意文件删除到Getshell
提交时间:2014-07-07 20:10
修复时间:2014-10-05 20:12
公开时间:2014-10-05 20:12
漏洞类型:非授权访问/权限绕过
危害等级:高
自评Rank:20
漏洞状态:厂商已经确认
Tags标签:
无
漏洞详情
披露状态:
2014-07-07: 细节已通知厂商并且等待厂商处理中
2014-07-07: 厂商已经确认,细节仅向厂商公开
2014-07-10: 细节向第三方安全合作伙伴开放
2014-08-31: 细节向核心白帽子及相关领域专家公开
2014-09-10: 细节向普通白帽子公开
2014-09-20: 细节向实习白帽子公开
2014-10-05: 细节向公众公开
简要描述:
CmsEasy多出任意文件删除,可直接删除waf,Getshell so Easy !
详细说明:
CmsEasy在后台权限验证存在缺陷,导致登陆绕过,以及越权操作后台。
1、在后台登陆验证时存在缺陷,导致随意登陆绕过
2、在进行后台功能操作时,验证不全,存在缺陷,导致越权操作
3、通过上面的问题任意用户,包括非登录用户即可操作后台,危害较大!
来看看登陆这里的验证:
lib/admin/admin.php文件
主要看这里:
如果gethostbyname($_SERVER['SERVER_NAME'])==front::ip()并且front::get('ishtml')==1,就会return
这样正好跳过了下面的check_admin,导致登陆绕过了
例如我们在访问后台时:
http://localhost/CmsEasy_5.5_UTF-8_20140605/index.php?case=config&act=system&set=site&admin_dir=admin&site=default&ishtml=1
然后在访问时拦截包设置header中:X-Forwarded-For: 127.0.0.1,然后访问
这样即可访问到后台:
当然在后台进行后台功能操作时,也存在权限和登陆验证的:
但是也有存在漏掉的地方,如下面我们要讲的任意文件删除漏洞!
附找出全部问题点的技巧!
漏洞证明:
后台搜索unlink,也就是在/lib/admin/目录下搜索:
这里一共找出6处可能存在任意文件删除的漏洞。
/file_admin.php中找到两处!
/image_admin.php一处
/table_admin.php一处
/website_admin.php两处。
但是/image_admin.php,/table_admin.php,/website_admin.php在删除文件时使用了chkpw函数,进行判断,所以这三个函数不存在漏洞。。。
我们来看看第一和第二处:file_admin.php文件
首先看看这里的初始化函数中以及操作函数中,都没有判断权限及登陆验证
未验证chkpw,导致了越权操作。
来看看delfile_action函数:
这里直接删除了网站根目录下的文件:
没有经过任何过滤处理,导致任意文件删除。
首先来看看网站根目录下的robots.txt文件是存在的
然后我们来构造删除:
链接:http://localhost/CmsEasy_5.5_UTF-8_20140605/index.php?case=file&act=delfile&admin_dir=admin&site=default&UD=1&dfile=robots.txt&ishtml=1
header:X-Forwarded-For: 127.0.0.1
现在网站根目录下的robots.txt文件已经被删除了:
这里可直接服务器上任意文件,没有任何限制
可以直接删除waf文件:
http://localhost/CmsEasy_5.5_UTF-8_20140605/index.php?case=file&act=delfile&admin_dir=admin&site=default&UD=1&dfile=webscan360/360safe/360webscan.php&ishtml=1
http://localhost/CmsEasy_5.5_UTF-8_20140605/index.php?case=file&act=delfile&admin_dir=admin&site=default&UD=1&dfile=webscan360/360safe/360scan.php&ishtml=1
设置header:X-Forwarded-For: 127.0.0.1
至于/file_admin.php中的第二处文件是一样的方法,不在分析了。
================================================================================
删除waf后,就可以干其他很多事情了。。。
下面我们来看看删除waf后,Getshell!
文件/lib/admin/language_admin.php:
初始化函数和add_action函数大都未进行登录及权限验证,导致越权操作
这里先$content=file_get_contents($path);
然后再$content=str_replace(');',$replace.');',$content);
最后再file_put_contents($tipspath,$tipscontent);
前面我们已经删除了waf,这样我们可以post任意内容到content了
发送请求:
然后,看看/lang/cn/system.php:
修复方案:
漏洞回应
厂商回应:
危害等级:中
漏洞Rank:10
确认时间:2014-07-07 23:58
厂商回复:
感谢,立即更新
最新状态:
暂无