dedecms-mile米乐体育

      因为是最新的dedecms版本,因此我们直接在织梦米乐app官网登录官网上下载即可~       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", "\\r",$adbody);       $adbody = str_replace("\n", "\\n",$adbody);       $adbody = "\r\n";       $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静态文件,,因此没有可利用点,,还是找下文件吧,,   www\uploads\data\cache\myad-3.html       如果是动态文件,,因此我们也可以利用前后闭合来实现任意代码,,扯远了。。   总结来说其实就是$adbody = “\r\n”; 这段代码出的问题   下面我们来构造参数进行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

展开全文
内容来源于互联网和用户投稿,文章中一旦含有米乐app官网登录的联系方式务必识别真假,本站仅做信息展示不承担任何相关责任,如有侵权或涉及法律问题请联系米乐app官网登录删除

最新文章

网站地图