• 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

  • 相关阅读:
    论文笔记之:Speed Up Tracking by Ignoring Features
    深度学习中常见的几个基础概念
    (转)The AlphaGo Replication Wiki
    论文笔记之:Co-saliency Detection via A Self-paced Multiple-instance Learning Framework
    (转)CVPR 2016 Visual Tracking Paper Review
    论文笔记之:Generative Adversarial Text to Image Synthesis
    论文笔记之:Conditional Generative Adversarial Nets
    论文笔记之:Progressive Neural Network Google DeepMind
    (转)Let’s make a DQN 系列
    论文阅读之:Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network
  • 原文地址:https://www.cnblogs.com/LittleHann/p/4353611.html
Copyright © 2020-2023  润新知