首页>>SEO培训>Dedecms_V5.7 getshell 利用后台文件上传功能漏洞

Dedecms_V5.7 getshell 利用后台文件上传功能漏洞

admin SEO培训 2019-11-28 145

      因为是最新的dedecms版本,因此我们直接在织梦官网上下载即可~       http://www.dedecms.com/products/dedecms/downloads/       DedeCMS V5.7 SP2正式版       发布日期: 2017-04-05       这里我测试的是utf-8版本,,感觉版本这个无所谓~       下载下来然后安装什么的就不说了,,直接进后台,找到漏洞功能以及对应的功能函数       Dedecms_V5.7 根据文件上传功能来getshell   漏洞在”模块”下的”广告管理”处,这里我们点击“添加一个新广告”   Dedecms_V5.7 根据文件上传功能来getshell           跟原文复现的有一点不一样,,不过不影响,,下面我们来抓包看看参数       Dedecms_V5.7 根据文件上传功能来getshell           我们的参数在normbody里,文件为dede/ad_add.php        $query = "        INSERT INTO dede58_myad(clsid,typeid,tagname,adname,timeset,starttime,endtime,normbody,expbody)        VALUES('$clsid','$typeid','$tagname','$adname','$timeset','$starttime','$endtime','$normbody','$expbody');       ";       $dsql->ExecuteNoneQuery($query);       ShowMsg("成功增加一个广告!","ad_main.php");       exit();   在这里我们看到了我们的代码已经插入到了数据库,,一般的思路应该是找哪些php文件调用了这个广告代码,但是点击我们的广告代码就出现了地址。   Dedecms_V5.7 根据文件上传功能来getshell   $cacheFile = DEDEDATA.'/cache/myad-'.$aid.'.htm';   if( isset($nocache) || !file_exists($cacheFile) || time() - filemtime($cacheFile) > $cfg_puccache_time )   {       $row = $dsql->GetOne("SELECT * FROM `dede58_myad` WHERE aid='$aid' ");       $adbody = '';       if($row['timeset']==0)       {           $adbody = $row['normbody'];       }       else       {           $ntime = time();           if($ntime > $row['endtime'] || $ntime < $row['starttime']) {               $adbody = $row['expbody'];           } else {               $adbody = $row['normbody'];           }       }       $adbody = str_replace('"', '"',$adbody);       $adbody = str_replace(" ", "\r",$adbody);       $adbody = str_replace(" ", "\n",$adbody);       $adbody = " ";       $fp = fopen($cacheFile, 'w');       fwrite($fp, $adbody);       fclose($fp);   }   include $cacheFile;       这里首先是三个判断条件,nocache不为空,cachefile不为空,这些判断条件我们都可以通过GET或者POST来提交,从而进行伪造~       进入判断条件后往下走,首先是从数据库中select aid,那么这时候我们到数据库中去看看:               这里当时在填写广告信息的时候,设置的timeset为0,因此也就直接令$adbody = $row[‘normbody’];   而这里的normbody也就是我们的evil code,下面我们就应该重点看这个adbody参数   首先进行三个replace,这里的replace好像对我们的参数没有影响,因此直接跳过~   接着将adbody参数插入到document.write()代码中,这里如果做过ctf的人都应该有一种感觉,那就是参数闭合的话,将会造成任意代码执行,这里也就是漏洞的成因所在!   最后打开cachefile,将adbody写入到文件中~   这里由于这个文件是html静态文件,,因此没有可利用点,,还是找下文件吧,,   WWWuploadsdatacachemyad-3.html       如果是动态文件,,因此我们也可以利用前后闭合来实现任意代码,,扯远了。。   总结来说其实就是$adbody = “ ”; 这段代码出的问题   下面我们来构造参数进行poc验证~   首先是访问给的广告链接   Dedecms_V5.7 getshell 利用后台文件上传功能漏洞       这里我还没输入参数,,下面输入参数逐步进行循环~   其实也就是两个判断条件和一个代码的执行~   Dedecms_V5.7 getshell 利用后台文件上传功能漏洞   这里url不用说,,就是给的广告链接,,其中GET了aid参数,,因此我们只要加上nocache参数,来实现isset($nocache),至于!file_exists($cacheFile)这个刚才文件都找到了,,肯定存在的。。   最后就是就是代码执行,,这里一开始有强迫症,我一定要闭合参数!(下面就是闭合问题的一个尝试)   这里一开始很不解,,这出现的是啥?   "); -->   这是源码,,我们插入了–>这段,,但是双引号没闭合啊!也就是页面语句实际成了下面这样   "); -->   因此也就出现了上面的情况,,这里不太理解,,这样不闭合竟然可以。。       但是我有强迫症。。       Dedecms_V5.7 getshell 利用后台文件上传功能漏洞       最后强行闭合。。虽然对结果没影响。。       上述如有不当之处,敬请指出~       本文地址:https://www.dede58.com/dedecms_aq/1617.html

标签:
友情链接: 建筑设计 实木家具 币游集团 服装设计 卡通服装 尼龙水煮箱 尼龙调湿改性技术 合肥市基督教堂 通化药业 真空干燥机 论文之友 源码共享 沙滩纱巾 DTDT营养膳食食品 千斤顶 小型挖掘机 家具公司 环保产品 一派作文 松木板材 咨询公司 粘度计 建筑门窗 地脚螺栓 二手汽车销售 绿百生物科技 润滑油 轮胎专卖 螺旋钢管 腋臭专科 二手车专卖 升降机 彩钢瓦房 电机设备 电化学工作站 拉丝机 美容整形 制衣公司 岩棉板 茶叶专卖 汽配厂 交通学院论坛 汽车零配件 饲料添加剂 货运物流 网店代运营 环保设备 保温管 食品公司 精密机械 钢纤维 方矩管 湿热箱 贸易公司 制冷设备 免费建站 服装公司 膜结构工程 建材 装修工程 道路护栏 真空镀膜设备