Dedecms_V5.7 getshell 利用后台文件上传功能漏洞
虽然是复现文章,不过会更详细地来阐释这个漏洞,,因为现在后台getshell花样层出不穷,因此想要复现一波来学习一波getshell姿势~
因为是最新的dedecms版本,因此我们直接在织梦官网上下载即可~
http://www.zuola.net/products/dedecms/downloads/
DedeCMS V5.7 SP2正式版
发布日期: 2017-04-05
这里我测试的是utf-8版本,,感觉版本这个无所谓~
下载下来然后安装什么的就不说了,,直接进后台,找到漏洞功能以及对应的功能函数
漏洞在”模块”下的”广告管理”处,这里我们点击“添加一个新广告”
跟原文复现的有一点不一样,,不过不影响,,下面我们来抓包看看参数
我们的参数在normbody里,文件为dede/ad_add.php
$query = " INSERT INTO zuola.net_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文件调用了这个广告代码,但是点击我们的广告代码就出现了地址。
$cacheFile = DEDEDATA.'/cache/myad-'.$aid.'.htm'; if( isset($nocache) || !file_exists($cacheFile) || time() - filemtime($cacheFile) > $cfg_puccache_time ) { $row = $dsql->GetOne("SELECT * FROM `zuola.net_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", |