漏洞概要
关注数(24)
关注此漏洞
漏洞标题:JEECMS|JEEBBS|JSPGOU 前台getshell(高危)
提交时间:2014-10-04 18:15
修复时间:2015-01-02 18:16
公开时间:2015-01-02 18:16
漏洞类型:文件上传导致任意代码执行
危害等级:高
自评Rank:20
漏洞状态:厂商已经确认
Tags标签:
无
漏洞详情
披露状态:
2014-10-04: 细节已通知厂商并且等待厂商处理中
2014-10-09: 厂商已经确认,细节仅向厂商公开
2014-10-12: 细节向第三方安全合作伙伴开放
2014-12-03: 细节向核心白帽子及相关领域专家公开
2014-12-13: 细节向普通白帽子公开
2014-12-23: 细节向实习白帽子公开
2015-01-02: 细节向公众公开
简要描述:
国庆大礼包.
详细说明:
国庆闲来无事,下载jeecms源码来看了下,没想到捡了个漏。
0x1 漏洞分析
com\jeecms\cms\action\member\ImageUploadAct.java,上传请求URL:/member/o_upload_image.jspx
0x02 绕过检查:
文件头可使用GIF89a绕过,后缀检查部分:
看代码使用org.apache.commons.io.FilenameUtils.getExtension获取后缀,跟进getExtension方法,发现调用indexOfExtension
fileRepository.storeByFilename最终调用org.apache.commons.io.FileUtils.copyFile导致截断,与php copy函数类似,截断貌似发生在系统层面
同样存在问题的还有一处:com\jeecms\cms\action\member\ContributeAct.java,上传请求URL:/member/o_upload_media.jspx
此处可利用截断上传任意文件.
JSPGOU也存在相同问题:
漏洞证明:
(以bbs.jeecms.com为例)
tips:由于jsp、jspx后缀都被web.xml中的配置过滤了,即便上传jsp也不能解析,官网使用tomcat容器,项目部署在webapps/ROOT下
所以只能利用上传跳到上一级目录,也就是webapps下,这样jsp才能成功解析,上传过程会自动创建目录,方便快捷.
注册用户,上传头像抓包
PS:除此之外,还可以上传web.xml覆盖,或是上传class覆盖,因为可能需要重启web容器,暂不采用.各位大神还有什么猥琐的利用方式,烦请告之.
总结:
jeecms、jeebbs :
/member/o_upload_media.jspx (低版本的没有)
/member/o_upload_image.jspx
后台:
/common/o_upload_image.do
/content/o_upload_media.do
/plug/o_upload.do
涉及文件:
com\jeecms\cms\action\member\ContributeAct.java
com\jeecms\cms\action\member\ImageUploadAct.java
com\jeecms\cms\action\admin\ImageUploadAct.java
com\jeecms\cms\action\admin\main\ContentAct.java
com\jeecms\cms\action\admin\assist\PlugAct.java
jeegou:
/member/common/o_upload_image.jspx
下载旧版本的jeecms源码看,发现com\jeecms\cms\action\member\ImageUploadAct.java很早就有了,意味着这个洞有一段时间了.
jeecms在国内算是比较流行的java建站系统,政府机构、学校、企业,用户众多,此次漏洞该算是通杀的了,只要开放用户注册,基本就沦陷了.
修复方案:
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:15
确认时间:2014-10-09 10:36
厂商回复:
感谢对jeecms系列软件提出的bug,我们会以最快的速度修复
最新状态:
暂无
漏洞评价:
评论
-
2014-10-04 18:25 |
雷锋 ( 路人 | Rank:12 漏洞数:2 | 承接:钻井,架工,木工,电工,水暖工,力...)
-
2014-10-04 19:09 |
MuZhU0 ( 路人 | Rank:6 漏洞数:4 )
-
2014-10-04 19:16 |
scanf ( 核心白帽子 | Rank:1232 漏洞数:186 | 。)
-
2014-10-04 20:41 |
U神 ( 核心白帽子 | Rank:1285 漏洞数:142 | 感谢乌云,知恩不忘,其实我一直都在乌云默...)
-
2014-10-04 22:15 |
郭斯特 ( 普通白帽子 | Rank:181 漏洞数:69 | GhostWin)
-
2014-10-04 22:22 |
scanf ( 核心白帽子 | Rank:1232 漏洞数:186 | 。)
-
2014-10-04 22:43 |
天朝城管 ( 普通白帽子 | Rank:116 漏洞数:35 | 不要等到命玩你的时候才开始玩命)
-
2014-10-08 20:38 |
贫道来自河北 ( 普通白帽子 | Rank:1395 漏洞数:423 | 一个立志要把乌云集市变成零食店的男人)
-
2014-10-08 22:23 |
loopx9 ( 核心白帽子 | Rank:602 漏洞数:62 | ..)
@贫道来自河北 都发邮件给他们了,看来是忽略的节奏
-
2014-10-08 23:10 |
贫道来自河北 ( 普通白帽子 | Rank:1395 漏洞数:423 | 一个立志要把乌云集市变成零食店的男人)
@loopx9 这尼玛的厂商,上次发给他们邮件,居然还威胁我要我小心点
-
2014-10-09 00:16 |
郭斯特 ( 普通白帽子 | Rank:181 漏洞数:69 | GhostWin)
-
2014-10-09 11:34 |
铁蛋火车侠 ( 普通白帽子 | Rank:156 漏洞数:31 | Q群371620085 技术交流群 有漂亮妹纸!)
-
2014-10-09 12:20 |
loopx9 ( 核心白帽子 | Rank:602 漏洞数:62 | ..)
-
2014-10-24 09:46 |
′ 雨。 ( 普通白帽子 | Rank:1231 漏洞数:190 | Only Code Never Lie To Me.)
@loopx9 我发现你的洞都没选择通用吧。。 是自己选择的。
-
2014-10-24 09:47 |
′ 雨。 ( 普通白帽子 | Rank:1231 漏洞数:190 | Only Code Never Lie To Me.)
-
2014-10-24 09:49 |
loopx9 ( 核心白帽子 | Rank:602 漏洞数:62 | ..)
-
2014-10-24 10:17 |
′ 雨。 ( 普通白帽子 | Rank:1231 漏洞数:190 | Only Code Never Lie To Me.)
-
2015-03-10 09:42 |
YiYang ( 路人 | Rank:4 漏洞数:1 | 又多了一个兴趣爱好。)
@loopx9 按这个操作 返回提示 alert('Unexpected block type 69!')是补洞了吗
-
2015-09-05 15:44 |
icysun ( 实习白帽子 | Rank:31 漏洞数:6 | 求围观)
@loopx9 我用eclipse debug 什么都对 就是到最后进copy方法 Invalid file path 就报着个异常了,对比了几个版本,楼主这种,,臣妾做不到。对了 如果 在filename传入时 我手动干预 点击 vlues 获取下,他倒是被截断了,求指点。
-
2015-09-05 19:06 |
loopx9 ( 核心白帽子 | Rank:602 漏洞数:62 | ..)
@icysun jdk7以后版本已经不能null截断了,路径包含\0直接抛出异常。测试截断的话用1.6版本试试。 (可查看java.io.File类 isInvalid 方法)
-
2015-09-05 21:15 |
icysun ( 实习白帽子 | Rank:31 漏洞数:6 | 求围观)
@loopx9 谢大神,就是此原因,我用的1.8。不过eclipse debug有个很有意思的地方误导我很久。就是 变量截取窗口,手动戳filename下,1.8也会截断,不戳不灵,挺有意思。