weiphp /Application/Admin/Controller/PublicController.class.php Login SQL Injection Vul

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了weiphp /Application/Admin/Controller/PublicController.class.php Login SQL Injection Vul相关的知识,希望对你有一定的参考价值。

catalogue

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

 

1. 漏洞描述

Relevant Link:

http://www.wooyun.org/bugs/wooyun-2016-0190216


2. 漏洞触发条件

0x1: POC

http://demo.weiphp.cn/index.php?s=/Admin/Public/login.html
post:
username[0]=admin&username[1]=xxx*&password=123

技术分享


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

/Application/Admin/Controller/PublicController.class.php

public function login($username = null, $password = null, $verify = null){
    /* 读取数据库中的配置 */
    $config    =    S(DB_CONFIG_DATA);
    if(!$config){
        $config    =    D(Config)->lists();
        S(DB_CONFIG_DATA,$config);
    }
    C($config); //添加配置
    
    //这里进行了验证码验证,但是如果黑客通过HTTP抓取动态获取验证码,则可突破这层防御
    if(IS_POST){ 
        /* 检测验证码 TODO: */
        if(C(WEB_SITE_VERIFY) && !check_verify($verify)){
        $this->error(验证码输入错误!);
    }

    /* 登录用户 */
    $User = D(Common/User); 
    //未对$username, $password进行任何输入过滤,导致SQL注入
    if($User->login($username, $password, admin_login)){ //登录用户
    ..


5. 防御方法

/Application/Admin/Controller/PublicController.class.php

public function login($username = null, $password = null, $verify = null){
        /* 读取数据库中的配置 */
        $config    =    S(DB_CONFIG_DATA);
        if(!$config){
            $config    =    D(Config)->lists();
            S(DB_CONFIG_DATA,$config);
        }
        C($config); //添加配置
                
        if(IS_POST){ 
            /* 检测验证码 TODO: */
            if(C(WEB_SITE_VERIFY) && !check_verify($verify)){
                //$this->error(‘验证码输入错误!‘);
            }

            /* 登录用户 */
            $User = D(Common/User);
            /* sql inject protect */
            $username = mysql_real_escape_string($username); 
            $password = mysql_real_escape_string($password);
            /**/
            if($User->login($username, $password, admin_login)){ //登录用户


6. 攻防思考

Copyright (c) 2016 LittleHann All rights reserved

 

以上是关于weiphp /Application/Admin/Controller/PublicController.class.php Login SQL Injection Vul的主要内容,如果未能解决你的问题,请参考以下文章

如何在linux下通过weiphp开发微信?Linux下如何安装weiphp??

再谈Weiphp公众平台开发——1增加插件

ngnix对weiphp(thinkphp)中pathinfo的支持

再谈Weiphp公众平台开发——1成语接龙插件

weiphp中常用方法总结

[代码审计]Weiphp5.0 前台文件任意读取分析