国庆大礼包.
国庆闲来无事,下载jeecms源码来看了下,没想到捡了个漏。
0x1 漏洞分析
com/jeecms/cms/action/member/ImageUploadAct.java,上传请求URL:/member/o_upload_image.jspx
0x02 绕过检查:
文件头可使用GIF89a绕过,后缀检查部分:
看代码使用**.**.**.**.FilenameUtils.getExtension获取后缀,跟进getExtension方法,发现调用indexOfExtension
fileRepository.storeByFilename最终调用**.**.**.**.FileUtils.copyFile导致截断,与php copy函数类似,截断貌似发生在系统层面
同样存在问题的还有一处:com/jeecms/cms/action/member/ContributeAct.java,上传请求URL:/member/o_upload_media.jspx
![JEECMSJEEBBSJSPGOU 前台getshell(高危)]()
此处可利用截断上传任意文件.
JSPGOU也存在相同问题:
![JEECMSJEEBBSJSPGOU 前台getshell(高危)]()
(以**.**.**.**为例)
tips:由于jsp、jspx后缀都被web.xml中的配置过滤了,即便上传jsp也不能解析,官网使用tomcat容器,项目部署在webapps/ROOT下
所以只能利用上传跳到上一级目录,也就是webapps下,这样jsp才能成功解析,上传过程会自动创建目录,方便快捷.
注册用户,上传头像抓包
![JEECMSJEEBBSJSPGOU 前台getshell(高危)]()
![JEECMSJEEBBSJSPGOU 前台getshell(高危)]()
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建站系统,政府机构、学校、企业,用户众多,此次漏洞该算是通杀的了,只要开放用户注册,基本就沦陷了.
评论