您的位置:首页 > 博客中心 > 数据库 >

duxcms SQL Injection In /admin/module/loginMod.class.php

时间:2022-03-14 07:04

目录

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

 

本类排行

今日推荐

热门手游