Dedecms_V5.7 getshell 使用后台文件上传功效毛病

虽然是复现文章,不外会更详细地来阐释这个毛病,,由于现在后台getshell名堂层出不穷,因此想要复现一波来学习一波getshell姿势~

由于是最新的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 xiuzhanwang_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 `xiuzhanwang_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,那么这时间我们到数据库中去看看:

Dedecms_V5.7 getshell 使用后台文件上传功效毛病4

这里其时在填写广告信息的时间,设置的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

Dedecms_V5.7 getshell 使用后台文件上传功效毛病5

若是是动态文件,,因此我们也可以使用前后闭合来实现恣意代码,,扯远了。。

总结来说实在就是$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 利用后台文件上传功能漏洞

最后强行闭合。。虽然对效果没影响。。

上述若有不妥之处,敬请指出~

①本站所有织梦模板资源均来自用户分享和网络收集,如果侵犯了您的权益,请联系网站客服处理
②本站提供的织梦源码,均带数据及演示地址。可以在任一源码详情页查看演示地址。
③由于博主时间紧缺,所有模板源码不提供技术支持。仅部分收费原创源码提供售后
④如遇模板源码下载链接打不开或者有错误,请联系网站客服QQ指出纠正。
人民币与金币汇率为1比1,即1元=1金币
织梦楼 » Dedecms_V5.7 getshell 使用后台文件上传功效毛病

发表回复

加入织梦楼永久VIP 海量资源免费下载

目前为止共有 3653 位会员加入