zoukankan      html  css  js  c++  java
  • duxcms SQL Injection In /admin/module/loginMod.class.php

    目录

    1. 漏洞描述
    2. 漏洞触发条件
    3. 漏洞影响范围
    4. 漏洞代码分析
    5. 防御方法
    6. 攻防思考

    1. 漏洞描述

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

    Relevant Link:

    http://www.wooyun.org/bugs/wooyun-2010-063055


    2. 漏洞触发条件

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


    3. 漏洞影响范围
    4. 漏洞代码分析

    /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);        
    }


    5. 防御方法

    /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);        
    }


    6. 攻防思考

    Copyright (c) 2014 LittleHann All rights reserved

  • 相关阅读:
    Channel
    MemCache
    算法笔记_124:密码脱落(Java)
    算法笔记_123:蓝桥杯第七届省赛(Java语言B组部分习题)试题解答
    算法笔记_122:蓝桥杯第七届省赛(Java语言A组)试题解答
    算法笔记_121:蓝桥杯第六届省赛(Java语言C组部分习题)试题解答
    算法笔记_120:蓝桥杯第六届省赛(Java语言B组部分习题)试题解答
    算法笔记_119:蓝桥杯第六届省赛(Java语言A组)试题解答
    算法笔记_118:算法集训之结果填空题集二(Java)
    算法笔记_117:算法集训之结果填空题集一(Java)
  • 原文地址:https://www.cnblogs.com/LittleHann/p/4353611.html
Copyright © 2011-2022 走看看