码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2015-03-20 15:49:03      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:

目录

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

 

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

标签:

原文地址:http://www.cnblogs.com/LittleHann/p/4353611.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!