Mallbuilder lostpass.php 文件 userid 参数SQL注入漏洞

2016-03-16T00:00:00
ID SSV:91049
Type seebug
Reporter hhxx
Modified 2016-03-16T00:00:00

Description

0x01 漏洞概述

相关厂商: 上海远丰信息科技有限公司

官方主页: shop-builder.cn

提交时间: 2014-06-03

公开时间: 2014-09-01

漏洞类型: SQL注射漏洞

谷歌关键字: powered by mallbuilder

0x02 漏洞详情

首先来看看全局文件

``` function magic()

{

if(!get_magic_quotes_gpc()&&isset($_POST))

{

    foreach($_POST as $key=>$v)

    {

        if(!is_array($v))

            $_POST[$key]=addslashes($v);

        else

        {

            foreach($v as $skey=>$sv)

            {

                if(!is_array($sv))

                    $_POST[$key][$skey]=addslashes($sv);

                else

                {

                    if($sssv)

                    {

                        foreach($sv as $sskey=>$ssv)

                        {

                            if(!is_array($ssv))

                                $_POST[$key][$skey][$sskey]=addslashes($ssv);

                            else

                            {

                                if($sssv)

                                {

                                    foreach($ssv as $ssskey=>$sssv)

                                    {

                                        if(!is_array($sssv))

                                            $_POST[$key][$skey][$sskey][$ssskey]=addslashes($sssv);

                                        else

                                        {

                                            if($sssv)

                                            {

                                                foreach($sssv as $sssskey=>$ssssv)

                                                {

                                                    $_POST[$key][$skey][$sskey][$ssskey][$sssskey]=addslashes($ssssv);

                                                }

                                            }

                                        }

                                    }

```

只对post进行了addslashes 没有对GET 等其他的进行addslashes

但是对GET有一个小过滤。

``` if(inject_check(implode('',$_GET)))

{

    die('Invalid URL !');

}

```

``` function inject_check($sql)

{

return preg_match("/^select|insert|delete|\.\.\/|\.\/|union|into|load_file|outfile/", $sql);// 进行过滤

} ```

这里匹配到了就退出 但是他这里没有开启/i 修正符

所以大小写就可以绕过了。

绕过了这里 GET的注入点就是一大堆了。

利用方式:

http://.../mallbuilder/lostpass.php?md5=aa&userid=aa'

0x03 修复方案

1、过滤漏洞文件参数

2、使用加速乐等防护产品