您没有来错地!为了更好的发展,黑基网已于9月19日正式更名为【安基网】,域名更换为www.safebase.cn,请卸载旧的APP并安装新的APP,给您带来不便,敬请理解!谢谢

黑基Web安全攻防班
安基网 首页 IT技术 安全攻防 查看内容

DreamArticle 3.0 后台验证逻辑漏洞和注入漏洞

2009-5-23 11:15| 投稿: security

摘要: Team: bbs.wolvez.orgBy q1ur3n在admin/global.php 有这样一段代码,用来实现”记住密码”登录后台功能的。$administrator  &...
Team: bbs.wolvez.orgBy q1ur3n在admin/global.php 有这样一段代码,用来实现”记住密码”登录后台功能的。$administrator    = get_cookie("administrator");$adminpassword    = get_cookie("adminpassword");if ($administrator && $adminpassword) {    islogin($administrator,$adminpassword);} else {    unset($_SESSION['admincode']);    set_cookie("admincode",'',time() - 31536000);    set_cookie("adminid",'',time() - 31536000);    set_cookie("administrator", '',time() - 31536000);    set_cookie("adminpassword", '',time() - 31536000);    da_admin_login();}$admin=get_admin_info($administrator,$adminpassword);get_cookie() 在/include/common.phpfunction get_cookie($name){    global $_COOKIE,$cookieprename;    if (isset($_COOKIE[$cookieprename.$name])) {        return urldecode($_COOKIE[$cookieprename.$name]);    }    return FALSE;}可以看到用了urldecode()函数,可以用%2527引入一个单引号绕过gpcIslogin() 在admin/function.phpfunction islogin($username, $password) {    global $DreamCMS;    $_password_=$DreamCMS->db->get_var("Select `password` FROM `#DC@__members` Where `username`='{$username}'"); //查询$username的密码    if($password!=$_password_){ //数据库里的密码和提交的密码相比较,不一样就$ISDreamCMSADMIN=FALSE        $ISDreamCMSADMIN=FALSE;        if(md5(base64_encode('__DreamCMS__'.$username.'~!(*%)$!$~'.$password.'%#@)'))==DreamCMSAdmin){            $ISDreamCMSADMIN=TRUE;  //这里是实现一个超级管理员的功能的,DreamCMSAdmin定义在配置文件里。        }    }    if (empty($username)||empty($password)||$ISDreamCMSADMIN){ //逻辑错误出现了,程序员本意是,如果$username为空,或者$password为空,或者$ISDreamCMSADMIN为false就执行登出处理,可以却忘记了在$ISDreamCMSADMIN前面加上!,这样就刚好和程序员本意相反了.也就是说这里就算我们的密码不对都可以通过这个函数。        unset($_SESSION['admincode']);        set_cookie("admincode",'',time() - 31536000);        set_cookie("adminid",'',time() - 31536000);        set_cookie("administrator", '',time() - 31536000);        set_cookie("adminpassword", '',time() - 31536000);        da_admin_login();    }}看下面的$admin=get_admin_info($administrator,$adminpassword);function get_admin_info($username, $password) {    global $DreamCMS;    $admin=$DreamCMS->db->get_row("Select * FROM `#DC@__members` Where `username`='{$username}' AND password='{$password}'");    if(empty($admin)){        if(md5(base64_encode('__DreamCMS__'.$username.'~!(*%)$!$~'.$password.'%#@)'))==DreamCMSAdmin){            $admin->uid="1";        }    }    $admin->info && $admin->info=unserialize($admin->info);    return $admin;}这里就麻烦了,帐号或者密码不对就没有任何权限。别忘了,前面还有个可以绕过gpc的get_cookie()详细的利用方法和exp我就不贴出来了,自己摸索。本地测试是可以直接进后台的。可以参考这里。http://delover.net/blogview.asp?logID=78&cateID=2

小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册黑基账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!



免责声明:本文由投稿者转载自互联网,版权归原作者所有,文中所述不代表本站观点,若有侵权或转载等不当之处请联系我们处理,让我们一起为维护良好的互联网秩序而努力!联系方式见网站首页右下角。


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

最新

返回顶部